Use tRPC for recent groups page (#253)

* Use tRPC for recent groups page

* Use tRPC for adding group by URL

* Use tRPC for saving visited group

* Group context
This commit is contained in:
Sebastien Castiel
2024-10-20 17:43:42 -04:00
parent 39c1a2ffc6
commit 4db788680e
31 changed files with 314 additions and 260 deletions

View File

@@ -0,0 +1,49 @@
'use client'
import { useToast } from '@/components/ui/use-toast'
import { trpc } from '@/trpc/client'
import { useTranslations } from 'next-intl'
import { PropsWithChildren, useEffect } from 'react'
import { CurrentGroupProvider } from './current-group-context'
import { GroupHeader } from './group-header'
import { SaveGroupLocally } from './save-recent-group'
export function GroupLayoutClient({
groupId,
children,
}: PropsWithChildren<{ groupId: string }>) {
const { data, isLoading } = trpc.groups.get.useQuery({ groupId })
const t = useTranslations('Groups.NotFound')
const { toast } = useToast()
useEffect(() => {
if (data && !data.group) {
toast({
description: t('text'),
variant: 'destructive',
})
}
}, [data])
const props =
isLoading || !data?.group
? { isLoading: true as const, groupId, group: undefined }
: { isLoading: false as const, groupId, group: data.group }
if (isLoading) {
return (
<CurrentGroupProvider {...props}>
<GroupHeader />
{children}
</CurrentGroupProvider>
)
}
return (
<CurrentGroupProvider {...props}>
<GroupHeader />
{children}
<SaveGroupLocally />
</CurrentGroupProvider>
)
}