feat: begin to add support for multiple teams

This commit is contained in:
2025-03-19 15:08:18 +01:00
parent c246a0b264
commit ded2b79db7
7 changed files with 91 additions and 42 deletions

View File

@@ -14,15 +14,22 @@ export interface SessionProviderProps {
children: ReactNode;
}
export interface TeamState {
teams: Team[];
activeTeam: number;
}
export interface Session {
user: User | null;
teams: Team[] | null;
teams: TeamState | null;
setTeams: (teams: TeamState) => void;
onLogout: () => void;
}
const sessionContext = createContext<Session>({
user: null,
teams: null,
setTeams: () => {},
onLogout: () => {},
});
@@ -30,7 +37,7 @@ export function SessionProvider(props: SessionProviderProps) {
const { children } = props;
const [user, setUser] = useState<User | null>(null);
const [teams, setTeams] = useState<Team[] | null>(null);
const [teams, setTeams] = useState<TeamState | null>(null);
const [err, setErr] = useState<unknown>(null);
const [loading, setLoading] = useState(false);
@@ -50,12 +57,12 @@ export function SessionProvider(props: SessionProviderProps) {
async function loadTeam() {
const teams: Team[] = await apiAuth("player/me/teams", null, "GET");
if (teams) setTeams(teams);
if (teams) setTeams({ teams: teams, activeTeam: teams[0].id });
}
useEffect(() => {
loadUser();
setTimeout(() => loadTeam(), 1500);
setTimeout(() => loadTeam(), 500);
}, []);
function onLogin(user: User) {
@@ -87,7 +94,7 @@ export function SessionProvider(props: SessionProviderProps) {
content = <Login onLogin={onLogin} />;
} else
content = (
<sessionContext.Provider value={{ user, teams, onLogout }}>
<sessionContext.Provider value={{ user, teams, setTeams, onLogout }}>
{children}
</sessionContext.Provider>
);