'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 || '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}
);
};