Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/state/user.ts
7460 views
1
import { Action, action, Thunk, thunk } from 'easy-peasy';
2
import updateAccountEmail from '@/api/account/updateAccountEmail';
3
4
export interface UserData {
5
uuid: string;
6
username: string;
7
email: string;
8
language: string;
9
rootAdmin: boolean;
10
useTotp: boolean;
11
createdAt: Date;
12
updatedAt: Date;
13
}
14
15
export interface UserStore {
16
data?: UserData;
17
setUserData: Action<UserStore, UserData>;
18
updateUserData: Action<UserStore, Partial<UserData>>;
19
updateUserEmail: Thunk<UserStore, { email: string; password: string }, any, UserStore, Promise<void>>;
20
}
21
22
const user: UserStore = {
23
data: undefined,
24
setUserData: action((state, payload) => {
25
state.data = payload;
26
}),
27
28
updateUserData: action((state, payload) => {
29
// @ts-expect-error limitation of Typescript, can't do much about that currently unfortunately.
30
state.data = { ...state.data, ...payload };
31
}),
32
33
updateUserEmail: thunk(async (actions, payload) => {
34
await updateAccountEmail(payload.email, payload.password);
35
36
actions.updateUserData({ email: payload.email });
37
}),
38
};
39
40
export default user;
41
42