'use client'; import { FC, ReactNode, useCallback, useMemo } from 'react'; import clsx from 'clsx'; import useSWR from 'swr'; import { useFetch } from '@gitroom/helpers/utils/custom.fetch'; import { useParams, useRouter } from 'next/navigation'; import { MarketplaceProvider, Root2 } from '@gitroom/frontend/components/marketplace/marketplace.provider'; import { useUser } from '@gitroom/frontend/components/layout/user.context'; import { Button } from '@gitroom/react/form/button'; const Card: FC<{ message: Root2 }> = (props) => { const { message } = props; const path = useParams(); const router = useRouter(); const user = useUser(); const changeConversation = useCallback(() => { router.push(`/messages/${message.id}`); }, []); const showFrom = useMemo(() => { return user?.id === message?.buyerId ? message?.seller : message?.buyer; }, [message, user]); return (
{showFrom?.picture?.path && ( {showFrom.name )}
{showFrom?.name || 'Noname'}
{message.messages[0]?.content}
Mar 28
); }; export const Layout: FC<{ renderChildren: ReactNode }> = (props) => { const { renderChildren } = props; const fetch = useFetch(); const params = useParams(); const router = useRouter(); const loadMessagesGroup = useCallback(async () => { return await (await fetch('/messages')).json(); }, []); const messagesGroup = useSWR('messagesGroup', loadMessagesGroup, { refreshInterval: 5000 }); const marketplace = useCallback(() => { router.push('/marketplace'); }, [router]); const currentMessage = useMemo(() => { return messagesGroup?.data?.find((message) => message.id === params.id); }, [params.id, messagesGroup.data]); if (messagesGroup.isLoading) { return null; } if (!messagesGroup.isLoading && !messagesGroup?.data?.length) { return (
There are no messages yet.
Checkout the Marketplace
); } return (
All Messages
{messagesGroup.data?.map((message) => ( ))}
{renderChildren}
); };