Tutorial Working

This commit is contained in:
2025-03-15 18:23:04 -04:00
parent a842c24d0d
commit ea0018bae2
15 changed files with 517 additions and 29 deletions

View File

@@ -1,4 +1,6 @@
import { useGetTutorialsStatus, useUpdateTutorialsStatus } from "@/hooks/AccountHooks";
import { AccountPermission } from "@/interface/AccountPermission";
import { AccountTutorialStatus } from "@/interface/AccountTutorialStatus";
import { GamePermission } from "@/interface/GamePermission";
import { RaidGroupPermission } from "@/interface/RaidGroupPermission";
import { RaidGroupRequest } from "@/interface/RaidGroupRequest";
@@ -23,6 +25,8 @@ type AuthProviderState = {
raidGroupPermissions: RaidGroupPermission[];
gamePermissions: GamePermission[];
raidGroupRequests: RaidGroupRequest[];
tutorialsStatus: AccountTutorialStatus;
setTutorialsStatus: (tutorialsStatus: AccountTutorialStatus) => void;
}
const initialState: AuthProviderState = {
@@ -34,7 +38,9 @@ const initialState: AuthProviderState = {
accountPermissions: [],
raidGroupPermissions: [],
gamePermissions: [],
raidGroupRequests: []
raidGroupRequests: [],
tutorialsStatus: {} as AccountTutorialStatus,
setTutorialsStatus: () => null
}
const AuthContext = createContext<AuthProviderState>(initialState);
@@ -51,6 +57,11 @@ export function AuthProvider({
const [ raidGroupPermissions, setRaidGroupPermissions ] = useState<RaidGroupPermission[]>([]);
const [ gamePermissions, setGamePermissions ] = useState<GamePermission[]>([]);
const [ raidGroupRequests, setRaidGroupRequests ] = useState<RaidGroupRequest[]>([]);
const [ tutorialsStatus, setTutorialsStatus ] = useState<AccountTutorialStatus>({} as AccountTutorialStatus);
const tutorialsStatusQuery = useGetTutorialsStatus(accountId);
const { mutate: tutorialsStatusMutation } = useUpdateTutorialsStatus();
const fetchToken = useCallback(async () => {
@@ -112,18 +123,29 @@ export function AuthProvider({
fetchToken();
}, [ fetchToken ]);
//Update the tutorial status when fetched
useEffect(() => {
if(tutorialsStatusQuery.status === "success"){
setTutorialsStatus(tutorialsStatusQuery.data);
}
}, [ tutorialsStatusQuery.status, tutorialsStatusQuery.data ]);
const updateTutorialsStatus = useCallback((newTutorialsStatus: AccountTutorialStatus) => {
setTutorialsStatus(newTutorialsStatus);
tutorialsStatusMutation(newTutorialsStatus);
}, [ setTutorialsStatus, tutorialsStatusMutation ]);
const currentTokens = useMemo(() => ({
jwt,
setJwt,
expiration,
setExpiration,
jwt, setJwt,
expiration, setExpiration,
accountId,
accountPermissions,
raidGroupPermissions,
gamePermissions,
raidGroupRequests
}), [ jwt, setJwt, expiration, setExpiration, accountId, accountPermissions, raidGroupPermissions, gamePermissions, raidGroupRequests ]);
raidGroupRequests,
tutorialsStatus, setTutorialsStatus: updateTutorialsStatus
}), [ jwt, expiration, accountId, accountPermissions, raidGroupPermissions, gamePermissions, raidGroupRequests, tutorialsStatus, updateTutorialsStatus ]);
//TODO: Return a spinner while the first token is being fetched