generated from template/vite-react-template
feat: update new feature temp for panel
This commit is contained in:
6
template/user/route.ts
Normal file
6
template/user/route.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { app } from '../app';
|
||||
|
||||
app.route({
|
||||
path: 'user',
|
||||
key: 'login',
|
||||
});
|
||||
50
template/user/store/index.ts
Normal file
50
template/user/store/index.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { message } from '../../app';
|
||||
import { query } from '../../app';
|
||||
import { createStore } from 'zustand/vanilla';
|
||||
type User = {
|
||||
id: string;
|
||||
username?: string;
|
||||
nickname?: string;
|
||||
avatar: string;
|
||||
};
|
||||
|
||||
interface UserWallStore {
|
||||
user?: User;
|
||||
setUser: (user: User) => void;
|
||||
/**
|
||||
* 查询用户信息,用户没有登陆,则打开登陆页面
|
||||
* @param openOnNoLogin
|
||||
* @returns
|
||||
*/
|
||||
queryMe: (openOnNoLogin?: boolean) => Promise<void>;
|
||||
logout: () => void;
|
||||
isLogin: () => boolean;
|
||||
}
|
||||
|
||||
export const useUserWallStore = createStore<UserWallStore>((set, get) => ({
|
||||
user: undefined,
|
||||
setUser: (user: User) => set({ user }),
|
||||
queryMe: async (openOnNoLogin = true) => {
|
||||
const res = await query.post(
|
||||
{
|
||||
path: 'user',
|
||||
key: 'me',
|
||||
},
|
||||
{
|
||||
afterResponse: !openOnNoLogin ? async (res) => res : undefined,
|
||||
},
|
||||
);
|
||||
console.log('queryMe', res);
|
||||
if (res.code === 200) {
|
||||
set({ user: res.data });
|
||||
}
|
||||
},
|
||||
|
||||
logout: () => {
|
||||
set({ user: undefined });
|
||||
localStorage.removeItem('token');
|
||||
},
|
||||
isLogin: () => {
|
||||
return !!get().user;
|
||||
},
|
||||
}));
|
||||
Reference in New Issue
Block a user