import { useEffect } from "react"; import { useMessageStore } from "../stores/message.ts"; interface PinnedMessagesProps { channelId: string; channelName: string; onClose: () => void; onJump?: (messageId: string) => void; } export function PinnedMessages({ channelId, channelName, onClose, onJump }: PinnedMessagesProps) { const pinnedMessages = useMessageStore((s) => s.pinnedMessagesByChannel[channelId] || []); const fetchPinnedMessages = useMessageStore((s) => s.fetchPinnedMessages); const unpinMessage = useMessageStore((s) => s.unpinMessage); useEffect(() => { fetchPinnedMessages(channelId); }, [channelId, fetchPinnedMessages]); useEffect(() => { const handler = (e: KeyboardEvent) => { if (e.key === "Escape") { onClose(); } }; window.addEventListener("keydown", handler); return () => window.removeEventListener("keydown", handler); }, [onClose]); return (
PINNED IN #{channelName.toUpperCase()} ({pinnedMessages.length}/5)
{pinnedMessages.length === 0 ? (
[no pinned messages in this channel]
) : ( pinnedMessages.map((msg) => (
<{msg.author_username}> {new Date(msg.created_at).toLocaleString()}
{onJump && ( )}
{msg.content}
)) )}
); }