import React, { useState, useEffect } from 'react'; import { Card } from 'primereact/card'; import { Avatar } from 'primereact/avatar'; import { Tag } from 'primereact/tag'; import { Panel } from 'primereact/panel'; import GenericButton from '@/components/buttons/GenericButton'; import { highlightText } from '@/utils/text'; import { useSession } from 'next-auth/react'; import NostrIcon from '../../../../public/images/nostr.png'; import Image from 'next/image'; import { nip19 } from 'nostr-tools'; import ZapThreadsWrapper from '@/components/ZapThreadsWrapper'; import useWindowWidth from '@/hooks/useWindowWidth'; const StackerNewsIconComponent = () => ( ); const headerTemplate = (options, windowWidth, platform, id) => { return (
768 ? `View ${platform === 'nostr' ? 'on' : 'in'} ${platform}` : null} icon="pi pi-external-link" outlined size="small" onClick={() => window.open(getPlatformLink(platform, id), '_blank')} tooltip={windowWidth < 768 ? `View ${platform === 'nostr' ? 'on' : 'in'} ${platform}` : null} tooltipOptions={{ position: 'left' }} />
); }; const CommunityMessage = ({ message, searchQuery, windowWidth, platform }) => { const [npub, setNpub] = useState(null); const [collapsed, setCollapsed] = useState(true); const { data: session } = useSession(); const isMobileView = windowWidth <= 768; useEffect(() => { if (session?.user?.pubkey) { setNpub(nip19.npubEncode(session.user.pubkey)); } }, [session]); const header = (

{message?.pubkey ? (message?.pubkey.slice(0, 12) + "...") : message.author}

); const footer = (
{ platform === 'nostr' ? (

{new Date(message.timestamp).toLocaleString()}

) : null }
{ platform === 'nostr' ? ( headerTemplate({ onTogglerClick: () => setCollapsed(!collapsed) }, windowWidth, platform, message.id)} toggleable collapsed={collapsed} onToggle={(e) => setCollapsed(e.value)} className="w-full" >
) : (
{platform !== "nostr" ? (

{new Date(message.timestamp).toLocaleString()}

) :
} 768 ? `View in ${platform}` : null} icon="pi pi-external-link" outlined size="small" onClick={() => window.open(getPlatformLink(platform, message.id), '_blank')} tooltip={windowWidth < 768 ? `View in ${platform}` : null} tooltipOptions={{ position: 'left' }} />
) }
); return (

{highlightText(message.content, searchQuery)}

); }; const getPlatformLink = (platform, id) => { switch (platform) { case 'discord': return "https://discord.gg/t8DCMcq39d"; case 'stackernews': return `https://stacker.news/items/${id}`; case 'nostr': return `https://nostr.band/${nip19.noteEncode(id)}`; default: return "#"; } }; const getPlatformIcon = (platform) => { switch (platform) { case 'stackernews': return ; case 'nostr': return Nostr; default: return `pi pi-${platform}`; } }; export default CommunityMessage;