64 lines
3.4 KiB
TypeScript
64 lines
3.4 KiB
TypeScript
import { createElement, lazy } from "react";
|
|
import type { MailDevMailboxUiCapability, MailProfilesUiCapability, PlatformWebModule, QuickAccessToolsUiCapability } from "@govoplan/core-webui";
|
|
import { MailProfilePolicyEditor, MailProfileScopeManager } from "./features/mail/MailProfileManagement";
|
|
import { validateMailPolicy } from "./features/mail/mailPolicyValidation";
|
|
import { mailCredentialReferenceSelectors } from "./features/mail/mailReferenceProviders";
|
|
import { generatedTranslations } from "./i18n/generatedTranslations";
|
|
import MailQuickAccess from "./features/mail/MailQuickAccess";
|
|
import "./styles/mail-profiles.css";
|
|
|
|
const MailboxPage = lazy(() => import("./features/mail/MailboxPage"));
|
|
const MailBouncePage = lazy(() => import("./features/mail/MailBouncePage"));
|
|
const MailLegacyImportPage = lazy(() => import("./features/mail/MailLegacyImportPage"));
|
|
const mailboxRead = ["mail:mailbox:read"];
|
|
const bounceRead = ["mail:bounce:read", "mail:bounce:manage"];
|
|
const legacyImportAccess = ["mail:pop3:import", "mail:pop3:manage"];
|
|
const translations = {
|
|
en: generatedTranslations.en,
|
|
de: generatedTranslations.de
|
|
};
|
|
const mailQuickAccessTools: QuickAccessToolsUiCapability = {
|
|
tools: [
|
|
{
|
|
id: "mail.messages",
|
|
render: (context) => createElement(MailQuickAccess, context)
|
|
}
|
|
]
|
|
};
|
|
|
|
export const mailModule: PlatformWebModule = {
|
|
id: "mail",
|
|
label: "i18n:govoplan-mail.mail.92379cbb",
|
|
version: "1.0.0",
|
|
dependencies: ["access"],
|
|
optionalDependencies: ["addresses", "audit", "notifications"],
|
|
translations,
|
|
viewSurfaces: [
|
|
{ id: "mail.admin.system-servers", moduleId: "mail", kind: "section", label: "System mail servers", order: 70 },
|
|
{ id: "mail.admin.tenant-servers", moduleId: "mail", kind: "section", label: "Tenant mail servers", order: 60 },
|
|
{ id: "mail.admin.group-servers", moduleId: "mail", kind: "section", label: "Group mail servers", order: 20 },
|
|
{ id: "mail.admin.user-servers", moduleId: "mail", kind: "section", label: "User mail servers", order: 20 },
|
|
{ id: "mail.settings.profiles", moduleId: "mail", kind: "section", label: "Personal mail profiles", order: 10 },
|
|
{ id: "mail.quick_access.messages", moduleId: "mail", kind: "quick_access", label: "Mail Quick Access", order: 80 }
|
|
],
|
|
navItems: [
|
|
{ to: "/mail", label: "i18n:govoplan-mail.mail.92379cbb", iconName: "mail", anyOf: mailboxRead, order: 50 },
|
|
{ to: "/mail/legacy-import", label: "Legacy POP3 import", iconName: "mail", anyOf: legacyImportAccess, order: 52 }
|
|
],
|
|
routes: [
|
|
{ path: "/mail", anyOf: mailboxRead, order: 50, render: ({ settings, auth }) => createElement(MailboxPage, { settings, auth }) },
|
|
{ path: "/mail/bounces", anyOf: bounceRead, order: 51, render: ({ settings }) => createElement(MailBouncePage, { settings }) },
|
|
{ path: "/mail/legacy-import", anyOf: legacyImportAccess, order: 52, render: ({ settings, auth }) => createElement(MailLegacyImportPage, { settings, auth }) }],
|
|
|
|
uiCapabilities: {
|
|
"mail.profiles": { MailProfileScopeManager, MailProfilePolicyEditor, validateMailPolicy } satisfies MailProfilesUiCapability,
|
|
"core.credentialReferenceSelectors": mailCredentialReferenceSelectors,
|
|
"quickAccess.tools": mailQuickAccessTools
|
|
},
|
|
runtimeUiCapabilities: {
|
|
"mail.devMailbox": { enabled: true, label: "i18n:govoplan-mail.development_mock_mailbox.1a379865" } satisfies MailDevMailboxUiCapability
|
|
}
|
|
};
|
|
|
|
export default mailModule;
|