refactor(ui): refactor accesses state using zustand store

This commit is contained in:
Fu Diwei
2024-12-11 19:55:50 +08:00
parent b744363736
commit bb3009a124
48 changed files with 359 additions and 404 deletions

View File

@@ -0,0 +1,58 @@
import { create } from "zustand";
import { produce } from "immer";
import { type AccessModel } from "@/domain/access";
import { list as listAccess, save as saveAccess, remove as removeAccess } from "@/repository/access";
export interface AccessState {
accesses: AccessModel[];
createAccess: (access: AccessModel) => void;
updateAccess: (access: AccessModel) => void;
deleteAccess: (access: AccessModel) => void;
fetchAccesses: () => Promise<void>;
}
export const useAccessStore = create<AccessState>((set) => {
return {
accesses: [],
createAccess: async (access) => {
access = await saveAccess(access);
set(
produce((state: AccessState) => {
state.accesses.unshift(access);
})
);
},
updateAccess: async (access) => {
access = await saveAccess(access);
set(
produce((state: AccessState) => {
const index = state.accesses.findIndex((e) => e.id === access.id);
state.accesses[index] = access;
})
);
},
deleteAccess: async (access) => {
await removeAccess(access);
set(
produce((state: AccessState) => {
state.accesses = state.accesses.filter((a) => a.id !== access.id);
})
);
},
fetchAccesses: async () => {
const accesses = await listAccess();
set({
accesses: accesses ?? [],
});
},
};
});

View File

@@ -1,7 +1,7 @@
import { create } from "zustand";
import { produce } from "immer";
import { type EmailsSettingsContent, type Settings } from "@/domain/settings";
import { type EmailsSettingsContent, type SettingsModel } from "@/domain/settings";
import { get as getSettings, save as saveSettings } from "@/repository/settings";
export interface ContactState {
@@ -11,7 +11,7 @@ export interface ContactState {
}
export const useContactStore = create<ContactState>((set) => {
let settings: Settings<EmailsSettingsContent>;
let settings: SettingsModel<EmailsSettingsContent>;
return {
emails: [],

View File

@@ -9,7 +9,7 @@ import {
removeBranch,
removeNode,
updateNode,
Workflow,
WorkflowModel,
WorkflowBranchNode,
WorkflowNode,
WorkflowNodeType,
@@ -17,7 +17,7 @@ import {
import { get as getWorkflow, save as saveWorkflow } from "@/repository/workflow";
export type WorkflowState = {
workflow: Workflow;
workflow: WorkflowModel;
initialized: boolean;
updateNode: (node: WorkflowNode) => void;
addNode: (node: WorkflowNode, preId: string) => void;