import type { UserStoreState, UserStore } from '#lib/types' import { DEFAULT_USER } from '#lib/constants' import { defineStore } from 'pinia' import { AppStoreEnum } from '#lib/enums' import { persistedState } from '#imports' import cloneDeep from 'lodash/cloneDeep' export const useUserStore = defineStore(AppStoreEnum.User, { state: (): UserStoreState => ({ data: cloneDeep(DEFAULT_USER), }), persist: { storage: persistedState.localStorage, }, actions: { setAvatar(avatar: number) { this.data.avatar = avatar }, setFullname(fullname: string) { this.data.fullname = fullname }, setEmail(email: string) { this.data.email = email }, setPhone(phone: string) { this.data.phone = phone }, setUser(user: UserStore) { this.data = user }, resetUser() { this.data = cloneDeep(DEFAULT_USER) }, getSubWalletUser(): number { return this.data?.wallet?.subBalance ?? 0 }, getTotalBalance(): number { return this.data?.wallet?.balance + this.data?.wallet?.subBalance }, getBalance(): number { return this.data?.wallet?.balance }, }, })