feat: load players in session
This commit is contained in:
parent
241f6fa7eb
commit
de8dc6b9b9
@ -15,7 +15,7 @@ export default function Footer() {
|
|||||||
</Link>
|
</Link>
|
||||||
<span>|</span>
|
<span>|</span>
|
||||||
<Link to="/network">
|
<Link to="/network">
|
||||||
<span>Trainer Analysis</span>
|
<span>Sociogram</span>
|
||||||
</Link>
|
</Link>
|
||||||
<span>|</span>
|
<span>|</span>
|
||||||
<Link to="/mvp">
|
<Link to="/mvp">
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { ButtonHTMLAttributes, useEffect, useRef, useState } from "react";
|
import { ButtonHTMLAttributes, useEffect, useRef, useState } from "react";
|
||||||
import { ReactSortable, ReactSortableProps } from "react-sortablejs";
|
import { ReactSortable, ReactSortableProps } from "react-sortablejs";
|
||||||
import { apiAuth, loadPlayers, User } from "./api";
|
import { apiAuth, User } from "./api";
|
||||||
import { TeamState, useSession } from "./Session";
|
import { TeamState, useSession } from "./Session";
|
||||||
import { Chemistry, MVPRanking, PlayerType } from "./types";
|
import { Chemistry, MVPRanking, PlayerType } from "./types";
|
||||||
import TabController from "./TabController";
|
import TabController from "./TabController";
|
||||||
@ -451,14 +451,7 @@ function HeaderControl({ onLoad, onClear }: HeaderControlProps) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function Rankings() {
|
export default function Rankings() {
|
||||||
const { user, teams } = useSession();
|
const { user, teams, players } = useSession();
|
||||||
const [players, setPlayers] = useState<User[] | null>(null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (teams) {
|
|
||||||
loadPlayers(teams.activeTeam).then((data) => setPlayers(data));
|
|
||||||
}
|
|
||||||
}, [user, teams]);
|
|
||||||
|
|
||||||
const tabs = [
|
const tabs = [
|
||||||
{ id: "Chemistry", label: "🧪 Chemistry" },
|
{ id: "Chemistry", label: "🧪 Chemistry" },
|
||||||
|
@ -24,6 +24,7 @@ export interface Session {
|
|||||||
teams: TeamState | null;
|
teams: TeamState | null;
|
||||||
setTeams: (teams: TeamState) => void;
|
setTeams: (teams: TeamState) => void;
|
||||||
players: User[] | null;
|
players: User[] | null;
|
||||||
|
reloadPlayers: () => void;
|
||||||
onLogout: () => void;
|
onLogout: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,6 +33,7 @@ const sessionContext = createContext<Session>({
|
|||||||
teams: null,
|
teams: null,
|
||||||
setTeams: () => {},
|
setTeams: () => {},
|
||||||
players: null,
|
players: null,
|
||||||
|
reloadPlayers: () => {},
|
||||||
onLogout: () => {},
|
onLogout: () => {},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -63,6 +65,10 @@ export function SessionProvider(props: SessionProviderProps) {
|
|||||||
if (teams) setTeams({ teams: teams, activeTeam: teams[0].id });
|
if (teams) setTeams({ teams: teams, activeTeam: teams[0].id });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function reloadPlayers() {
|
||||||
|
teams && loadPlayers(teams?.activeTeam).then((data) => setPlayers(data));
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
loadUser();
|
loadUser();
|
||||||
}, []);
|
}, []);
|
||||||
@ -70,7 +76,7 @@ export function SessionProvider(props: SessionProviderProps) {
|
|||||||
loadTeam();
|
loadTeam();
|
||||||
}, [user]);
|
}, [user]);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
teams && loadPlayers(teams?.activeTeam).then((data) => setPlayers(data));
|
reloadPlayers();
|
||||||
}, [teams]);
|
}, [teams]);
|
||||||
|
|
||||||
function onLogin(user: User) {
|
function onLogin(user: User) {
|
||||||
@ -103,7 +109,7 @@ export function SessionProvider(props: SessionProviderProps) {
|
|||||||
} else
|
} else
|
||||||
content = (
|
content = (
|
||||||
<sessionContext.Provider
|
<sessionContext.Provider
|
||||||
value={{ user, teams, setTeams, players, onLogout }}
|
value={{ user, teams, setTeams, players, reloadPlayers, onLogout }}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
</sessionContext.Provider>
|
</sessionContext.Provider>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { FormEvent, useEffect, useState } from "react";
|
import { FormEvent, useEffect, useState } from "react";
|
||||||
import { apiAuth, Gender, loadPlayers, User } from "./api";
|
import { apiAuth, Gender, User } from "./api";
|
||||||
import { useSession } from "./Session";
|
import { useSession } from "./Session";
|
||||||
import { ErrorState } from "./types";
|
import { ErrorState } from "./types";
|
||||||
import { useNavigate } from "react-router";
|
import { useNavigate } from "react-router";
|
||||||
import Calendar from "./Calendar";
|
import Calendar from "./Calendar";
|
||||||
|
|
||||||
const TeamPanel = () => {
|
const TeamPanel = () => {
|
||||||
const { user, teams, players } = useSession();
|
const { user, teams, players, reloadPlayers } = useSession();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
user?.scopes.includes(`team:${teams?.activeTeam}`) ||
|
user?.scopes.includes(`team:${teams?.activeTeam}`) ||
|
||||||
@ -32,14 +32,14 @@ const TeamPanel = () => {
|
|||||||
if (r.detail) setError({ ok: false, message: r.detail });
|
if (r.detail) setError({ ok: false, message: r.detail });
|
||||||
else {
|
else {
|
||||||
setError({ ok: true, message: r });
|
setError({ ok: true, message: r });
|
||||||
loadPlayers(teams.activeTeam).then((data) => setPlayers(data));
|
reloadPlayers();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const r = await apiAuth(`player/${teams?.activeTeam}`, player, "PUT");
|
const r = await apiAuth(`player/${teams?.activeTeam}`, player, "PUT");
|
||||||
if (r.detail) setError({ ok: false, message: r.detail });
|
if (r.detail) setError({ ok: false, message: r.detail });
|
||||||
else {
|
else {
|
||||||
setError({ ok: true, message: r });
|
setError({ ok: true, message: r });
|
||||||
loadPlayers(teams.activeTeam).then((data) => setPlayers(data));
|
reloadPlayers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,7 +59,7 @@ const TeamPanel = () => {
|
|||||||
else {
|
else {
|
||||||
setError({ ok: true, message: r });
|
setError({ ok: true, message: r });
|
||||||
setPlayer(newPlayerTemplate);
|
setPlayer(newPlayerTemplate);
|
||||||
loadPlayers(teams.activeTeam).then((data) => setPlayers(data));
|
reloadPlayers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user