Răsfoiți Sursa

修复退出登录不生效

zbb 3 luni în urmă
părinte
comite
102aef403c
2 a modificat fișierele cu 14 adăugiri și 1 ștergeri
  1. 6 1
      contexts/AuthContext.tsx
  2. 8 0
      services/user.ts

+ 6 - 1
contexts/AuthContext.tsx

@@ -1,7 +1,7 @@
 import React, { createContext, useContext, useEffect, useState } from 'react';
 
 import { clearToken, getToken } from '@/services/http';
-import { getUserInfo, UserInfo } from '@/services/user';
+import { getUserInfo, logout as logoutApi, UserInfo } from '@/services/user';
 
 interface AuthContextType {
   isLoggedIn: boolean;
@@ -41,6 +41,11 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
   };
 
   const logout = async () => {
+    try {
+      await logoutApi();
+    } catch (e) {
+      console.warn('Logout API failed', e);
+    }
     setUser(null);
     setHasToken(false);
     await clearToken();

+ 8 - 0
services/user.ts

@@ -23,6 +23,7 @@ const apis = {
   ACTIVITY_TA_LEVEL: '/api/activity/activityTa/level',
   CLAIM_DAILY_REWARD: '/api/wallet/recharge/claimDailyReward',
   NEW_USER_NUM: '/api/wallet/ranking/newUserNum',
+  LOGOUT: '/api/account/logout',
 };
 
 export interface UserInfo {
@@ -66,6 +67,12 @@ export const login = async (params: LoginParams): Promise<LoginResult> => {
   return { success: false };
 };
 
+// 退出登录
+export const logout = async (): Promise<boolean> => {
+  const res = await get(apis.LOGOUT);
+  return res.success;
+};
+
 // 获取用户信息
 export const getUserInfo = async (): Promise<UserInfo | null> => {
   const res = await get<UserInfo>(apis.USER_INFO);
@@ -188,6 +195,7 @@ export const getNewUserNum = async (params?: any) => {
 
 export default {
   login,
+  logout,
   getUserInfo,
   updateUserInfo,
   updateAvatar,