123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import { defineStore } from 'pinia';
- import { store } from '@/store';
- import { ACCESS_TOKEN, CURRENT_USER, IM_TOKEN } from '@/store/mutation-types';
- import { storage } from '@/utils/storage';
- import { userLogin, getUserInfo } from '@/api/user';
- export interface IUserState {
- token: string;
- imToken: string;
- username: string;
- avatar: string;
- info: any;
- }
- export const useUserStore = defineStore('user-store', {
- state: (): IUserState => ({
- token: storage.get(ACCESS_TOKEN, ''),
- imToken: storage.get(IM_TOKEN, ''),
- username: '',
- avatar: '',
- info: storage.get(CURRENT_USER, {})
- }),
- getters: {
- getToken(): string {
- return this.token;
- },
- getImToken(): string {
- return this.imToken;
- },
- getAvatar(): string {
- return this.avatar;
- },
- getNickname(): string {
- return this.username;
- },
- getUserInfo(): object {
- return this.info;
- }
- },
- actions: {
- setToken(token: string) {
- this.token = token;
- },
- setImToken(token: string) {
- this.imToken = token;
- },
- setAvatar(avatar: string) {
- this.avatar = avatar;
- },
- setUsername(username: string) {
- this.username = username;
- },
- setUserInfo(info: any) {
- this.info = info;
- },
- // 登录
- async login(userInfo: any) {
- try {
- const { data } = await userLogin(userInfo);
- console.log(data, 'data');
- const userToken = data.token_type + ' ' + data.access_token;
- const ex = 7 * 24 * 60 * 60 * 1000;
- storage.set(ACCESS_TOKEN, userToken, ex);
- // storage.get(IM_TOKEN, data.imToken);
- this.setToken(userToken);
- // this.setImToken(data.imToken);
- return Promise.resolve();
- } catch (e) {
- return Promise.reject(e);
- }
- },
- // 获取用户信息
- async getInfo() {
- return new Promise((resolve, reject) => {
- getUserInfo()
- .then((res: any) => {
- const result = res.data;
- this.setUserInfo(result);
- this.setAvatar(result.account.avatar);
- this.setUsername(result.nickname);
- resolve(true);
- })
- .catch((error: any) => {
- reject(error);
- });
- });
- },
- // 登出
- async logout() {
- this.setUserInfo('');
- storage.remove(ACCESS_TOKEN);
- storage.remove(CURRENT_USER);
- return Promise.resolve('');
- }
- }
- });
- // Need to be used outside the setup
- export function useUserStoreWidthOut() {
- return useUserStore(store);
- }
|