2024-04-09 10:51:05 +00:00
|
|
|
import { Clock, Edit, Share, Trash } from 'lucide-react';
|
2024-04-09 13:40:15 +00:00
|
|
|
import { Message } from './ChatWindow';
|
|
|
|
import { useEffect, useState } from 'react';
|
|
|
|
import { formatTimeDifference } from '@/lib/utils';
|
2024-10-29 14:29:58 +00:00
|
|
|
import DeleteChat from './DeleteChat';
|
2024-04-09 13:40:15 +00:00
|
|
|
|
2024-10-29 14:29:58 +00:00
|
|
|
const Navbar = ({
|
|
|
|
chatId,
|
|
|
|
messages,
|
|
|
|
}: {
|
|
|
|
messages: Message[];
|
|
|
|
chatId: string;
|
|
|
|
}) => {
|
2024-04-09 13:40:15 +00:00
|
|
|
const [title, setTitle] = useState<string>('');
|
|
|
|
const [timeAgo, setTimeAgo] = useState<string>('');
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (messages.length > 0) {
|
|
|
|
const newTitle =
|
|
|
|
messages[0].content.length > 20
|
2024-04-14 11:45:18 +00:00
|
|
|
? `${messages[0].content.substring(0, 20).trim()}...`
|
2024-04-09 13:40:15 +00:00
|
|
|
: messages[0].content;
|
|
|
|
setTitle(newTitle);
|
|
|
|
const newTimeAgo = formatTimeDifference(
|
|
|
|
new Date(),
|
|
|
|
messages[0].createdAt,
|
|
|
|
);
|
|
|
|
setTimeAgo(newTimeAgo);
|
|
|
|
}
|
|
|
|
}, [messages]);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const intervalId = setInterval(() => {
|
|
|
|
if (messages.length > 0) {
|
|
|
|
const newTimeAgo = formatTimeDifference(
|
|
|
|
new Date(),
|
|
|
|
messages[0].createdAt,
|
|
|
|
);
|
|
|
|
setTimeAgo(newTimeAgo);
|
|
|
|
}
|
|
|
|
}, 1000);
|
|
|
|
|
|
|
|
return () => clearInterval(intervalId);
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
}, []);
|
2024-04-09 10:51:05 +00:00
|
|
|
|
|
|
|
return (
|
2024-05-27 23:30:28 +00:00
|
|
|
<div className="fixed z-40 top-0 left-0 right-0 px-4 lg:pl-[104px] lg:pr-6 lg:px-8 flex flex-row items-center justify-between w-full py-4 text-sm text-black dark:text-white/70 border-b bg-light-primary dark:bg-dark-primary border-light-100 dark:border-dark-200">
|
2024-10-29 14:29:58 +00:00
|
|
|
<a
|
|
|
|
href="/"
|
2024-04-09 10:51:05 +00:00
|
|
|
className="active:scale-95 transition duration-100 cursor-pointer lg:hidden"
|
2024-10-29 14:29:58 +00:00
|
|
|
>
|
|
|
|
<Edit size={17} />
|
|
|
|
</a>
|
2024-04-18 12:17:51 +00:00
|
|
|
<div className="hidden lg:flex flex-row items-center justify-center space-x-2">
|
2024-04-09 10:51:05 +00:00
|
|
|
<Clock size={17} />
|
2024-04-09 13:40:15 +00:00
|
|
|
<p className="text-xs">{timeAgo} ago</p>
|
2024-04-09 10:51:05 +00:00
|
|
|
</div>
|
2024-04-09 13:40:15 +00:00
|
|
|
<p className="hidden lg:flex">{title}</p>
|
2024-05-28 02:48:58 +00:00
|
|
|
|
2024-05-29 06:31:42 +00:00
|
|
|
<div className="flex flex-row items-center space-x-4">
|
2024-04-09 10:51:05 +00:00
|
|
|
<Share
|
|
|
|
size={17}
|
|
|
|
className="active:scale-95 transition duration-100 cursor-pointer"
|
|
|
|
/>
|
2024-10-29 14:29:58 +00:00
|
|
|
<DeleteChat redirect chatId={chatId} chats={[]} setChats={() => {}} />
|
2024-04-09 10:51:05 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default Navbar;
|