PHP Classes

File: client/src/app/stores/UserStore.ts

Recommend this page to a friend!
  Classes of mohammad anzawi   PHP Wallet API and Application   client/src/app/stores/UserStore.ts   Download  
File: client/src/app/stores/UserStore.ts
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: PHP Wallet API and Application
Application to manage a wallet by calling an API
Author: By
Last change:
Date: 2 years ago
Size: 3,594 bytes
 

Contents

Class file image Download
import {RegisterFormValues, User, UserFormValues} from "../models/User"; import {makeAutoObservable, runInAction} from "mobx"; import agent from "../api/agent"; import {store} from "./store"; import {history} from "../helpers"; import Transaction from "../models/Transaction"; import {Wallet} from "../models/Wallet"; export default class UserStore { user: User | null = null allUsers: User[] = [] wallet: Wallet | null = null transactions: Transaction[] = [] constructor() { return makeAutoObservable(this); } /** * return true if user logged-in / false if not */ get isLoggedin() { return !!this.user } /** * login user * @param creds */ login = async (creds: UserFormValues) => { try { const user = await agent.Users.login(creds) runInAction(() => { store.commonStore.setToken(user.token) this.user = user; }) history.push('/dashboard') } catch (err) { throw err } } /** * logout user */ logout = async () => { try { await agent.Users.logout() store.commonStore.setToken(null) runInAction(() => { runInAction(() => { this.user = null; }) window.localStorage.removeItem('jwt') }) history.push('/') } catch (err) { throw err } } /** * register user * @param values */ register = async (values: RegisterFormValues) => { try { await agent.Users.register(values) history.push('/') } catch (err) { throw err } } /** * get logged-in user details */ getCurrentUser = async () => { try { const user = await agent.Users.current() runInAction(() => { this.user = user }) } catch (err) { throw err } } /** * get all users */ listUsers = async () => { try { const users = await agent.Users.list() runInAction(() => { this.allUsers = users }) } catch (err) { throw err } } /** * block user or unblock him * @param email */ blockUnblock = async (email: string) => { try { await agent.Users.blockUnblock(email) runInAction(() => { const index = this.allUsers.findIndex(x => x.email === email); this.allUsers[index].blocked = !this.allUsers[index].blocked }) } catch (err) { throw err } } /** * get user wallet details */ getUserWallet = async () => { try { const wallet = await agent.Users.wallet() runInAction(() => { this.wallet = wallet }) } catch (err) { throw err } } /** * get user transactions */ getUserTransaction = async () => { try { const transactions = await agent.Users.transaction() runInAction(() => { this.transactions = transactions }) } catch (err) { throw err } } /** * return true if logged-in user is admin / false if not */ get isAdmin () { return this.isLoggedin && this.user?.is_admin } }