feat: 完整游戏运维功能
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import { platformApiClient, setPlatformApiSessionToken } from "../api/client";
|
||||
import { platformApiClient, setPlatformApiAuthFailureHandler, setPlatformApiSessionToken } from "../api/client";
|
||||
import type {
|
||||
AuthSessionResponse,
|
||||
CurrentUserResponse,
|
||||
@@ -59,9 +59,6 @@ export interface SessionState {
|
||||
export async function loadCurrentUser(): Promise<CurrentUserView | null> {
|
||||
const storedToken = readStoredSessionToken();
|
||||
setPlatformApiSessionToken(storedToken);
|
||||
if (!storedToken) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
const response = await platformApiClient.getCurrentUser();
|
||||
return currentUserFromResponse(response, "api");
|
||||
@@ -93,6 +90,16 @@ export function useSession(): SessionState {
|
||||
};
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
setPlatformApiAuthFailureHandler(() => {
|
||||
persistSessionToken(null);
|
||||
setUser(undefined);
|
||||
setAuthUnavailable(false);
|
||||
setAuth({ mode: "login", pending: false, error: "会话已失效,请重新登录。" });
|
||||
});
|
||||
return () => setPlatformApiAuthFailureHandler(null);
|
||||
}, []);
|
||||
|
||||
async function login(request: LoginRequest) {
|
||||
setAuth({ mode: "login", pending: true });
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user