refactor: rename Timeout to PropagationTimeout during ACME DNS-01 authentication

This commit is contained in:
Fu Diwei
2024-12-27 09:50:54 +08:00
parent dae6ad2951
commit 77537e7005
24 changed files with 127 additions and 180 deletions

View File

@@ -10,9 +10,9 @@ export interface AccessState {
loadedAtOnce: boolean;
fetchAccesses: () => Promise<void>;
createAccess: (access: MaybeModelRecord<AccessModel>) => Promise<void>;
updateAccess: (access: MaybeModelRecordWithId<AccessModel>) => Promise<void>;
deleteAccess: (access: MaybeModelRecordWithId<AccessModel>) => Promise<void>;
createAccess: (access: MaybeModelRecord<AccessModel>) => Promise<AccessModel>;
updateAccess: (access: MaybeModelRecordWithId<AccessModel>) => Promise<AccessModel>;
deleteAccess: (access: MaybeModelRecordWithId<AccessModel>) => Promise<AccessModel>;
}
export const useAccessStore = create<AccessState>((set) => {
@@ -25,17 +25,17 @@ export const useAccessStore = create<AccessState>((set) => {
createAccess: async (access) => {
const record = await saveAccess(access);
set(
produce((state: AccessState) => {
state.accesses.unshift(record);
})
);
return record as AccessModel;
},
updateAccess: async (access) => {
const record = await saveAccess(access);
set(
produce((state: AccessState) => {
const index = state.accesses.findIndex((e) => e.id === record.id);
@@ -44,16 +44,19 @@ export const useAccessStore = create<AccessState>((set) => {
}
})
);
return record as AccessModel;
},
deleteAccess: async (access) => {
await removeAccess(access);
set(
produce((state: AccessState) => {
state.accesses = state.accesses.filter((a) => a.id !== access.id);
})
);
return access as AccessModel;
},
fetchAccesses: async () => {

View File

@@ -11,9 +11,11 @@ export interface ContactState {
fetchEmails: () => Promise<void>;
setEmails: (emails: string[]) => Promise<void>;
addEmail: (email: string) => Promise<void>;
removeEmail: (email: string) => Promise<void>;
}
export const useContactStore = create<ContactState>((set) => {
export const useContactStore = create<ContactState>((set, get) => {
let fetcher: Promise<SettingsModel<EmailsSettingsContent>> | null = null; // 防止多次重复请求
let settings: SettingsModel<EmailsSettingsContent>; // 记录当前设置的其他字段,保存回数据库时用
@@ -34,12 +36,29 @@ export const useContactStore = create<ContactState>((set) => {
set(
produce((state: ContactState) => {
state.emails = settings.content.emails;
state.emails = settings.content.emails?.sort() ?? [];
state.loadedAtOnce = true;
})
);
},
addEmail: async (email) => {
const emails = produce(get().emails, (draft) => {
if (draft.includes(email)) return;
draft.push(email);
draft.sort();
});
get().setEmails(emails);
},
removeEmail: async (email) => {
const emails = produce(get().emails, (draft) => {
draft = draft.filter((e) => e !== email);
draft.sort();
});
get().setEmails(emails);
},
fetchEmails: async () => {
fetcher ??= getSettings<EmailsSettingsContent>(SETTINGS_NAMES.EMAILS);