import { ChannelProfile } from '@components/channels/channelProfile'; import { FormChannel } from '@components/form/channel'; import NewsfeedLayout from '@components/layouts/newsfeed'; import { RelayContext } from '@components/relaysProvider'; import { channelMessagesAtom, channelReplyAtom } from '@stores/channel'; import { MESSAGE_RELAYS } from '@stores/constants'; import { dateToUnix, hoursAgo } from '@utils/getDate'; import { usePageContext } from '@utils/hooks/usePageContext'; import { arrayObjToPureArr } from '@utils/transform'; import { EyeClose, MicMute } from 'iconoir-react'; import { useSetAtom } from 'jotai'; import { useResetAtom } from 'jotai/utils'; import { Suspense, lazy, useContext, useRef } from 'react'; import useSWRSubscription from 'swr/subscription'; const ChannelMessages = lazy(() => import('@components/channels/messages')); let mutedList: any = []; let hidedList: any = []; if (typeof window !== 'undefined') { const { getBlacklist, getActiveAccount } = await import('@utils/storage'); const activeAccount = await getActiveAccount(); hidedList = await getBlacklist(activeAccount.id, 43); mutedList = await getBlacklist(activeAccount.id, 44); } export function Page() { const pageContext = usePageContext(); const searchParams: any = pageContext.urlParsed.search; const id = searchParams.id; const channelPubkey = searchParams.pubkey; const pool: any = useContext(RelayContext); const setChannelMessages = useSetAtom(channelMessagesAtom); const resetChannelMessages = useResetAtom(channelMessagesAtom); const resetChannelReply = useResetAtom(channelReplyAtom); const now = useRef(new Date()); const hided = arrayObjToPureArr(hidedList); const muted = arrayObjToPureArr(mutedList); useSWRSubscription(id, () => { // reset channel reply resetChannelReply(); // reset channel messages resetChannelMessages(); // subscribe for new messages const unsubscribe = pool.subscribe( [ { '#e': [id], kinds: [42], since: dateToUnix(hoursAgo(48, now.current)), }, ], MESSAGE_RELAYS, (event: { kind: number; tags: string[][]; pubkey: string; id: string }) => { if (muted.includes(event.pubkey)) { console.log('muted'); } else if (hided.includes(event.id)) { console.log('hided'); } else { setChannelMessages((prev) => [...prev, event]); } } ); return () => { unsubscribe(); }; }); return (
Loading...

}>
); }