From 48dc0afe1a0c4dd9026e85fdcf294c4b766667ba Mon Sep 17 00:00:00 2001 From: Omar Oughriss Date: Mon, 20 Oct 2025 15:59:41 +0200 Subject: [PATCH] Add a member search bar --- components/4nk/Chat.tsx | 197 +++++++++++++++------------------------- 1 file changed, 71 insertions(+), 126 deletions(-) diff --git a/components/4nk/Chat.tsx b/components/4nk/Chat.tsx index f1c71f8..f6e90ee 100644 --- a/components/4nk/Chat.tsx +++ b/components/4nk/Chat.tsx @@ -41,6 +41,7 @@ export default function Chat({ heightClass = "h-[calc(100vh-8rem)]", processes, const [newMessage, setNewMessage] = useState("") const [pairingProcesses, setPairingProcesses] = useState([]) const [isLoading, setIsLoading] = useState(true) + const [searchQuery, setSearchQuery] = useState("") const searchParams = useSearchParams() const userId = searchParams.get("user") @@ -122,9 +123,9 @@ export default function Chat({ heightClass = "h-[calc(100vh-8rem)]", processes, avatar: avatar, lastMessage: "", lastMessageTime: "", - unreadCount: 0, - isOnline: true, - isTyping: false, + unreadCount: 0, + isOnline: true, + isTyping: false, pairingId: process.id } }) @@ -132,6 +133,18 @@ export default function Chat({ heightClass = "h-[calc(100vh-8rem)]", processes, const messages: any[] = [] + // Filter conversations based on search query + const filteredConversations = conversations.filter(conversation => { + if (!searchQuery.trim()) return true + + // Search by ID (process ID) + const matchesId = conversation.id.toLowerCase().includes(searchQuery.toLowerCase()) + // Search by name + const matchesName = conversation.name.toLowerCase().includes(searchQuery.toLowerCase()) + + return matchesId || matchesName + }) + const currentConversation = conversations.find((conv) => conv.id === selectedConversation) const handleSendMessage = () => { @@ -141,104 +154,25 @@ export default function Chat({ heightClass = "h-[calc(100vh-8rem)]", processes, } } - const getStatusIcon = (status: string) => { - switch (status) { - case "sent": - return - case "delivered": - return - case "read": - return - default: - return null - } - } - - const getAnalysisIcon = (analysisType: string) => { - switch (analysisType) { - case "document": - return - case "comparative": - return - case "security": - return - case "performance": - return - default: - return - } - } - - const renderAIMessage = (message: any) => { - return ( -
-
-
-
- -
-
- IA DocV - - {getAnalysisIcon(message.analysisType)} - - {message.analysisType === "document" - ? "Analyse Document" - : message.analysisType === "comparative" - ? "Analyse Comparative" - : "Analyse IA"} - - - {message.confidence && ( - - - {message.confidence}% fiable - - )} -
-
- -
-
-
{message.content}
-
-
-
-
- - Traité en {message.processingTime} -
- {message.documentName && ( -
- - {message.documentName} -
- )} -
-
- {message.timestamp} -
{getStatusIcon(message.status)}
-
-
-
-
-
- ) - } - return (
-
-

Messages

- +
+

Messages

+
+ + setSearchQuery(e.target.value)} + className="pl-10 bg-gray-50 dark:bg-gray-700 border-gray-200 dark:border-gray-600" + /> +
-
+
{isLoading ? (
Chargement des processus de pairing...
@@ -250,14 +184,14 @@ export default function Chat({ heightClass = "h-[calc(100vh-8rem)]", processes, onClick={() => setSelectedConversation(conversation.id)} className={`p-4 border-b cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700 ${ selectedConversation === conversation.id - ? "bg-blue-50 dark:bg-blue-900 border-r-2 border-blue-500 dark:border-blue-400" - : "" - }`} + ? "bg-blue-50 dark:bg-blue-900 border-r-2 border-blue-500 dark:border-blue-400" + : "" + }`} >
- {conversation.avatar} + {conversation.avatar}
{conversation.isOnline && ( @@ -275,48 +209,59 @@ export default function Chat({ heightClass = "h-[calc(100vh-8rem)]", processes,
- ))} -
+ )) + ) : ( +
+
+ +

Aucun membre trouvé

+

+ Essayez de rechercher par ID ou nom +

+
+
+ )}
+
-
- {currentConversation ? ( - <> -
-
-
-
-
- {currentConversation.avatar} -
+
+ {currentConversation ? ( + <> +
+
+
+
+
+ {currentConversation.avatar} +
{currentConversation.isOnline && ( - - )} -
-
-

{currentConversation.name}

-

- {currentConversation.isOnline ? "En ligne" : "Hors ligne"} -

-
+ + )}
-
- +
+

{currentConversation.name}

+

+ {currentConversation.isOnline ? "En ligne" : "Hors ligne"} +

+
+ +
+
-
+

Aucun message

Commencez une conversation en envoyant un message

-
-
+
+