diff --git a/web-app/app/(chat)/chat/_components/chatPreviewList.tsx b/web-app/app/(chat)/chat/_components/chatPreviewList.tsx index 4910a5e..ad42da3 100644 --- a/web-app/app/(chat)/chat/_components/chatPreviewList.tsx +++ b/web-app/app/(chat)/chat/_components/chatPreviewList.tsx @@ -10,6 +10,7 @@ const AVATAR_COLORS = [ "bg-amber-500", ] + export interface Conversation { id: string name: string @@ -26,6 +27,32 @@ function getInitials(name: string) { .toUpperCase() } +function nameMatchesSearch(name: string, searchEntry: string) { + const search = searchEntry.toLowerCase().trim() + if (!search) return true + if(search.length > name.trim().length) return false + + let matches = true; + + let searchArr = search.split(" ") + searchArr.forEach(searchTerm => { + if(!name.toLowerCase() + .trim() + .split(/\s+/) + .some(part => part.startsWith(searchTerm)) && + !name + .toLowerCase() + .startsWith(searchEntry.toLowerCase())){ + matches = false + return + } + + }) + + return matches + +} + export function ChatPreviewItem({ conversation, isSelected, @@ -82,11 +109,19 @@ export function ChatPreviewList({ conversations, selectedId, onSelect, + searchEntry, + setSearchEntry }: { conversations: Conversation[] selectedId: string onSelect: (id: string) => void + searchEntry: string + setSearchEntry: (id: string) => void }) { + + //Filters conversations in the preview list based on search term entered in the search bar + let filteredConversations = conversations.filter(conversations => nameMatchesSearch(conversations.name, searchEntry)) + return (
Create one to get started.