intermittent commit
This commit is contained in:
60
webui/src/features/mail/mailProfileEditorModel.ts
Normal file
60
webui/src/features/mail/mailProfileEditorModel.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
export type MailProfileProtocol = "smtp" | "imap";
|
||||
export type MailProfileEditSection = MailProfileProtocol | "advanced";
|
||||
export type MailProfilePanelMode = "all" | "server" | "credentials";
|
||||
|
||||
export type MailProfileEditTarget =
|
||||
| {kind: "create";}
|
||||
| {kind: "profile";}
|
||||
| {kind: "server";protocol: MailProfileProtocol;}
|
||||
| {kind: "credentials";protocol: MailProfileProtocol;};
|
||||
|
||||
export type MailProfileTransportLike = {
|
||||
host?: string | null;
|
||||
};
|
||||
|
||||
export type MailProfileTreeProfileLike = {
|
||||
id: string;
|
||||
imap?: MailProfileTransportLike | null;
|
||||
};
|
||||
|
||||
export type MailProfileChildDescriptor = {
|
||||
kind: "server" | "credential";
|
||||
id: string;
|
||||
protocol: MailProfileProtocol;
|
||||
};
|
||||
|
||||
export function mailProfileChildDescriptors(profile: MailProfileTreeProfileLike): MailProfileChildDescriptor[] {
|
||||
const children: MailProfileChildDescriptor[] = [
|
||||
{ kind: "server", id: `server:${profile.id}:smtp`, protocol: "smtp" },
|
||||
{ kind: "credential", id: `credential:${profile.id}:smtp`, protocol: "smtp" },
|
||||
{ kind: "server", id: `server:${profile.id}:imap`, protocol: "imap" }
|
||||
];
|
||||
if (profile.imap) children.push({ kind: "credential", id: `credential:${profile.id}:imap`, protocol: "imap" });
|
||||
return children;
|
||||
}
|
||||
|
||||
export function mailProfileEditTargetInitialSection(target: MailProfileEditTarget): MailProfileEditSection {
|
||||
if (target.kind === "server" || target.kind === "credentials") return target.protocol;
|
||||
return "smtp";
|
||||
}
|
||||
|
||||
export function mailProfileEditTargetPanelMode(target: MailProfileEditTarget): MailProfilePanelMode | null {
|
||||
if (target.kind === "create") return "all";
|
||||
if (target.kind === "server") return "server";
|
||||
if (target.kind === "credentials") return "credentials";
|
||||
return null;
|
||||
}
|
||||
|
||||
export function mailProfileEditTargetVisibleSections(target: MailProfileEditTarget): MailProfileEditSection[] {
|
||||
if (target.kind === "server" || target.kind === "credentials") return [target.protocol];
|
||||
if (target.kind === "create") return ["smtp", "imap", "advanced"];
|
||||
return [];
|
||||
}
|
||||
|
||||
export function mailProfileEditTargetShowsProfileFields(target: MailProfileEditTarget): boolean {
|
||||
return target.kind === "create" || target.kind === "profile";
|
||||
}
|
||||
|
||||
export function mailProfileEditTargetShowsSettingsPanel(target: MailProfileEditTarget): boolean {
|
||||
return target.kind !== "profile";
|
||||
}
|
||||
Reference in New Issue
Block a user