Added website and team providers.

This commit is contained in:
Mike Cao 2024-02-04 19:53:06 -08:00
parent dbb3801e66
commit cc273092d5
25 changed files with 123 additions and 98 deletions

View file

@ -1,21 +0,0 @@
'use client';
import { useTeam, useTeamUrl } from 'components/hooks';
import { Loading } from 'react-basics';
import TeamContext from './TeamContext';
export function Team({ children }) {
const { teamId } = useTeamUrl();
const { data: team, isLoading } = useTeam(teamId);
if (isLoading) {
return <Loading />;
}
if (!team) {
return null;
}
return <TeamContext.Provider value={team}>{children}</TeamContext.Provider>;
}
export default Team;

View file

@ -1,6 +0,0 @@
'use client';
import { createContext } from 'react';
export const TeamContext = createContext(null);
export default TeamContext;

View file

@ -0,0 +1,30 @@
'use client';
import { createContext, ReactNode, useEffect } from 'react';
import { useTeam } from 'components/hooks';
import { Loading } from 'react-basics';
import useModified from 'store/modified';
export const TeamContext = createContext(null);
export function TeamProvider({ teamId, children }: { teamId: string; children: ReactNode }) {
const modified = useModified(state => state?.[`team:${teamId}`]);
const { data: team, isLoading, isFetching, refetch } = useTeam(teamId);
useEffect(() => {
if (modified) {
refetch();
}
}, [modified]);
if (isFetching && isLoading) {
return <Loading />;
}
if (!team) {
return null;
}
return <TeamContext.Provider value={team}>{children}</TeamContext.Provider>;
}
export default TeamProvider;

View file

@ -1,5 +1,5 @@
import Team from './Team';
import TeamProvider from './TeamProvider';
export default function ({ children }) {
return <Team>{children}</Team>;
return <TeamProvider>{children}</TeamProvider>;
}