fix(ui): duplicate form names
This commit is contained in:
@@ -5,6 +5,7 @@ import { type AccessModel } from "@/domain/access";
|
||||
import { list as listAccess, save as saveAccess, remove as removeAccess } from "@/repository/access";
|
||||
|
||||
export interface AccessState {
|
||||
initialized: boolean;
|
||||
accesses: AccessModel[];
|
||||
createAccess: (access: MaybeModelRecord<AccessModel>) => void;
|
||||
updateAccess: (access: MaybeModelRecordWithId<AccessModel>) => void;
|
||||
@@ -13,7 +14,10 @@ export interface AccessState {
|
||||
}
|
||||
|
||||
export const useAccessStore = create<AccessState>((set) => {
|
||||
let fetcher: Promise<AccessModel[]> | null = null; // 防止多次重复请求
|
||||
|
||||
return {
|
||||
initialized: false,
|
||||
accesses: [],
|
||||
|
||||
createAccess: async (access) => {
|
||||
@@ -50,11 +54,14 @@ export const useAccessStore = create<AccessState>((set) => {
|
||||
},
|
||||
|
||||
fetchAccesses: async () => {
|
||||
const accesses = await listAccess();
|
||||
fetcher ??= listAccess();
|
||||
|
||||
set({
|
||||
accesses: accesses ?? [],
|
||||
});
|
||||
try {
|
||||
const accesses = await fetcher;
|
||||
set({ accesses: accesses ?? [], initialized: true });
|
||||
} finally {
|
||||
fetcher = null;
|
||||
}
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
import { create } from "zustand";
|
||||
import { produce } from "immer";
|
||||
|
||||
import { type EmailsSettingsContent, type SettingsModel } from "@/domain/settings";
|
||||
import { SETTINGS_NAMES, type EmailsSettingsContent, type SettingsModel } from "@/domain/settings";
|
||||
import { get as getSettings, save as saveSettings } from "@/repository/settings";
|
||||
|
||||
export interface ContactState {
|
||||
initialized: boolean;
|
||||
emails: string[];
|
||||
setEmails: (emails: string[]) => void;
|
||||
fetchEmails: () => Promise<void>;
|
||||
}
|
||||
|
||||
export const useContactStore = create<ContactState>((set) => {
|
||||
let settings: SettingsModel<EmailsSettingsContent>;
|
||||
let fetcher: Promise<SettingsModel<EmailsSettingsContent>> | null = null; // 防止多次重复请求
|
||||
let settings: SettingsModel<EmailsSettingsContent>; // 记录当前设置的其他字段,保存回数据库时用
|
||||
|
||||
return {
|
||||
initialized: false,
|
||||
emails: [],
|
||||
|
||||
setEmails: async (emails: string[]) => {
|
||||
settings ??= await getSettings<EmailsSettingsContent>("emails");
|
||||
setEmails: async (emails) => {
|
||||
settings ??= await getSettings<EmailsSettingsContent>(SETTINGS_NAMES.EMAILS);
|
||||
settings = await saveSettings<EmailsSettingsContent>({
|
||||
...settings,
|
||||
content: {
|
||||
@@ -29,16 +32,20 @@ export const useContactStore = create<ContactState>((set) => {
|
||||
set(
|
||||
produce((state: ContactState) => {
|
||||
state.emails = settings.content.emails;
|
||||
state.initialized = true;
|
||||
})
|
||||
);
|
||||
},
|
||||
|
||||
fetchEmails: async () => {
|
||||
settings = await getSettings<EmailsSettingsContent>("emails");
|
||||
fetcher ??= getSettings<EmailsSettingsContent>(SETTINGS_NAMES.EMAILS);
|
||||
|
||||
set({
|
||||
emails: settings.content.emails?.sort() ?? [],
|
||||
});
|
||||
try {
|
||||
settings = await fetcher;
|
||||
set({ emails: settings.content.emails?.sort() ?? [], initialized: true });
|
||||
} finally {
|
||||
fetcher = null;
|
||||
}
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user