mirror of
https://github.com/QuivrHQ/quivr.git
synced 2024-12-16 10:02:30 +03:00
4112699db5
* ♻️ refactor backend main routes * 🗃️ new user_id uuid column in users table * 🗃️ new chats table * ✨ new chat endpoints * ✨ change chat routes post to handle undef chat_id * ♻️ extract components from chat page * ✨ add chatId to useQuestion * ✨ new ChatsList * ✨ new optional dynamic route chat/{chat_id} * 🩹 add setQuestion to speach utils * feat: self supplied key (#286) * feat(brain): increased size if api key and more * fix(key): not displayed * feat(apikey): now password input * fix(twitter): handle wrong * feat(chat): basic source documents support (#289) * ♻️ refactor backend main routes * 🗃️ new user_id uuid column in users table * 🗃️ new chats table * ✨ new chat endpoints * ✨ change chat routes post to handle undef chat_id * ♻️ extract components from chat page * ✨ add chatId to useQuestion * ✨ new ChatsList * ✨ new optional dynamic route chat/{chat_id} * 🩹 add setQuestion to speach utils * 🎨 separate creation and update endpoints for chat * 🩹 add feat(chat): basic source documents support * ✨ add chatName upon creation and for chats list * 💄 improve chatsList style * User chat history and multiple chats (#290) * ♻️ refactor backend main routes * 🗃️ new user_id uuid column in users table * 🗃️ new chats table * ✨ new chat endpoints * ✨ change chat routes post to handle undef chat_id * ♻️ extract components from chat page * ✨ add chatId to useQuestion * ✨ new ChatsList * ✨ new optional dynamic route chat/{chat_id} * refactor(chat): use layout to avoid refetching all chats on every chat * refactor(chat): useChats hook instead of useQuestion * fix(chat): fix errors * refactor(chat): better folder structure * feat: self supplied key (#286) * feat(brain): increased size if api key and more * fix(key): not displayed * feat(apikey): now password input * fix(twitter): handle wrong * feat(chat): basic source documents support (#289) * style(chat): better looking sidebar * resume merge * fix(backend): add os and logger imports * small fixes * chore(chat): remove empty interface * chore(chat): use const * fix(chat): merge errors * fix(chat): remove useSpeech args * chore(chat): remove unused args * fix(chat): remove duplicate components --------- Co-authored-by: gozineb <zinebe@theodo.fr> Co-authored-by: Matt <77928207+mattzcarey@users.noreply.github.com> Co-authored-by: Stan Girard <girard.stanislas@gmail.com> Co-authored-by: xleven <xleven@outlook.com> * fix and refactor errors * fix(fresh): installation issues * chore(conflict): merged old code * fix(multi-chat): use update endpoint * feat(embeddings): now using users api key --------- Co-authored-by: Matt <77928207+mattzcarey@users.noreply.github.com> Co-authored-by: Stan Girard <girard.stanislas@gmail.com> Co-authored-by: xleven <xleven@outlook.com> Co-authored-by: Aditya Nandan <61308761+iMADi-ARCH@users.noreply.github.com> Co-authored-by: iMADi-ARCH <nandanaditya985@gmail.com> Co-authored-by: Mamadou DICKO <mamadoudicko100@gmail.com>
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import { cn } from "@/lib/utils";
|
|
import { UUID } from "crypto";
|
|
import Link from "next/link";
|
|
import { usePathname } from "next/navigation";
|
|
import { FC } from "react";
|
|
import { FiTrash2 } from "react-icons/fi";
|
|
import { MdChatBubbleOutline } from "react-icons/md";
|
|
import { Chat } from "../../types";
|
|
|
|
interface ChatsListItemProps {
|
|
chat: Chat;
|
|
deleteChat: (id: UUID) => void;
|
|
}
|
|
|
|
const ChatsListItem: FC<ChatsListItemProps> = ({ chat, deleteChat }) => {
|
|
const pathname = usePathname()?.split("/").at(-1);
|
|
const selected = chat.chatId === pathname;
|
|
|
|
return (
|
|
<div
|
|
className={cn(
|
|
"w-full border-b border-black/10 dark:border-white/25 last:border-none relative group flex overflow-x-hidden hover:bg-gray-100 dark:hover:bg-gray-800",
|
|
selected ? "bg-gray-100 text-primary" : ""
|
|
)}
|
|
>
|
|
<Link
|
|
className="flex flex-col flex-1 min-w-0 p-4"
|
|
href={`/chat/${chat.chatId}`}
|
|
key={chat.chatId}
|
|
>
|
|
<div className="flex items-center gap-2">
|
|
<MdChatBubbleOutline className="text-xl" />
|
|
|
|
<p className="min-w-0 flex-1 whitespace-nowrap">{chat.chatName}</p>
|
|
</div>
|
|
<div className="grid-cols-2 text-xs opacity-50 whitespace-nowrap">
|
|
{chat.chatId}
|
|
</div>
|
|
</Link>
|
|
<div className="opacity-0 group-hover:opacity-100 flex items-center justify-center hover:text-red-700 bg-gradient-to-l from-white dark:from-black to-transparent z-10 transition-opacity">
|
|
<button
|
|
className="p-5"
|
|
type="button"
|
|
onClick={() => deleteChat(chat.chatId)}
|
|
>
|
|
<FiTrash2 />
|
|
</button>
|
|
</div>
|
|
|
|
{/* Fade to white */}
|
|
<div
|
|
aria-hidden
|
|
className="not-sr-only absolute left-1/2 top-0 bottom-0 right-0 bg-gradient-to-r from-transparent to-white dark:to-black pointer-events-none"
|
|
></div>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default ChatsListItem;
|