Path: blob/1.0-develop/resources/scripts/state/user.ts
7460 views
import { Action, action, Thunk, thunk } from 'easy-peasy';1import updateAccountEmail from '@/api/account/updateAccountEmail';23export interface UserData {4uuid: string;5username: string;6email: string;7language: string;8rootAdmin: boolean;9useTotp: boolean;10createdAt: Date;11updatedAt: Date;12}1314export interface UserStore {15data?: UserData;16setUserData: Action<UserStore, UserData>;17updateUserData: Action<UserStore, Partial<UserData>>;18updateUserEmail: Thunk<UserStore, { email: string; password: string }, any, UserStore, Promise<void>>;19}2021const user: UserStore = {22data: undefined,23setUserData: action((state, payload) => {24state.data = payload;25}),2627updateUserData: action((state, payload) => {28// @ts-expect-error limitation of Typescript, can't do much about that currently unfortunately.29state.data = { ...state.data, ...payload };30}),3132updateUserEmail: thunk(async (actions, payload) => {33await updateAccountEmail(payload.email, payload.password);3435actions.updateUserData({ email: payload.email });36}),37};3839export default user;404142