Tutorial Working
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user