'use client' import { RecentGroupsState } from '@/app/groups/recent-group-list' import { RecentGroup, archiveGroup, deleteRecentGroup, getArchivedGroups, getStarredGroups, saveRecentGroup, starGroup, unarchiveGroup, unstarGroup, } from '@/app/groups/recent-groups-helpers' import { Button } from '@/components/ui/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { Skeleton } from '@/components/ui/skeleton' import { ToastAction } from '@/components/ui/toast' import { useToast } from '@/components/ui/use-toast' import { StarFilledIcon } from '@radix-ui/react-icons' import { Calendar, MoreHorizontal, Star, Users } from 'lucide-react' import Link from 'next/link' import { useRouter } from 'next/navigation' import { SetStateAction } from 'react' export function RecentGroupListCard({ group, state, setState, }: { group: RecentGroup state: RecentGroupsState setState: (state: SetStateAction) => void }) { const router = useRouter() const toast = useToast() const details = state.status === 'complete' ? state.groupsDetails.find((d) => d.id === group.id) : null if (state.status === 'pending') return null const refreshGroupsFromStorage = () => setState({ ...state, starredGroups: getStarredGroups(), archivedGroups: getArchivedGroups(), }) const isStarred = state.starredGroups.includes(group.id) const isArchived = state.archivedGroups.includes(group.id) return (
  • { event.stopPropagation() deleteRecentGroup(group) setState({ ...state, groups: state.groups.filter((g) => g.id !== group.id), }) toast.toast({ title: 'Group has been removed', description: 'The group was removed from your recent groups list.', action: ( { saveRecentGroup(group) setState({ ...state, groups: state.groups, }) }} > Undo ), }) }} > Remove from recent groups { event.stopPropagation() if (isArchived) { unarchiveGroup(group.id) } else { archiveGroup(group.id) unstarGroup(group.id) } refreshGroupsFromStorage() }} > {isArchived ? <>Unarchive group : <>Archive group}
    {details ? (
    {details._count.participants}
    {new Date(details.createdAt).toLocaleDateString('en-US', { dateStyle: 'medium', })}
    ) : (
    )}
  • ) }