11import { create } from "zustand" ;
22import { persist } from "zustand/middleware" ;
3- import { produce } from "immer" ;
4-
5- import platformAdapter from "@/utils/platformAdapter" ;
6-
7- const AUTH_CHANGE_EVENT = "auth-changed" ;
8- const USERINFO_CHANGE_EVENT = "userInfo-changed" ;
93
104export type Plan = {
115 upgraded : boolean ;
@@ -19,93 +13,23 @@ export type AuthProp = {
1913 plan ?: Plan | null ;
2014} ;
2115
22- type AuthMapProp = {
23- [ key : string ] : AuthProp ;
24- } ;
25-
26- type userInfoMapProp = {
27- [ key : string ] : any ;
28- } ;
29-
3016export type IAuthStore = {
31- [ x : string ] : any ;
32- auth : AuthMapProp | undefined ;
33- userInfo : userInfoMapProp ;
34- setAuth : ( auth : AuthProp | undefined , key : string ) => void ;
35- resetAuth : ( key : string ) => void ;
3617 isCurrentLogin : boolean ;
3718 setIsCurrentLogin : ( isCurrentLogin : boolean ) => void ;
38- initializeListeners : ( ) => Promise < ( ) => void > ;
3919} ;
4020
4121export const useAuthStore = create < IAuthStore > ( ) (
4222 persist (
4323 ( set ) => ( {
44- auth : undefined ,
45- userInfo : { } ,
46- setAuth : async ( auth , key ) => {
47- set (
48- produce ( ( draft ) => {
49- draft . auth [ key ] = auth ;
50- } )
51- ) ;
52-
53- await platformAdapter . emitEvent ( AUTH_CHANGE_EVENT , {
54- auth : {
55- [ key ] : auth ,
56- } ,
57- } ) ;
58- } ,
59- resetAuth : async ( key : string ) => {
60- set (
61- produce ( ( draft ) => {
62- draft . auth [ key ] = undefined ;
63- } )
64- ) ;
65-
66- await platformAdapter . emitEvent ( AUTH_CHANGE_EVENT , {
67- auth : {
68- [ key ] : undefined ,
69- } ,
70- } ) ;
71- } ,
72- setUserInfo : async ( userInfo : any , key : string ) => {
73- set (
74- produce ( ( draft ) => {
75- draft . userInfo [ key ] = userInfo ;
76- } )
77- ) ;
78-
79- await platformAdapter . emitEvent ( USERINFO_CHANGE_EVENT , {
80- userInfo : {
81- [ key ] : userInfo ,
82- } ,
83- } ) ;
84- } ,
8524 isCurrentLogin : true ,
8625 setIsCurrentLogin : ( isCurrentLogin : boolean ) => {
8726 set ( { isCurrentLogin } ) ;
8827 } ,
89- initializeListeners : async ( ) => {
90- await platformAdapter . listenEvent ( AUTH_CHANGE_EVENT , ( event : any ) => {
91- const { auth } = event . payload ;
92- set ( { auth } ) ;
93- } ) ;
94-
95- return platformAdapter . listenEvent (
96- USERINFO_CHANGE_EVENT ,
97- ( event : any ) => {
98- const { userInfo } = event . payload ;
99- set ( { userInfo } ) ;
100- }
101- ) ;
102- } ,
10328 } ) ,
10429 {
10530 name : "auth-store" ,
10631 partialize : ( state ) => ( {
107- auth : state . auth ,
108- userInfo : state . userInfo ,
32+ isCurrentLogin : state . isCurrentLogin ,
10933 } ) ,
11034 }
11135 )
0 commit comments