import { Action, Thunk, action, createContextStore, thunk } from 'easy-peasy' import isEqual from 'react-fast-compare' import { AdminServerBuild, getServer } from '@/api/admin/servers/getServer' export interface ServerDataStore { data?: AdminServerBuild setServer: Action getServer: Thunk } const server: ServerDataStore = { data: undefined, setServer: action((state, payload) => { if (!isEqual(payload, state.data)) { state.data = payload } }), getServer: thunk(async (actions, uuid) => { const server = await getServer(uuid) actions.setServer(server) }), } interface ServerStore { server: ServerDataStore clearServerState: Action } export const AdminServerContext = createContextStore({ server, clearServerState: action(state => { state.server.data = undefined }), })