@rapidmx/web-client 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +415 -381
- package/apps/admin/_layout.tsx +2 -2
- package/apps/admin/audit-log/index.tsx +4 -4
- package/apps/admin/branding/index.tsx +39 -39
- package/apps/admin/data-requests/index.tsx +482 -482
- package/apps/admin/distribution-lists/[uid].tsx +3 -3
- package/apps/admin/distribution-lists/index.tsx +4 -4
- package/apps/admin/distribution-lists/new/index.tsx +5 -5
- package/apps/admin/domains/[uid].tsx +166 -166
- package/apps/admin/domains/index.tsx +4 -4
- package/apps/admin/domains/new/index.tsx +5 -5
- package/apps/admin/encryption-policy/index.tsx +1 -1
- package/apps/admin/escrow-scopes/[uid].tsx +350 -350
- package/apps/admin/escrow-scopes/index.tsx +4 -4
- package/apps/admin/escrow-scopes/new/index.tsx +5 -5
- package/apps/admin/index.tsx +129 -129
- package/apps/admin/ingest-queue/index.tsx +4 -4
- package/apps/admin/mailbox-policy/index.tsx +1 -1
- package/apps/admin/mailboxes/[uid].tsx +271 -271
- package/apps/admin/mailboxes/new/index.tsx +30 -30
- package/apps/admin/plugins/index.tsx +15 -15
- package/apps/admin/quarantine/index.tsx +5 -5
- package/apps/admin/retention-policy/index.tsx +39 -39
- package/apps/admin/signing-certificates/index.tsx +343 -343
- package/apps/admin/transport-rules/[uid].tsx +5 -5
- package/apps/admin/transport-rules/_transportRuleConfig.tsx +3 -3
- package/apps/admin/transport-rules/index.tsx +4 -4
- package/apps/admin/transport-rules/new/index.tsx +5 -5
- package/apps/escrow/_layout.tsx +1 -1
- package/apps/escrow/audit-log/index.tsx +196 -196
- package/apps/escrow/index.tsx +4 -4
- package/apps/escrow/matters/[uid].tsx +621 -621
- package/apps/escrow/matters/new/index.tsx +6 -6
- package/apps/shared/appearance/AppearanceForm.tsx +3 -3
- package/apps/shared/appearance/AppearanceHead.tsx +1 -1
- package/apps/shared/appearance/AppearanceProvider.tsx +3 -3
- package/apps/shared/appearance/appearanceCache.ts +1 -1
- package/apps/shared/appearance/appearanceContext.ts +1 -1
- package/apps/shared/appearance/theme.ts +1 -1
- package/apps/shared/auth/adminAccess.ts +99 -99
- package/apps/shared/calendar/bookingPlugin.ts +1 -1
- package/apps/shared/calendar/calendarLiveUpdates.ts +1 -1
- package/apps/shared/calendar/calendarReminders.ts +1 -1
- package/apps/shared/calendar/useCalendarReminders.ts +1 -1
- package/apps/shared/components/admin/diagnostics/DiagnosticsManager.tsx +1 -1
- package/apps/shared/components/admin/diagnostics/InstalledPlugins.tsx +2 -2
- package/apps/shared/components/admin/diagnostics/LogsPanel.tsx +2 -2
- package/apps/shared/components/admin/diagnostics/PackagesTable.tsx +1 -1
- package/apps/shared/components/admin/diagnostics/RuntimePanel.tsx +1 -1
- package/apps/shared/components/admin/diagnostics/SystemPanel.tsx +2 -2
- package/apps/shared/components/admin/diagnostics/VersionsPanel.tsx +1 -1
- package/apps/shared/components/admin/diagnostics/diagnosticsApi.ts +1 -1
- package/apps/shared/components/admin/diagnostics/format.ts +1 -1
- package/apps/shared/components/admin/diagnostics/logClient.ts +1 -1
- package/apps/shared/components/admin/distributionLists/MemberListCard.tsx +4 -4
- package/apps/shared/components/admin/elevation.ts +1 -1
- package/apps/shared/components/admin/escrowScopes/EscrowScopeKeyAndHoldersFields.tsx +3 -3
- package/apps/shared/components/admin/layout/AdminShell.tsx +384 -384
- package/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.tsx +238 -238
- package/apps/shared/components/admin/mailboxes/EscrowScopeCard.tsx +154 -152
- package/apps/shared/components/admin/mailboxes/LeftoverMailboxesSection.tsx +194 -194
- package/apps/shared/components/admin/mailboxes/MailboxTable.tsx +1 -1
- package/apps/shared/components/admin/mailboxes/ResourceSettingsCard.tsx +19 -14
- package/apps/shared/components/admin/mailboxes/ShareAccessCard.tsx +5 -5
- package/apps/shared/components/admin/settings/BrandingForm.tsx +423 -423
- package/apps/shared/components/admin/settings/DomainDnsSetup.tsx +5 -5
- package/apps/shared/components/admin/settings/EncryptionPolicyForm.tsx +119 -119
- package/apps/shared/components/admin/settings/LoadedSettingsForm.tsx +2 -2
- package/apps/shared/components/admin/settings/MailboxCreateForm.tsx +32 -27
- package/apps/shared/components/admin/settings/MailboxPolicyForm.tsx +198 -198
- package/apps/shared/components/admin/settings/PluginsManager.tsx +2093 -2093
- package/apps/shared/components/admin/settings/RetentionPolicyForm.tsx +182 -182
- package/apps/shared/components/admin/setup/EscrowSetupStep.tsx +288 -288
- package/apps/shared/components/admin/setup/SetupWizard.tsx +450 -446
- package/apps/shared/components/admin/signOut.ts +1 -1
- package/apps/shared/components/admin/usePagedList.tsx +129 -129
- package/apps/shared/components/calendar/AppointmentQuickForm.tsx +3 -3
- package/apps/shared/components/calendar/CalendarListSidebar.tsx +3 -3
- package/apps/shared/components/calendar/DescriptionEditor.tsx +1 -1
- package/apps/shared/components/calendar/EventDescriptionView.tsx +1 -1
- package/apps/shared/components/calendar/EventDetails.tsx +16 -14
- package/apps/shared/components/calendar/EventEditor.tsx +54 -39
- package/apps/shared/components/calendar/EventExpandedForm.tsx +3 -3
- package/apps/shared/components/calendar/EventFormParts.tsx +2 -2
- package/apps/shared/components/calendar/EventModal.tsx +206 -206
- package/apps/shared/components/calendar/EventQuickForm.tsx +3 -3
- package/apps/shared/components/calendar/EventShell.tsx +1 -1
- package/apps/shared/components/calendar/FindATime.tsx +6 -4
- package/apps/shared/components/calendar/GuestInput.tsx +2 -2
- package/apps/shared/components/calendar/MonthView.tsx +185 -185
- package/apps/shared/components/calendar/QuickCreateFaces.tsx +1 -1
- package/apps/shared/components/calendar/QuickFaceFrame.tsx +1 -1
- package/apps/shared/components/calendar/RecurrenceEditor.tsx +227 -227
- package/apps/shared/components/calendar/RequestChangeForm.tsx +8 -6
- package/apps/shared/components/calendar/ResourcePicker.tsx +7 -5
- package/apps/shared/components/calendar/SplitDayView.tsx +144 -144
- package/apps/shared/components/calendar/TaskQuickForm.tsx +23 -18
- package/apps/shared/components/calendar/TimeGridView.tsx +246 -246
- package/apps/shared/components/calendar/allDay.ts +124 -124
- package/apps/shared/components/calendar/eventDialogFields.ts +3 -3
- package/apps/shared/components/calendar/eventForm.ts +3 -3
- package/apps/shared/components/calendar/eventFormat.ts +3 -3
- package/apps/shared/components/calendar/findTimeGrid.ts +2 -2
- package/apps/shared/components/calendar/layout/CalendarShell.tsx +11 -9
- package/apps/shared/components/contacts/ContactDetailPane.tsx +4 -4
- package/apps/shared/components/contacts/ContactForm.tsx +393 -383
- package/apps/shared/components/contacts/ContactsSidebar.tsx +7 -5
- package/apps/shared/components/contacts/ContactsToolbar.tsx +103 -103
- package/apps/shared/components/contacts/KeyChangeReview.tsx +5 -5
- package/apps/shared/components/contacts/contactKeys.ts +3 -3
- package/apps/shared/components/contacts/layout/ContactsShell.tsx +9 -7
- package/apps/shared/components/escrow/layout/EscrowShell.tsx +155 -155
- package/apps/shared/components/forms/StringListField.tsx +1 -1
- package/apps/shared/components/layout/AppShell.tsx +465 -461
- package/apps/shared/components/layout/BrandingChrome.tsx +1 -1
- package/apps/shared/components/layout/KeyEnrollmentGate.tsx +398 -398
- package/apps/shared/components/layout/MailboxProvisioning.tsx +170 -168
- package/apps/shared/components/layout/RecoveryCodeUnlock.tsx +9 -9
- package/apps/shared/components/layout/ResponsiveToolbar.tsx +315 -315
- package/apps/shared/components/layout/ThemeSwitch.tsx +84 -84
- package/apps/shared/components/layout/UnlockPromptProvider.tsx +6 -6
- package/apps/shared/components/layout/UserMenu.tsx +441 -439
- package/apps/shared/components/mail/ConversationList.tsx +334 -332
- package/apps/shared/components/mail/ConversationThreadPane.tsx +624 -613
- package/apps/shared/components/mail/InviteCard.tsx +11 -9
- package/apps/shared/components/mail/LazyReadingPane.tsx +2 -2
- package/apps/shared/components/mail/MailAddress.tsx +1 -1
- package/apps/shared/components/mail/MailListToolbar.tsx +2 -2
- package/apps/shared/components/mail/MailSelectionBar.tsx +240 -240
- package/apps/shared/components/mail/MenuButton.tsx +404 -404
- package/apps/shared/components/mail/MessageDetailPane.tsx +1759 -1757
- package/apps/shared/components/mail/MoveToFolderDialog.tsx +8 -6
- package/apps/shared/components/mail/OutboxRowStatus.tsx +1 -1
- package/apps/shared/components/mail/PermanentDeleteDialog.tsx +2 -2
- package/apps/shared/components/mail/compose/ComposeContext.tsx +323 -312
- package/apps/shared/components/mail/compose/ComposeToolbar.tsx +422 -422
- package/apps/shared/components/mail/compose/ComposeWindow.tsx +1709 -1681
- package/apps/shared/components/mail/compose/ComposeWindowPlaceholder.tsx +4 -4
- package/apps/shared/components/mail/compose/EmojiPicker.tsx +2 -2
- package/apps/shared/components/mail/compose/GifPicker.tsx +3 -3
- package/apps/shared/components/mail/compose/RecipientInput.tsx +1 -1
- package/apps/shared/components/mail/compose/RichTextEditor.tsx +147 -147
- package/apps/shared/components/mail/compose/ScheduleSendPicker.tsx +1 -1
- package/apps/shared/components/mail/compose/composeFlushRegistry.ts +60 -60
- package/apps/shared/components/mail/compose/encryptionRequirement.ts +2 -2
- package/apps/shared/components/mail/compose/quotedBody.ts +161 -161
- package/apps/shared/components/mail/compose/recipients.ts +1 -1
- package/apps/shared/components/mail/invite/InviteRowChip.tsx +2 -2
- package/apps/shared/components/mail/invite/InviteRsvpPopover.tsx +9 -7
- package/apps/shared/components/mail/invite/InviteTimeline.tsx +1 -1
- package/apps/shared/components/mail/invite/ProposeTimeForm.tsx +2 -2
- package/apps/shared/components/mail/invite/inviteFormat.ts +2 -2
- package/apps/shared/components/mail/invite/inviteStore.ts +14 -6
- package/apps/shared/components/mail/labelMenu.tsx +9 -7
- package/apps/shared/components/mail/layout/MailShell.tsx +4 -4
- package/apps/shared/components/mail/listPreferences.ts +2 -2
- package/apps/shared/components/mail/pinnedSigners.ts +45 -19
- package/apps/shared/components/mail/reading/EncryptedBody.tsx +2 -2
- package/apps/shared/components/mail/reading/MessageBody.tsx +6 -6
- package/apps/shared/components/mail/reading/MessageCard.tsx +3 -3
- package/apps/shared/components/mail/reading/MessageMoreMenu.tsx +258 -258
- package/apps/shared/components/mail/reading/MessageSourceDialog.tsx +79 -79
- package/apps/shared/components/mail/reading/PendingMessageCard.tsx +1 -1
- package/apps/shared/components/mail/reading/bodyContent.ts +3 -3
- package/apps/shared/components/mail/reading/bodyHtml.ts +1 -1
- package/apps/shared/components/mail/reading/messageExport.ts +59 -59
- package/apps/shared/components/mail/reading/printMessage.ts +99 -99
- package/apps/shared/components/mail/reading/useMessageActions.ts +450 -443
- package/apps/shared/components/mail/unreadStyle.tsx +1 -1
- package/apps/shared/components/mail/verificationSeals.ts +129 -125
- package/apps/shared/components/mail/writableMailboxes.ts +14 -7
- package/apps/shared/components/rules/RuleBuilder.tsx +311 -311
- package/apps/shared/components/settings/SigningCertificateCard.tsx +344 -344
- package/apps/shared/components/settings/layout/SettingsShell.tsx +8 -6
- package/apps/shared/components/sharing/PrincipalListField.tsx +1 -1
- package/apps/shared/components/sharing/PrincipalPicker.tsx +1 -1
- package/apps/shared/components/sharing/PrincipalResolver.tsx +4 -4
- package/apps/shared/components/tasks/TasksSidebar.tsx +7 -5
- package/apps/shared/components/tasks/layout/TasksShell.tsx +9 -7
- package/apps/shared/keyboard/GlobalShortcuts.tsx +51 -51
- package/apps/shared/keyboard/ShortcutProvider.tsx +62 -62
- package/apps/shared/keyboard/ShortcutsDialog.tsx +84 -84
- package/apps/shared/keyboard/dispatch.ts +124 -124
- package/apps/shared/keyboard/format.ts +89 -89
- package/apps/shared/keyboard/keymap.ts +114 -114
- package/apps/shared/keyboard/registry.ts +65 -65
- package/apps/shared/keyboard/targets.ts +79 -79
- package/apps/shared/mail/findWellKnownFolderUid.ts +6 -4
- package/apps/shared/mail/folderCounts.ts +8 -4
- package/apps/shared/mail/folderOfType.ts +51 -49
- package/apps/shared/mail/folderTree.ts +143 -143
- package/apps/shared/mail/listAllPages.ts +39 -39
- package/apps/shared/mail/listSnapshots.ts +2 -2
- package/apps/shared/mail/messageReadState.ts +6 -5
- package/apps/shared/mail/newMailNotifications.ts +171 -171
- package/apps/shared/mail/outbox/composeBridge.ts +2 -2
- package/apps/shared/mail/outbox/outboxState.ts +1 -1
- package/apps/shared/mail/outbox/outgoingReplies.ts +2 -2
- package/apps/shared/mail/outbox/sendDecision.ts +2 -2
- package/apps/shared/mail/outbox/sendJob.ts +450 -445
- package/apps/shared/mail/outbox/sendOutcomes.ts +160 -155
- package/apps/shared/mail/outbox/useOutboxStatus.ts +5 -3
- package/apps/shared/mail/permanentDelete.ts +8 -7
- package/apps/shared/mail/primaryMailbox.ts +1 -1
- package/apps/shared/mail/reportNotices.ts +66 -66
- package/apps/shared/mail/senderBlocking.ts +157 -141
- package/apps/shared/mail/useMailConnection.ts +207 -205
- package/apps/shared/mail/useMailLiveUpdates.ts +277 -277
- package/apps/shared/mail/useMailboxUpdateAccess.ts +84 -60
- package/apps/shared/mail/useMarkMessageRead.ts +54 -47
- package/apps/shared/mail/useNewMailNotifications.ts +178 -178
- package/apps/shared/mail/usePermanentDelete.tsx +5 -3
- package/apps/shared/navigation/pageTitle.ts +1 -1
- package/apps/shared/notifications/NotificationCenter.tsx +1 -1
- package/apps/shared/notifications/NotificationHistoryDialog.tsx +2 -2
- package/apps/shared/notifications/apiErrors.ts +2 -2
- package/apps/shared/notifications/pushStatus.ts +1 -1
- package/apps/shared/notifications/store.ts +560 -560
- package/apps/shared/notifications/systemErrors.ts +1 -1
- package/apps/shared/search/LocalIndexLifecycle.tsx +120 -114
- package/apps/shared/search/crossMailboxSearch.ts +3 -3
- package/apps/shared/search/localIndexBuilder.ts +493 -481
- package/apps/shared/search/localIndexKey.ts +1 -1
- package/apps/shared/search/localIndexRpcClient.ts +150 -30
- package/apps/shared/search/localIndexTransport.ts +84 -0
- package/apps/shared/search/localIndexWorker.ts +1 -1
- package/apps/shared/search/searchTier2.ts +3 -3
- package/apps/shared/signing/enrollmentStorage.ts +33 -33
- package/apps/shared/signing/enrollmentTracker.ts +385 -385
- package/apps/shared/signing/enrollmentView.ts +251 -251
- package/apps/shared/signing/signingInfo.ts +1 -1
- package/apps/shared/signing/useNow.ts +19 -19
- package/apps/shared/signing/useSigningEnrollmentWatcher.ts +92 -90
- package/apps/shared/styles/app.css +387 -396
- package/apps/www/_layout.tsx +2 -2
- package/apps/www/calendar/index.tsx +583 -581
- package/apps/www/contacts/[uid].tsx +114 -112
- package/apps/www/contacts/index.tsx +19 -17
- package/apps/www/index.tsx +3021 -3012
- package/apps/www/messages/[uid].tsx +141 -139
- package/apps/www/settings/auto-reply/index.tsx +138 -136
- package/apps/www/settings/blocked-senders/index.tsx +305 -303
- package/apps/www/settings/encryption/index.tsx +1296 -1290
- package/apps/www/settings/filters/[uid].tsx +184 -179
- package/apps/www/settings/filters/_mailFilterRuleConfig.tsx +2 -2
- package/apps/www/settings/filters/index.tsx +105 -105
- package/apps/www/settings/filters/new/index.tsx +167 -165
- package/apps/www/settings/labels/index.tsx +209 -207
- package/apps/www/settings/privacy/index.tsx +499 -495
- package/apps/www/settings/profile/index.tsx +256 -251
- package/apps/www/settings/read-receipts/index.tsx +155 -150
- package/apps/www/settings/sharing/index.tsx +259 -259
- package/apps/www/settings/signatures/[uid].tsx +175 -175
- package/apps/www/settings/signatures/index.tsx +91 -91
- package/apps/www/settings/signatures/new/index.tsx +138 -138
- package/apps/www/settings/signatures/signatureDefaults.ts +1 -1
- package/apps/www/tasks/index.tsx +659 -654
- package/dist/apps/admin/_layout.d.ts +1 -1
- package/dist/apps/admin/_layout.js +1 -1
- package/dist/apps/admin/audit-log/index.d.ts +1 -1
- package/dist/apps/admin/audit-log/index.js +4 -4
- package/dist/apps/admin/branding/index.js +3 -3
- package/dist/apps/admin/data-requests/index.js +8 -8
- package/dist/apps/admin/distribution-lists/[uid].js +3 -3
- package/dist/apps/admin/distribution-lists/index.js +4 -4
- package/dist/apps/admin/distribution-lists/new/index.js +5 -5
- package/dist/apps/admin/domains/[uid].js +6 -6
- package/dist/apps/admin/domains/index.js +4 -4
- package/dist/apps/admin/domains/new/index.js +5 -5
- package/dist/apps/admin/encryption-policy/index.js +1 -1
- package/dist/apps/admin/escrow-scopes/[uid].d.ts +1 -1
- package/dist/apps/admin/escrow-scopes/[uid].js +7 -7
- package/dist/apps/admin/escrow-scopes/index.js +4 -4
- package/dist/apps/admin/escrow-scopes/new/index.js +5 -5
- package/dist/apps/admin/index.js +6 -6
- package/dist/apps/admin/ingest-queue/index.js +4 -4
- package/dist/apps/admin/mailbox-policy/index.js +1 -1
- package/dist/apps/admin/mailboxes/[uid].js +5 -5
- package/dist/apps/admin/quarantine/index.js +5 -5
- package/dist/apps/admin/retention-policy/index.js +3 -3
- package/dist/apps/admin/signing-certificates/index.js +5 -5
- package/dist/apps/admin/transport-rules/[uid].js +5 -5
- package/dist/apps/admin/transport-rules/_transportRuleConfig.d.ts +1 -1
- package/dist/apps/admin/transport-rules/_transportRuleConfig.js +2 -2
- package/dist/apps/admin/transport-rules/index.js +4 -4
- package/dist/apps/admin/transport-rules/new/index.js +5 -5
- package/dist/apps/escrow/_layout.d.ts +1 -1
- package/dist/apps/escrow/audit-log/index.d.ts +1 -1
- package/dist/apps/escrow/audit-log/index.js +4 -4
- package/dist/apps/escrow/index.js +4 -4
- package/dist/apps/escrow/matters/[uid].js +10 -10
- package/dist/apps/escrow/matters/new/index.js +6 -6
- package/dist/apps/shared/appearance/AppearanceForm.js +3 -3
- package/dist/apps/shared/appearance/AppearanceHead.js +1 -1
- package/dist/apps/shared/appearance/AppearanceProvider.d.ts +1 -1
- package/dist/apps/shared/appearance/AppearanceProvider.js +3 -3
- package/dist/apps/shared/appearance/appearanceCache.d.ts +1 -1
- package/dist/apps/shared/appearance/appearanceCache.js +1 -1
- package/dist/apps/shared/appearance/appearanceContext.d.ts +1 -1
- package/dist/apps/shared/appearance/theme.d.ts +1 -1
- package/dist/apps/shared/auth/adminAccess.js +1 -1
- package/dist/apps/shared/calendar/bookingPlugin.js +1 -1
- package/dist/apps/shared/calendar/calendarLiveUpdates.d.ts +1 -1
- package/dist/apps/shared/calendar/calendarReminders.d.ts +1 -1
- package/dist/apps/shared/calendar/useCalendarReminders.js +1 -1
- package/dist/apps/shared/components/admin/diagnostics/DiagnosticsManager.js +1 -1
- package/dist/apps/shared/components/admin/diagnostics/InstalledPlugins.d.ts +1 -1
- package/dist/apps/shared/components/admin/diagnostics/InstalledPlugins.js +2 -2
- package/dist/apps/shared/components/admin/diagnostics/LogsPanel.js +2 -2
- package/dist/apps/shared/components/admin/diagnostics/PackagesTable.js +1 -1
- package/dist/apps/shared/components/admin/diagnostics/RuntimePanel.js +1 -1
- package/dist/apps/shared/components/admin/diagnostics/SystemPanel.js +2 -2
- package/dist/apps/shared/components/admin/diagnostics/VersionsPanel.js +1 -1
- package/dist/apps/shared/components/admin/diagnostics/diagnosticsApi.js +1 -1
- package/dist/apps/shared/components/admin/diagnostics/format.js +1 -1
- package/dist/apps/shared/components/admin/diagnostics/logClient.js +1 -1
- package/dist/apps/shared/components/admin/distributionLists/MemberListCard.d.ts +1 -1
- package/dist/apps/shared/components/admin/distributionLists/MemberListCard.js +4 -4
- package/dist/apps/shared/components/admin/elevation.js +1 -1
- package/dist/apps/shared/components/admin/escrowScopes/EscrowScopeKeyAndHoldersFields.js +3 -3
- package/dist/apps/shared/components/admin/layout/AdminShell.d.ts +1 -1
- package/dist/apps/shared/components/admin/layout/AdminShell.js +8 -8
- package/dist/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.d.ts +1 -1
- package/dist/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.js +6 -6
- package/dist/apps/shared/components/admin/mailboxes/EscrowScopeCard.d.ts +1 -1
- package/dist/apps/shared/components/admin/mailboxes/EscrowScopeCard.js +10 -8
- package/dist/apps/shared/components/admin/mailboxes/LeftoverMailboxesSection.js +4 -4
- package/dist/apps/shared/components/admin/mailboxes/MailboxTable.d.ts +1 -1
- package/dist/apps/shared/components/admin/mailboxes/ResourceSettingsCard.d.ts +1 -1
- package/dist/apps/shared/components/admin/mailboxes/ResourceSettingsCard.js +7 -5
- package/dist/apps/shared/components/admin/mailboxes/ShareAccessCard.js +5 -5
- package/dist/apps/shared/components/admin/settings/BrandingForm.d.ts +1 -1
- package/dist/apps/shared/components/admin/settings/BrandingForm.js +8 -8
- package/dist/apps/shared/components/admin/settings/DomainDnsSetup.d.ts +1 -1
- package/dist/apps/shared/components/admin/settings/DomainDnsSetup.js +5 -5
- package/dist/apps/shared/components/admin/settings/EncryptionPolicyForm.d.ts +1 -1
- package/dist/apps/shared/components/admin/settings/EncryptionPolicyForm.js +4 -4
- package/dist/apps/shared/components/admin/settings/LoadedSettingsForm.js +2 -2
- package/dist/apps/shared/components/admin/settings/MailboxCreateForm.d.ts +1 -1
- package/dist/apps/shared/components/admin/settings/MailboxCreateForm.js +14 -12
- package/dist/apps/shared/components/admin/settings/MailboxPolicyForm.d.ts +1 -1
- package/dist/apps/shared/components/admin/settings/MailboxPolicyForm.js +4 -4
- package/dist/apps/shared/components/admin/settings/PluginsManager.js +5 -5
- package/dist/apps/shared/components/admin/settings/RetentionPolicyForm.d.ts +1 -1
- package/dist/apps/shared/components/admin/settings/RetentionPolicyForm.js +5 -5
- package/dist/apps/shared/components/admin/setup/EscrowSetupStep.js +7 -7
- package/dist/apps/shared/components/admin/setup/SetupWizard.js +26 -22
- package/dist/apps/shared/components/admin/signOut.js +1 -1
- package/dist/apps/shared/components/admin/usePagedList.js +2 -2
- package/dist/apps/shared/components/calendar/AppointmentQuickForm.js +3 -3
- package/dist/apps/shared/components/calendar/CalendarListSidebar.d.ts +1 -1
- package/dist/apps/shared/components/calendar/CalendarListSidebar.js +2 -2
- package/dist/apps/shared/components/calendar/DescriptionEditor.js +1 -1
- package/dist/apps/shared/components/calendar/EventDescriptionView.js +1 -1
- package/dist/apps/shared/components/calendar/EventDetails.d.ts +2 -2
- package/dist/apps/shared/components/calendar/EventDetails.js +16 -14
- package/dist/apps/shared/components/calendar/EventEditor.d.ts +2 -2
- package/dist/apps/shared/components/calendar/EventEditor.js +22 -20
- package/dist/apps/shared/components/calendar/EventExpandedForm.js +2 -2
- package/dist/apps/shared/components/calendar/EventFormParts.d.ts +1 -1
- package/dist/apps/shared/components/calendar/EventFormParts.js +1 -1
- package/dist/apps/shared/components/calendar/EventModal.d.ts +2 -2
- package/dist/apps/shared/components/calendar/EventModal.js +3 -3
- package/dist/apps/shared/components/calendar/EventQuickForm.js +3 -3
- package/dist/apps/shared/components/calendar/EventShell.js +1 -1
- package/dist/apps/shared/components/calendar/FindATime.js +6 -4
- package/dist/apps/shared/components/calendar/GuestInput.d.ts +2 -2
- package/dist/apps/shared/components/calendar/MonthView.d.ts +1 -1
- package/dist/apps/shared/components/calendar/MonthView.js +1 -1
- package/dist/apps/shared/components/calendar/QuickCreateFaces.js +1 -1
- package/dist/apps/shared/components/calendar/QuickFaceFrame.js +1 -1
- package/dist/apps/shared/components/calendar/RecurrenceEditor.d.ts +1 -1
- package/dist/apps/shared/components/calendar/RecurrenceEditor.js +1 -1
- package/dist/apps/shared/components/calendar/RequestChangeForm.js +8 -6
- package/dist/apps/shared/components/calendar/ResourcePicker.d.ts +1 -1
- package/dist/apps/shared/components/calendar/ResourcePicker.js +7 -5
- package/dist/apps/shared/components/calendar/SplitDayView.d.ts +1 -1
- package/dist/apps/shared/components/calendar/TaskQuickForm.d.ts +1 -1
- package/dist/apps/shared/components/calendar/TaskQuickForm.js +9 -7
- package/dist/apps/shared/components/calendar/TimeGridView.d.ts +1 -1
- package/dist/apps/shared/components/calendar/TimeGridView.js +1 -1
- package/dist/apps/shared/components/calendar/allDay.d.ts +2 -2
- package/dist/apps/shared/components/calendar/allDay.js +1 -1
- package/dist/apps/shared/components/calendar/eventDialogFields.d.ts +2 -2
- package/dist/apps/shared/components/calendar/eventDialogFields.js +2 -2
- package/dist/apps/shared/components/calendar/eventForm.d.ts +3 -3
- package/dist/apps/shared/components/calendar/eventFormat.d.ts +1 -1
- package/dist/apps/shared/components/calendar/eventFormat.js +2 -2
- package/dist/apps/shared/components/calendar/findTimeGrid.d.ts +1 -1
- package/dist/apps/shared/components/calendar/findTimeGrid.js +1 -1
- package/dist/apps/shared/components/calendar/layout/CalendarShell.d.ts +1 -1
- package/dist/apps/shared/components/calendar/layout/CalendarShell.js +11 -9
- package/dist/apps/shared/components/contacts/ContactDetailPane.d.ts +1 -1
- package/dist/apps/shared/components/contacts/ContactDetailPane.js +2 -2
- package/dist/apps/shared/components/contacts/ContactForm.d.ts +2 -2
- package/dist/apps/shared/components/contacts/ContactForm.js +12 -8
- package/dist/apps/shared/components/contacts/ContactsSidebar.d.ts +1 -1
- package/dist/apps/shared/components/contacts/ContactsSidebar.js +7 -5
- package/dist/apps/shared/components/contacts/KeyChangeReview.d.ts +1 -1
- package/dist/apps/shared/components/contacts/KeyChangeReview.js +5 -5
- package/dist/apps/shared/components/contacts/contactKeys.d.ts +2 -2
- package/dist/apps/shared/components/contacts/contactKeys.js +2 -2
- package/dist/apps/shared/components/contacts/layout/ContactsShell.d.ts +1 -1
- package/dist/apps/shared/components/contacts/layout/ContactsShell.js +9 -7
- package/dist/apps/shared/components/escrow/layout/EscrowShell.js +7 -7
- package/dist/apps/shared/components/forms/StringListField.js +1 -1
- package/dist/apps/shared/components/layout/AppShell.d.ts +2 -2
- package/dist/apps/shared/components/layout/AppShell.js +14 -10
- package/dist/apps/shared/components/layout/BrandingChrome.d.ts +1 -1
- package/dist/apps/shared/components/layout/KeyEnrollmentGate.d.ts +1 -1
- package/dist/apps/shared/components/layout/KeyEnrollmentGate.js +9 -9
- package/dist/apps/shared/components/layout/MailboxProvisioning.js +8 -6
- package/dist/apps/shared/components/layout/RecoveryCodeUnlock.d.ts +1 -1
- package/dist/apps/shared/components/layout/RecoveryCodeUnlock.js +9 -9
- package/dist/apps/shared/components/layout/UnlockPromptProvider.d.ts +2 -2
- package/dist/apps/shared/components/layout/UnlockPromptProvider.js +5 -5
- package/dist/apps/shared/components/layout/UserMenu.js +6 -4
- package/dist/apps/shared/components/mail/ConversationList.d.ts +2 -2
- package/dist/apps/shared/components/mail/ConversationList.js +6 -4
- package/dist/apps/shared/components/mail/ConversationThreadPane.d.ts +3 -3
- package/dist/apps/shared/components/mail/ConversationThreadPane.js +13 -11
- package/dist/apps/shared/components/mail/InviteCard.js +10 -8
- package/dist/apps/shared/components/mail/LazyReadingPane.js +2 -2
- package/dist/apps/shared/components/mail/MailAddress.d.ts +1 -1
- package/dist/apps/shared/components/mail/MailAddress.js +1 -1
- package/dist/apps/shared/components/mail/MailListToolbar.d.ts +2 -2
- package/dist/apps/shared/components/mail/MailSelectionBar.d.ts +2 -2
- package/dist/apps/shared/components/mail/MenuButton.js +1 -1
- package/dist/apps/shared/components/mail/MessageDetailPane.d.ts +3 -3
- package/dist/apps/shared/components/mail/MessageDetailPane.js +30 -28
- package/dist/apps/shared/components/mail/MoveToFolderDialog.d.ts +1 -1
- package/dist/apps/shared/components/mail/MoveToFolderDialog.js +8 -6
- package/dist/apps/shared/components/mail/OutboxRowStatus.d.ts +1 -1
- package/dist/apps/shared/components/mail/PermanentDeleteDialog.js +2 -2
- package/dist/apps/shared/components/mail/compose/ComposeContext.d.ts +10 -1
- package/dist/apps/shared/components/mail/compose/ComposeContext.js +4 -2
- package/dist/apps/shared/components/mail/compose/ComposeWindow.d.ts +7 -1
- package/dist/apps/shared/components/mail/compose/ComposeWindow.js +54 -31
- package/dist/apps/shared/components/mail/compose/ComposeWindowPlaceholder.js +4 -4
- package/dist/apps/shared/components/mail/compose/EmojiPicker.js +2 -2
- package/dist/apps/shared/components/mail/compose/GifPicker.js +3 -3
- package/dist/apps/shared/components/mail/compose/RecipientInput.d.ts +1 -1
- package/dist/apps/shared/components/mail/compose/RecipientInput.js +1 -1
- package/dist/apps/shared/components/mail/compose/ScheduleSendPicker.js +1 -1
- package/dist/apps/shared/components/mail/compose/encryptionRequirement.d.ts +2 -2
- package/dist/apps/shared/components/mail/compose/encryptionRequirement.js +1 -1
- package/dist/apps/shared/components/mail/compose/quotedBody.d.ts +3 -3
- package/dist/apps/shared/components/mail/compose/quotedBody.js +3 -3
- package/dist/apps/shared/components/mail/compose/recipients.d.ts +1 -1
- package/dist/apps/shared/components/mail/invite/InviteRowChip.d.ts +1 -1
- package/dist/apps/shared/components/mail/invite/InviteRsvpPopover.d.ts +1 -1
- package/dist/apps/shared/components/mail/invite/InviteRsvpPopover.js +9 -7
- package/dist/apps/shared/components/mail/invite/InviteTimeline.d.ts +1 -1
- package/dist/apps/shared/components/mail/invite/ProposeTimeForm.d.ts +1 -1
- package/dist/apps/shared/components/mail/invite/ProposeTimeForm.js +1 -1
- package/dist/apps/shared/components/mail/invite/inviteFormat.d.ts +2 -2
- package/dist/apps/shared/components/mail/invite/inviteStore.d.ts +9 -3
- package/dist/apps/shared/components/mail/invite/inviteStore.js +13 -6
- package/dist/apps/shared/components/mail/labelMenu.d.ts +1 -1
- package/dist/apps/shared/components/mail/labelMenu.js +9 -7
- package/dist/apps/shared/components/mail/layout/MailShell.d.ts +1 -1
- package/dist/apps/shared/components/mail/layout/MailShell.js +3 -3
- package/dist/apps/shared/components/mail/listPreferences.d.ts +2 -2
- package/dist/apps/shared/components/mail/listPreferences.js +1 -1
- package/dist/apps/shared/components/mail/pinnedSigners.d.ts +12 -5
- package/dist/apps/shared/components/mail/pinnedSigners.js +37 -18
- package/dist/apps/shared/components/mail/reading/EncryptedBody.js +2 -2
- package/dist/apps/shared/components/mail/reading/MessageBody.d.ts +2 -2
- package/dist/apps/shared/components/mail/reading/MessageBody.js +4 -4
- package/dist/apps/shared/components/mail/reading/MessageCard.d.ts +1 -1
- package/dist/apps/shared/components/mail/reading/MessageCard.js +2 -2
- package/dist/apps/shared/components/mail/reading/MessageSourceDialog.js +3 -3
- package/dist/apps/shared/components/mail/reading/PendingMessageCard.js +1 -1
- package/dist/apps/shared/components/mail/reading/bodyContent.d.ts +2 -2
- package/dist/apps/shared/components/mail/reading/bodyContent.js +2 -2
- package/dist/apps/shared/components/mail/reading/bodyHtml.js +1 -1
- package/dist/apps/shared/components/mail/reading/messageExport.js +1 -1
- package/dist/apps/shared/components/mail/reading/printMessage.d.ts +2 -2
- package/dist/apps/shared/components/mail/reading/printMessage.js +11 -11
- package/dist/apps/shared/components/mail/reading/useMessageActions.d.ts +1 -1
- package/dist/apps/shared/components/mail/reading/useMessageActions.js +18 -16
- package/dist/apps/shared/components/mail/unreadStyle.d.ts +1 -1
- package/dist/apps/shared/components/mail/verificationSeals.d.ts +27 -6
- package/dist/apps/shared/components/mail/verificationSeals.js +15 -11
- package/dist/apps/shared/components/mail/writableMailboxes.d.ts +8 -3
- package/dist/apps/shared/components/mail/writableMailboxes.js +12 -6
- package/dist/apps/shared/components/rules/RuleBuilder.js +1 -1
- package/dist/apps/shared/components/settings/SigningCertificateCard.d.ts +1 -1
- package/dist/apps/shared/components/settings/SigningCertificateCard.js +3 -3
- package/dist/apps/shared/components/settings/layout/SettingsShell.d.ts +1 -1
- package/dist/apps/shared/components/settings/layout/SettingsShell.js +8 -6
- package/dist/apps/shared/components/sharing/PrincipalListField.d.ts +1 -1
- package/dist/apps/shared/components/sharing/PrincipalPicker.d.ts +1 -1
- package/dist/apps/shared/components/sharing/PrincipalPicker.js +1 -1
- package/dist/apps/shared/components/sharing/PrincipalResolver.d.ts +1 -1
- package/dist/apps/shared/components/sharing/PrincipalResolver.js +3 -3
- package/dist/apps/shared/components/tasks/TasksSidebar.d.ts +1 -1
- package/dist/apps/shared/components/tasks/TasksSidebar.js +7 -5
- package/dist/apps/shared/components/tasks/layout/TasksShell.d.ts +1 -1
- package/dist/apps/shared/components/tasks/layout/TasksShell.js +9 -7
- package/dist/apps/shared/keyboard/ShortcutsDialog.js +1 -1
- package/dist/apps/shared/mail/findWellKnownFolderUid.d.ts +5 -3
- package/dist/apps/shared/mail/findWellKnownFolderUid.js +5 -4
- package/dist/apps/shared/mail/folderCounts.d.ts +1 -1
- package/dist/apps/shared/mail/folderCounts.js +6 -4
- package/dist/apps/shared/mail/folderOfType.d.ts +3 -2
- package/dist/apps/shared/mail/folderOfType.js +4 -4
- package/dist/apps/shared/mail/folderTree.d.ts +1 -1
- package/dist/apps/shared/mail/listSnapshots.d.ts +2 -2
- package/dist/apps/shared/mail/messageReadState.d.ts +4 -3
- package/dist/apps/shared/mail/messageReadState.js +5 -5
- package/dist/apps/shared/mail/newMailNotifications.d.ts +1 -1
- package/dist/apps/shared/mail/newMailNotifications.js +1 -1
- package/dist/apps/shared/mail/outbox/composeBridge.d.ts +2 -2
- package/dist/apps/shared/mail/outbox/outboxState.d.ts +1 -1
- package/dist/apps/shared/mail/outbox/outgoingReplies.d.ts +2 -2
- package/dist/apps/shared/mail/outbox/sendDecision.d.ts +2 -2
- package/dist/apps/shared/mail/outbox/sendDecision.js +1 -1
- package/dist/apps/shared/mail/outbox/sendJob.d.ts +10 -6
- package/dist/apps/shared/mail/outbox/sendJob.js +39 -35
- package/dist/apps/shared/mail/outbox/sendOutcomes.d.ts +6 -3
- package/dist/apps/shared/mail/outbox/sendOutcomes.js +19 -15
- package/dist/apps/shared/mail/outbox/useOutboxStatus.js +5 -3
- package/dist/apps/shared/mail/permanentDelete.d.ts +4 -3
- package/dist/apps/shared/mail/permanentDelete.js +8 -8
- package/dist/apps/shared/mail/primaryMailbox.d.ts +1 -1
- package/dist/apps/shared/mail/primaryMailbox.js +1 -1
- package/dist/apps/shared/mail/reportNotices.d.ts +1 -1
- package/dist/apps/shared/mail/senderBlocking.d.ts +5 -4
- package/dist/apps/shared/mail/senderBlocking.js +19 -16
- package/dist/apps/shared/mail/useMailConnection.d.ts +1 -1
- package/dist/apps/shared/mail/useMailConnection.js +12 -10
- package/dist/apps/shared/mail/useMailLiveUpdates.d.ts +2 -2
- package/dist/apps/shared/mail/useMailLiveUpdates.js +2 -2
- package/dist/apps/shared/mail/useMailboxUpdateAccess.d.ts +3 -2
- package/dist/apps/shared/mail/useMailboxUpdateAccess.js +31 -10
- package/dist/apps/shared/mail/useMarkMessageRead.d.ts +1 -1
- package/dist/apps/shared/mail/useMarkMessageRead.js +5 -3
- package/dist/apps/shared/mail/useNewMailNotifications.d.ts +1 -1
- package/dist/apps/shared/mail/usePermanentDelete.d.ts +1 -1
- package/dist/apps/shared/mail/usePermanentDelete.js +4 -2
- package/dist/apps/shared/navigation/pageTitle.d.ts +1 -1
- package/dist/apps/shared/notifications/NotificationCenter.js +1 -1
- package/dist/apps/shared/notifications/NotificationHistoryDialog.js +2 -2
- package/dist/apps/shared/notifications/apiErrors.js +2 -2
- package/dist/apps/shared/notifications/pushStatus.js +1 -1
- package/dist/apps/shared/notifications/systemErrors.js +1 -1
- package/dist/apps/shared/search/LocalIndexLifecycle.d.ts +2 -2
- package/dist/apps/shared/search/LocalIndexLifecycle.js +15 -10
- package/dist/apps/shared/search/crossMailboxSearch.d.ts +1 -1
- package/dist/apps/shared/search/crossMailboxSearch.js +2 -2
- package/dist/apps/shared/search/localIndexBuilder.d.ts +4 -3
- package/dist/apps/shared/search/localIndexBuilder.js +15 -12
- package/dist/apps/shared/search/localIndexKey.js +1 -1
- package/dist/apps/shared/search/localIndexRpcClient.d.ts +43 -31
- package/dist/apps/shared/search/localIndexRpcClient.js +113 -20
- package/dist/apps/shared/search/localIndexTransport.d.ts +77 -0
- package/dist/apps/shared/search/localIndexTransport.js +1 -0
- package/dist/apps/shared/search/localIndexWorker.d.ts +1 -1
- package/dist/apps/shared/search/searchTier2.d.ts +3 -3
- package/dist/apps/shared/signing/enrollmentTracker.d.ts +1 -1
- package/dist/apps/shared/signing/enrollmentTracker.js +3 -3
- package/dist/apps/shared/signing/enrollmentView.d.ts +1 -1
- package/dist/apps/shared/signing/signingInfo.d.ts +1 -1
- package/dist/apps/shared/signing/signingInfo.js +1 -1
- package/dist/apps/shared/signing/useSigningEnrollmentWatcher.d.ts +1 -1
- package/dist/apps/shared/signing/useSigningEnrollmentWatcher.js +5 -3
- package/dist/apps/shared/styles/app.css +387 -396
- package/dist/apps/www/_layout.d.ts +1 -1
- package/dist/apps/www/_layout.js +1 -1
- package/dist/apps/www/calendar/index.d.ts +1 -1
- package/dist/apps/www/calendar/index.js +20 -18
- package/dist/apps/www/contacts/[uid].d.ts +1 -1
- package/dist/apps/www/contacts/[uid].js +8 -6
- package/dist/apps/www/contacts/index.d.ts +1 -1
- package/dist/apps/www/contacts/index.js +19 -17
- package/dist/apps/www/index.d.ts +1 -1
- package/dist/apps/www/index.js +54 -50
- package/dist/apps/www/messages/[uid].d.ts +1 -1
- package/dist/apps/www/messages/[uid].js +11 -9
- package/dist/apps/www/settings/appearance/index.d.ts +1 -1
- package/dist/apps/www/settings/auto-reply/index.d.ts +1 -1
- package/dist/apps/www/settings/auto-reply/index.js +6 -4
- package/dist/apps/www/settings/blocked-senders/index.d.ts +1 -1
- package/dist/apps/www/settings/blocked-senders/index.js +6 -4
- package/dist/apps/www/settings/encryption/index.d.ts +1 -1
- package/dist/apps/www/settings/encryption/index.js +31 -29
- package/dist/apps/www/settings/filters/[uid].d.ts +1 -1
- package/dist/apps/www/settings/filters/[uid].js +11 -9
- package/dist/apps/www/settings/filters/_mailFilterRuleConfig.d.ts +2 -2
- package/dist/apps/www/settings/filters/index.d.ts +1 -1
- package/dist/apps/www/settings/filters/index.js +4 -4
- package/dist/apps/www/settings/filters/new/index.d.ts +1 -1
- package/dist/apps/www/settings/filters/new/index.js +10 -8
- package/dist/apps/www/settings/labels/index.d.ts +1 -1
- package/dist/apps/www/settings/labels/index.js +12 -10
- package/dist/apps/www/settings/privacy/index.d.ts +1 -1
- package/dist/apps/www/settings/privacy/index.js +18 -14
- package/dist/apps/www/settings/profile/index.d.ts +1 -1
- package/dist/apps/www/settings/profile/index.js +7 -5
- package/dist/apps/www/settings/read-receipts/index.d.ts +1 -1
- package/dist/apps/www/settings/read-receipts/index.js +5 -3
- package/dist/apps/www/settings/sharing/index.d.ts +1 -1
- package/dist/apps/www/settings/sharing/index.js +6 -6
- package/dist/apps/www/settings/signatures/[uid].d.ts +1 -1
- package/dist/apps/www/settings/signatures/[uid].js +5 -5
- package/dist/apps/www/settings/signatures/index.d.ts +1 -1
- package/dist/apps/www/settings/signatures/index.js +4 -4
- package/dist/apps/www/settings/signatures/new/index.d.ts +1 -1
- package/dist/apps/www/settings/signatures/new/index.js +4 -4
- package/dist/apps/www/settings/signatures/signatureDefaults.d.ts +1 -1
- package/dist/apps/www/settings/signatures/signatureDefaults.js +1 -1
- package/dist/apps/www/tasks/index.d.ts +1 -1
- package/dist/apps/www/tasks/index.js +17 -15
- package/dist/lib/admin/auditLogApi.d.ts +32 -0
- package/dist/lib/admin/auditLogApi.js +27 -0
- package/dist/lib/admin/distributionListsApi.d.ts +47 -0
- package/dist/lib/admin/distributionListsApi.js +34 -0
- package/dist/lib/admin/domainsApi.d.ts +75 -0
- package/dist/lib/admin/domainsApi.js +44 -0
- package/dist/lib/admin/escrowAccessRequestsApi.d.ts +79 -0
- package/dist/lib/admin/escrowAccessRequestsApi.js +46 -0
- package/dist/lib/admin/escrowAuditLogApi.d.ts +66 -0
- package/dist/lib/admin/escrowAuditLogApi.js +31 -0
- package/dist/lib/admin/escrowScopesApi.d.ts +78 -0
- package/dist/lib/admin/escrowScopesApi.js +50 -0
- package/dist/lib/admin/leftoverMailboxApi.d.ts +73 -0
- package/dist/lib/admin/leftoverMailboxApi.js +67 -0
- package/dist/lib/admin/mailboxPolicyApi.d.ts +27 -0
- package/dist/lib/admin/mailboxPolicyApi.js +21 -0
- package/dist/lib/admin/matterExportApi.d.ts +40 -0
- package/dist/lib/admin/matterExportApi.js +39 -0
- package/dist/lib/admin/matterSearchApi.d.ts +20 -0
- package/dist/lib/admin/matterSearchApi.js +27 -0
- package/dist/lib/admin/mattersApi.d.ts +56 -0
- package/dist/lib/admin/mattersApi.js +40 -0
- package/dist/lib/admin/pluginsApi.d.ts +265 -0
- package/dist/lib/admin/pluginsApi.js +102 -0
- package/dist/lib/admin/retentionPolicyApi.d.ts +32 -0
- package/dist/lib/admin/retentionPolicyApi.js +29 -0
- package/dist/lib/admin/setupApi.d.ts +23 -0
- package/dist/lib/admin/setupApi.js +26 -0
- package/dist/lib/admin/transportRulesApi.d.ts +66 -0
- package/dist/lib/admin/transportRulesApi.js +43 -0
- package/dist/lib/appearance/preferencesApi.d.ts +128 -0
- package/dist/lib/appearance/preferencesApi.js +257 -0
- package/dist/lib/auth/profileApi.d.ts +33 -0
- package/dist/lib/auth/profileApi.js +52 -0
- package/dist/lib/auth/session.d.ts +70 -0
- package/dist/lib/auth/session.js +210 -0
- package/dist/lib/branding/brandingApi.d.ts +47 -0
- package/dist/lib/branding/brandingApi.js +61 -0
- package/dist/lib/branding/useBranding.d.ts +23 -0
- package/dist/lib/branding/useBranding.js +65 -0
- package/dist/lib/calendar/calendarApi.d.ts +230 -0
- package/dist/lib/calendar/calendarApi.js +106 -0
- package/dist/lib/calendar/calendarColors.d.ts +18 -0
- package/dist/lib/calendar/calendarColors.js +39 -0
- package/dist/lib/calendar/calendarDragIds.d.ts +42 -0
- package/dist/lib/calendar/calendarDragIds.js +92 -0
- package/dist/lib/calendar/calendarMutations.d.ts +68 -0
- package/dist/lib/calendar/calendarMutations.js +190 -0
- package/dist/lib/calendar/eventDescription.d.ts +43 -0
- package/dist/lib/calendar/eventDescription.js +195 -0
- package/dist/lib/calendar/freeBusyApi.d.ts +100 -0
- package/dist/lib/calendar/freeBusyApi.js +119 -0
- package/dist/lib/calendar/inviteApi.d.ts +121 -0
- package/dist/lib/calendar/inviteApi.js +54 -0
- package/dist/lib/calendar/recurrence.d.ts +60 -0
- package/dist/lib/calendar/recurrence.js +225 -0
- package/dist/lib/components/avatar/ContactAvatar.d.ts +8 -0
- package/dist/lib/components/avatar/ContactAvatar.js +26 -0
- package/dist/lib/components/buttons/Button.d.ts +9 -0
- package/dist/lib/components/buttons/Button.js +14 -0
- package/dist/lib/components/buttons/CopyButton.d.ts +18 -0
- package/dist/lib/components/buttons/CopyButton.js +14 -0
- package/dist/lib/components/feedback/Alert.d.ts +4 -0
- package/dist/lib/components/feedback/Alert.js +4 -0
- package/dist/lib/components/feedback/Skeleton.d.ts +21 -0
- package/dist/lib/components/feedback/Skeleton.js +14 -0
- package/dist/lib/components/forms/FormField.d.ts +8 -0
- package/dist/lib/components/forms/FormField.js +5 -0
- package/dist/lib/components/navigation/BottomTabBar.d.ts +27 -0
- package/dist/lib/components/navigation/BottomTabBar.js +32 -0
- package/dist/lib/components/overlays/Drawer.d.ts +20 -0
- package/dist/lib/components/overlays/Drawer.js +27 -0
- package/dist/lib/components/overlays/Modal.d.ts +17 -0
- package/dist/lib/components/overlays/Modal.js +25 -0
- package/dist/lib/components/overlays/PopoverPortal.d.ts +23 -0
- package/dist/lib/components/overlays/PopoverPortal.js +53 -0
- package/dist/lib/components/overlays/overlayStack.d.ts +31 -0
- package/dist/lib/components/overlays/overlayStack.js +143 -0
- package/dist/lib/components/pickers/MiniDatePicker.d.ts +13 -0
- package/dist/lib/components/pickers/MiniDatePicker.js +42 -0
- package/dist/lib/contacts/contactsApi.d.ts +174 -0
- package/dist/lib/contacts/contactsApi.js +139 -0
- package/dist/lib/contacts/vcard.d.ts +23 -0
- package/dist/lib/contacts/vcard.js +179 -0
- package/dist/lib/crypto/composeSecurity.d.ts +67 -0
- package/dist/lib/crypto/composeSecurity.js +93 -0
- package/dist/lib/crypto/encoding.d.ts +9 -0
- package/dist/lib/crypto/encoding.js +32 -0
- package/dist/lib/crypto/escrowKeys.d.ts +25 -0
- package/dist/lib/crypto/escrowKeys.js +59 -0
- package/dist/lib/crypto/idleTimeout.d.ts +16 -0
- package/dist/lib/crypto/idleTimeout.js +47 -0
- package/dist/lib/crypto/keySession.d.ts +159 -0
- package/dist/lib/crypto/keySession.js +367 -0
- package/dist/lib/crypto/keys.d.ts +50 -0
- package/dist/lib/crypto/keys.js +89 -0
- package/dist/lib/crypto/keyvaultApi.d.ts +394 -0
- package/dist/lib/crypto/keyvaultApi.js +350 -0
- package/dist/lib/crypto/masterKey.d.ts +59 -0
- package/dist/lib/crypto/masterKey.js +104 -0
- package/dist/lib/crypto/masterKeyWraps.d.ts +108 -0
- package/dist/lib/crypto/masterKeyWraps.js +228 -0
- package/dist/lib/crypto/messageSecurity.d.ts +248 -0
- package/dist/lib/crypto/messageSecurity.js +367 -0
- package/dist/lib/crypto/mime.d.ts +143 -0
- package/dist/lib/crypto/mime.js +504 -0
- package/dist/lib/crypto/passkeyUnlock.d.ts +20 -0
- package/dist/lib/crypto/passkeyUnlock.js +79 -0
- package/dist/lib/crypto/passwordUnlock.d.ts +39 -0
- package/dist/lib/crypto/passwordUnlock.js +73 -0
- package/dist/lib/crypto/recoveryCode.d.ts +28 -0
- package/dist/lib/crypto/recoveryCode.js +86 -0
- package/dist/lib/crypto/signingProviderApi.d.ts +95 -0
- package/dist/lib/crypto/signingProviderApi.js +60 -0
- package/dist/lib/crypto/smime.d.ts +128 -0
- package/dist/lib/crypto/smime.js +402 -0
- package/dist/lib/crypto/smimeMessage.d.ts +132 -0
- package/dist/lib/crypto/smimeMessage.js +341 -0
- package/dist/lib/crypto/useIdleKeyTimeout.d.ts +10 -0
- package/dist/lib/crypto/useIdleKeyTimeout.js +163 -0
- package/dist/lib/crypto/verificationSeal.d.ts +56 -0
- package/dist/lib/crypto/verificationSeal.js +220 -0
- package/dist/lib/mail/compose/composeQuoting.d.ts +88 -0
- package/dist/lib/mail/compose/composeQuoting.js +204 -0
- package/dist/lib/mail/compose/emojiData.d.ts +9 -0
- package/dist/lib/mail/compose/emojiData.js +18 -0
- package/dist/lib/mail/compose/giphyApi.d.ts +17 -0
- package/dist/lib/mail/compose/giphyApi.js +20 -0
- package/dist/lib/mail/conversationsApi.d.ts +80 -0
- package/dist/lib/mail/conversationsApi.js +44 -0
- package/dist/lib/mail/dataExportApi.d.ts +50 -0
- package/dist/lib/mail/dataExportApi.js +40 -0
- package/dist/lib/mail/directoryApi.d.ts +49 -0
- package/dist/lib/mail/directoryApi.js +101 -0
- package/dist/lib/mail/erasureRequestApi.d.ts +45 -0
- package/dist/lib/mail/erasureRequestApi.js +43 -0
- package/dist/lib/mail/flaggedMessages.d.ts +22 -0
- package/dist/lib/mail/flaggedMessages.js +73 -0
- package/dist/lib/mail/focusedInboxOverridesApi.d.ts +37 -0
- package/dist/lib/mail/focusedInboxOverridesApi.js +34 -0
- package/dist/lib/mail/labelsApi.d.ts +47 -0
- package/dist/lib/mail/labelsApi.js +38 -0
- package/dist/lib/mail/mailAddress.d.ts +27 -0
- package/dist/lib/mail/mailAddress.js +54 -0
- package/dist/lib/mail/mailApi.d.ts +850 -0
- package/dist/lib/mail/mailApi.js +602 -0
- package/dist/lib/mail/mailDetailHooks.d.ts +10 -0
- package/dist/lib/mail/mailDetailHooks.js +53 -0
- package/dist/lib/mail/mailFilterRulesApi.d.ts +76 -0
- package/dist/lib/mail/mailFilterRulesApi.js +45 -0
- package/dist/lib/mail/mailSignaturesApi.d.ts +49 -0
- package/dist/lib/mail/mailSignaturesApi.js +42 -0
- package/dist/lib/mail/mailboxAccessApi.d.ts +74 -0
- package/dist/lib/mail/mailboxAccessApi.js +56 -0
- package/dist/lib/mail/mailboxImportApi.d.ts +53 -0
- package/dist/lib/mail/mailboxImportApi.js +51 -0
- package/dist/lib/mail/messageBodySanitizer.d.ts +16 -0
- package/dist/lib/mail/messageBodySanitizer.js +118 -0
- package/dist/lib/mail/pushClient.d.ts +106 -0
- package/dist/lib/mail/pushClient.js +317 -0
- package/dist/lib/mail/sendEvents.d.ts +33 -0
- package/dist/lib/mail/sendEvents.js +44 -0
- package/dist/lib/mail/sendFailure.d.ts +16 -0
- package/dist/lib/mail/sendFailure.js +86 -0
- package/dist/lib/mail/senderListsApi.d.ts +69 -0
- package/dist/lib/mail/senderListsApi.js +126 -0
- package/dist/lib/search/queryGrammar.d.ts +51 -0
- package/dist/lib/search/queryGrammar.js +111 -0
- package/dist/lib/search/searchApi.d.ts +100 -0
- package/dist/lib/search/searchApi.js +107 -0
- package/dist/lib/search/searchScoring.d.ts +34 -0
- package/dist/lib/search/searchScoring.js +44 -0
- package/dist/lib/search/searchTier3.d.ts +64 -0
- package/dist/lib/search/searchTier3.js +335 -0
- package/dist/lib/tasks/tasksApi.d.ts +85 -0
- package/dist/lib/tasks/tasksApi.js +55 -0
- package/dist/lib/util/api.d.ts +160 -0
- package/dist/lib/util/api.js +251 -0
- package/dist/lib/util/apiClientContext.d.ts +7 -0
- package/dist/lib/util/apiClientContext.js +32 -0
- package/dist/lib/util/apiQuery.d.ts +32 -0
- package/dist/lib/util/apiQuery.js +42 -0
- package/dist/lib/util/clipboard.d.ts +7 -0
- package/dist/lib/util/clipboard.js +56 -0
- package/dist/lib/util/dateInput.d.ts +6 -0
- package/dist/lib/util/dateInput.js +14 -0
- package/dist/lib/util/timeZone.d.ts +12 -0
- package/dist/lib/util/timeZone.js +32 -0
- package/dist/lib/util/useCopyToClipboard.d.ts +12 -0
- package/dist/lib/util/useCopyToClipboard.js +34 -0
- package/dist/lib/util/useIsMobile.d.ts +10 -0
- package/dist/lib/util/useIsMobile.js +29 -0
- package/dist/lib/videoconf/videoMeetingsApi.d.ts +116 -0
- package/dist/lib/videoconf/videoMeetingsApi.js +49 -0
- package/lib/admin/auditLogApi.ts +48 -0
- package/lib/admin/distributionListsApi.ts +77 -0
- package/lib/admin/domainsApi.ts +113 -0
- package/lib/admin/escrowAccessRequestsApi.ts +110 -0
- package/lib/admin/escrowAuditLogApi.ts +101 -0
- package/lib/admin/escrowScopesApi.ts +112 -0
- package/lib/admin/leftoverMailboxApi.ts +120 -0
- package/lib/admin/mailboxPolicyApi.ts +38 -0
- package/lib/admin/matterExportApi.ts +62 -0
- package/lib/admin/matterSearchApi.ts +35 -0
- package/lib/admin/mattersApi.ts +86 -0
- package/lib/admin/pluginsApi.ts +339 -0
- package/lib/admin/retentionPolicyApi.ts +46 -0
- package/lib/admin/setupApi.ts +40 -0
- package/lib/admin/transportRulesApi.ts +106 -0
- package/lib/appearance/preferencesApi.ts +335 -0
- package/lib/auth/profileApi.ts +77 -0
- package/lib/auth/session.ts +238 -0
- package/lib/branding/brandingApi.ts +97 -0
- package/lib/branding/useBranding.ts +81 -0
- package/lib/calendar/calendarApi.ts +309 -0
- package/lib/calendar/calendarColors.ts +45 -0
- package/lib/calendar/calendarDragIds.ts +112 -0
- package/lib/calendar/calendarMutations.ts +236 -0
- package/lib/calendar/eventDescription.ts +211 -0
- package/lib/calendar/freeBusyApi.ts +197 -0
- package/lib/calendar/inviteApi.ts +154 -0
- package/lib/calendar/recurrence.ts +285 -0
- package/lib/components/avatar/ContactAvatar.tsx +47 -0
- package/lib/components/buttons/Button.tsx +40 -0
- package/lib/components/buttons/CopyButton.tsx +45 -0
- package/lib/components/feedback/Alert.tsx +13 -0
- package/lib/components/feedback/Skeleton.tsx +38 -0
- package/lib/components/forms/FormField.tsx +23 -0
- package/lib/components/navigation/BottomTabBar.tsx +66 -0
- package/lib/components/overlays/Drawer.tsx +72 -0
- package/lib/components/overlays/Modal.tsx +64 -0
- package/lib/components/overlays/PopoverPortal.tsx +74 -0
- package/lib/components/overlays/overlayStack.ts +165 -0
- package/lib/components/pickers/MiniDatePicker.tsx +90 -0
- package/lib/contacts/contactsApi.ts +289 -0
- package/lib/contacts/vcard.ts +197 -0
- package/lib/crypto/composeSecurity.ts +140 -0
- package/lib/crypto/encoding.ts +36 -0
- package/lib/crypto/escrowKeys.ts +74 -0
- package/lib/crypto/idleTimeout.ts +49 -0
- package/lib/crypto/keySession.ts +483 -0
- package/lib/crypto/keys.ts +105 -0
- package/lib/crypto/keyvaultApi.ts +674 -0
- package/lib/crypto/masterKey.ts +134 -0
- package/lib/crypto/masterKeyWraps.ts +269 -0
- package/lib/crypto/messageSecurity.ts +600 -0
- package/lib/crypto/mime.ts +568 -0
- package/lib/crypto/passkeyUnlock.ts +103 -0
- package/lib/crypto/passwordUnlock.ts +98 -0
- package/lib/crypto/recoveryCode.ts +93 -0
- package/lib/crypto/signingProviderApi.ts +135 -0
- package/lib/crypto/smime.ts +459 -0
- package/lib/crypto/smimeMessage.ts +491 -0
- package/lib/crypto/useIdleKeyTimeout.ts +176 -0
- package/lib/crypto/verificationSeal.ts +288 -0
- package/lib/mail/compose/composeQuoting.ts +243 -0
- package/lib/mail/compose/emojiData.ts +34 -0
- package/lib/mail/compose/giphyApi.ts +31 -0
- package/lib/mail/conversationsApi.ts +123 -0
- package/lib/mail/dataExportApi.ts +73 -0
- package/lib/mail/directoryApi.ts +161 -0
- package/lib/mail/erasureRequestApi.ts +71 -0
- package/lib/mail/flaggedMessages.ts +80 -0
- package/lib/mail/focusedInboxOverridesApi.ts +64 -0
- package/lib/mail/labelsApi.ts +71 -0
- package/lib/mail/mailAddress.ts +76 -0
- package/lib/mail/mailApi.ts +1286 -0
- package/lib/mail/mailDetailHooks.ts +57 -0
- package/lib/mail/mailFilterRulesApi.ts +116 -0
- package/lib/mail/mailSignaturesApi.ts +84 -0
- package/lib/mail/mailboxAccessApi.ts +106 -0
- package/lib/mail/mailboxImportApi.ts +87 -0
- package/lib/mail/messageBodySanitizer.ts +129 -0
- package/lib/mail/pushClient.ts +375 -0
- package/lib/mail/sendEvents.ts +72 -0
- package/lib/mail/sendFailure.ts +98 -0
- package/lib/mail/senderListsApi.ts +161 -0
- package/lib/search/queryGrammar.ts +179 -0
- package/lib/search/searchApi.ts +199 -0
- package/lib/search/searchScoring.ts +46 -0
- package/lib/search/searchTier3.ts +406 -0
- package/lib/tasks/tasksApi.ts +128 -0
- package/lib/util/api.ts +318 -0
- package/lib/util/apiClientContext.ts +35 -0
- package/lib/util/apiQuery.ts +61 -0
- package/lib/util/clipboard.ts +55 -0
- package/lib/util/dateInput.ts +15 -0
- package/lib/util/timeZone.ts +33 -0
- package/lib/util/useCopyToClipboard.ts +48 -0
- package/lib/util/useIsMobile.ts +34 -0
- package/lib/videoconf/videoMeetingsApi.ts +144 -0
- package/package.json +10 -4
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import { useCallback, useEffect, useReducer } from "react";
|
|
6
|
-
import { getMessageInvite } from "
|
|
6
|
+
import { getMessageInvite } from "../../../../../lib/calendar/inviteApi.js";
|
|
7
|
+
import { useApiClient } from "../../../../../lib/util/apiClientContext.js";
|
|
7
8
|
/**
|
|
8
9
|
* A per-message cache of the calendar invitation the server reads out of a message, shared by everything that draws one: the reading pane's
|
|
9
10
|
* card, the list row's RSVP chip and its popover. They ask for the same message a moment apart (the row's chip, then the pane once it is
|
|
@@ -28,15 +29,20 @@ function normalize(invite) {
|
|
|
28
29
|
const partial = invite;
|
|
29
30
|
return { ...invite, attendees: partial.attendees ?? [], conflicts: partial.conflicts ?? [], schedule: partial.schedule ?? [] };
|
|
30
31
|
}
|
|
31
|
-
/**
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Reads a message's invitation, from the cache when it is fresh. Rejects when the lookup fails. `client` (see
|
|
34
|
+
* `useApiClient()`) is only consulted for a lookup this call actually makes - a fresh entry already in flight or
|
|
35
|
+
* cached keeps whichever client (or lack of one) started it, same as every other cache-by-uid shortcut here; the
|
|
36
|
+
* cache itself is keyed only by `uid`, not by account, so it assumes distinct accounts never share one.
|
|
37
|
+
*/
|
|
38
|
+
export function loadInvite(uid, client) {
|
|
33
39
|
const existing = entries.get(uid);
|
|
34
40
|
if (existing && (existing.value === undefined || Date.now() - existing.at < INVITE_TTL_MS)) {
|
|
35
41
|
return existing.promise;
|
|
36
42
|
}
|
|
37
43
|
const entry = {
|
|
38
44
|
at: Date.now(),
|
|
39
|
-
promise: getMessageInvite(uid).then((invite) => {
|
|
45
|
+
promise: getMessageInvite(uid, client).then((invite) => {
|
|
40
46
|
entry.value = normalize(invite);
|
|
41
47
|
entry.at = Date.now();
|
|
42
48
|
notify(uid);
|
|
@@ -68,6 +74,7 @@ export function clearInviteCache() {
|
|
|
68
74
|
*/
|
|
69
75
|
export function useMessageInvite(uid, enabled = true) {
|
|
70
76
|
const [, rerender] = useReducer((n) => n + 1, 0);
|
|
77
|
+
const client = useApiClient();
|
|
71
78
|
useEffect(() => {
|
|
72
79
|
if (!enabled) {
|
|
73
80
|
return;
|
|
@@ -81,14 +88,14 @@ export function useMessageInvite(uid, enabled = true) {
|
|
|
81
88
|
const set = listeners.get(uid) ?? new Set();
|
|
82
89
|
set.add(update);
|
|
83
90
|
listeners.set(uid, set);
|
|
84
|
-
loadInvite(uid).then(update, () => {
|
|
91
|
+
loadInvite(uid, client).then(update, () => {
|
|
85
92
|
// Nothing to show, and nothing worth interrupting the reader with: the message reads the same without it.
|
|
86
93
|
});
|
|
87
94
|
return () => {
|
|
88
95
|
cancelled = true;
|
|
89
96
|
set.delete(update);
|
|
90
97
|
};
|
|
91
|
-
}, [uid, enabled]);
|
|
98
|
+
}, [uid, enabled, client]);
|
|
92
99
|
const setInvite = useCallback((invite) => storeInvite(uid, invite), [uid]);
|
|
93
100
|
const value = enabled ? entries.get(uid)?.value : undefined;
|
|
94
101
|
return { invite: value ?? null, settled: value !== undefined, setInvite };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Label } from "
|
|
2
|
+
import { Label } from "../../../../lib/mail/labelsApi.js";
|
|
3
3
|
import { MenuSectionSpec } from "./MenuButton.js";
|
|
4
4
|
/**
|
|
5
5
|
* The one multi-select label list this app uses everywhere labels are picked: the Filter menu's "Labels"
|
|
@@ -5,12 +5,13 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useState } from "react";
|
|
7
7
|
import { HiOutlineTag } from "react-icons/hi2";
|
|
8
|
-
import { ApiRequestError } from "
|
|
9
|
-
import { createLabel } from "
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
8
|
+
import { ApiRequestError } from "../../../../lib/util/api.js";
|
|
9
|
+
import { createLabel } from "../../../../lib/mail/labelsApi.js";
|
|
10
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
11
|
+
import Alert from "../../../../lib/components/feedback/Alert.js";
|
|
12
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
13
|
+
import FormField from "../../../../lib/components/forms/FormField.js";
|
|
14
|
+
import Modal from "../../../../lib/components/overlays/Modal.js";
|
|
14
15
|
import MenuButton from "./MenuButton.js";
|
|
15
16
|
/** `a` and `b` hold the same uids, order ignored. */
|
|
16
17
|
function sameUids(a, b) {
|
|
@@ -96,6 +97,7 @@ export function labelSections({ labels, state, commit, clear, emptyNote, note, b
|
|
|
96
97
|
* has no place for a text field. Colour is left to Settings > Labels; this is the quick path from a
|
|
97
98
|
* message, so it only asks for the name. */
|
|
98
99
|
export function NewLabelDialog({ open, onClose, mailboxUid, onCreated }) {
|
|
100
|
+
const client = useApiClient();
|
|
99
101
|
const [name, setName] = useState("");
|
|
100
102
|
const [saving, setSaving] = useState(false);
|
|
101
103
|
const [error, setError] = useState(null);
|
|
@@ -103,7 +105,7 @@ export function NewLabelDialog({ open, onClose, mailboxUid, onCreated }) {
|
|
|
103
105
|
setSaving(true);
|
|
104
106
|
setError(null);
|
|
105
107
|
try {
|
|
106
|
-
onCreated(await createLabel({ mailboxUid, name: name.trim() }));
|
|
108
|
+
onCreated(await createLabel({ mailboxUid, name: name.trim() }, client));
|
|
107
109
|
setName("");
|
|
108
110
|
onClose();
|
|
109
111
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from "react";
|
|
2
|
-
import { Folder, Mailbox, Message } from "
|
|
2
|
+
import { Folder, Mailbox, Message } from "../../../../../lib/mail/mailApi.js";
|
|
3
3
|
import { AppShellProps } from "../../layout/AppShell.js";
|
|
4
4
|
import { LiveUpdates } from "../../../mail/useMailLiveUpdates.js";
|
|
5
5
|
import { MAILBOX_LIST_LIMIT } from "../../../mail/useMailConnection.js";
|
|
@@ -5,9 +5,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
|
|
7
7
|
import { HiOutlineBars3, HiOutlinePencilSquare } from "react-icons/hi2";
|
|
8
|
-
import Drawer from "
|
|
9
|
-
import Alert from "
|
|
10
|
-
import Skeleton, { SkeletonList } from "
|
|
8
|
+
import Drawer from "../../../../../lib/components/overlays/Drawer.js";
|
|
9
|
+
import Alert from "../../../../../lib/components/feedback/Alert.js";
|
|
10
|
+
import Skeleton, { SkeletonList } from "../../../../../lib/components/feedback/Skeleton.js";
|
|
11
11
|
import AppShell from "../../layout/AppShell.js";
|
|
12
12
|
import FloatingActionButton from "../../layout/FloatingActionButton.js";
|
|
13
13
|
import { useLocation, useNavigate } from "../../../navigation/index.js";
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* contexts) - and every write swallows its own failure, so a blocked store only means the preference
|
|
14
14
|
* doesn't survive a reload.
|
|
15
15
|
*/
|
|
16
|
-
import { MessageListFilter, MessageListSort, MessageSortOrder } from "
|
|
17
|
-
import { ConversationSummary } from "
|
|
16
|
+
import { MessageListFilter, MessageListSort, MessageSortOrder } from "../../../../lib/mail/mailApi.js";
|
|
17
|
+
import { ConversationSummary } from "../../../../lib/mail/conversationsApi.js";
|
|
18
18
|
export interface MailListPreferences {
|
|
19
19
|
sortBy: MessageListSort;
|
|
20
20
|
sortOrder: MessageSortOrder;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* contexts) - and every write swallows its own failure, so a blocked store only means the preference
|
|
18
18
|
* doesn't survive a reload.
|
|
19
19
|
*/
|
|
20
|
-
import { MAX_MESSAGE_LABEL_FILTER, } from "
|
|
20
|
+
import { MAX_MESSAGE_LABEL_FILTER, } from "../../../../lib/mail/mailApi.js";
|
|
21
21
|
const STORAGE_KEY_PREFIX = "rapidmx:mail-list-preferences:";
|
|
22
22
|
/** How many labels the list may be narrowed to at once. `@rapidmx/restapi` refuses a longer `?labelUids=`
|
|
23
23
|
* with a 400, so a stored selection is trimmed to the cap rather than sent. */
|
|
@@ -12,15 +12,22 @@
|
|
|
12
12
|
* The cache is dropped (`clearPinnedSignerCache()`) whenever a key session locks (subscribed on first use), on sign-out
|
|
13
13
|
* (`AppShell`), and after the reader adds, edits or deletes contacts (the contacts pages) - so a contact removed
|
|
14
14
|
* because its key was revoked doesn't keep vouching for signatures until the TTL runs out.
|
|
15
|
+
*
|
|
16
|
+
* **Explicit-client callers get their own cache**, a `WeakMap<ApiClient, Map<...>>` alongside the default
|
|
17
|
+
* global-path `Map` - the same split `useMailboxUpdateAccess.ts` already uses, for the same reason: two
|
|
18
|
+
* `tauri-client` accounts must never answer each other's "who does this sender's key belong to" question from
|
|
19
|
+
* one shared cache keyed only by `mailboxUid` (mailbox uids are not guaranteed unique across accounts/servers).
|
|
15
20
|
*/
|
|
16
|
-
import { SignerKeyState } from "
|
|
21
|
+
import { SignerKeyState } from "../../../../lib/contacts/contactsApi.js";
|
|
22
|
+
import type { ApiClient } from "../../../../lib/util/api.js";
|
|
17
23
|
/** How long one mailbox's loaded contact list is reused before it is fetched again. */
|
|
18
24
|
export declare const CONTACTS_CACHE_TTL_MS = 60000;
|
|
19
|
-
/** Forgets every cached contact list - on sign-out, a key-session lock, after the
|
|
20
|
-
* in tests.
|
|
25
|
+
/** Forgets every cached contact list for the default global path - on sign-out, a key-session lock, after the
|
|
26
|
+
* reader changes their contacts, and in tests. Does not clear any explicit-client cache: those are scoped to
|
|
27
|
+
* their own `ApiClient` and garbage-collected with it, with no shared "the app signed out" moment to clear on. */
|
|
21
28
|
export declare function clearPinnedSignerCache(): void;
|
|
22
29
|
/** The sender `address`'s pinned signing fingerprints from `mailboxUid`'s contacts. Rejects if they can't be loaded. */
|
|
23
|
-
export declare function getPinnedSignerFingerprints(mailboxUid: string, address: string): Promise<string[]>;
|
|
30
|
+
export declare function getPinnedSignerFingerprints(mailboxUid: string, address: string, client?: ApiClient): Promise<string[]>;
|
|
24
31
|
/** A sender's signing-key state (`signerKeyStateFor()`) plus what a key-changed notice needs to show and link. */
|
|
25
32
|
export interface SenderKeyState extends SignerKeyState {
|
|
26
33
|
/** The contact holding the first pinned signing key, else the one holding the conflict, else the first match. */
|
|
@@ -30,4 +37,4 @@ export interface SenderKeyState extends SignerKeyState {
|
|
|
30
37
|
}
|
|
31
38
|
/** The sender `address`'s signing-key state from `mailboxUid`'s (cached) contacts, for a "signing key changed" comparison
|
|
32
39
|
* or to spot a recorded conflict. Reads stored contacts only. Rejects if they can't be loaded. */
|
|
33
|
-
export declare function getSignerKeyState(mailboxUid: string, address: string): Promise<SenderKeyState>;
|
|
40
|
+
export declare function getSignerKeyState(mailboxUid: string, address: string, client?: ApiClient): Promise<SenderKeyState>;
|
|
@@ -16,16 +16,34 @@
|
|
|
16
16
|
* The cache is dropped (`clearPinnedSignerCache()`) whenever a key session locks (subscribed on first use), on sign-out
|
|
17
17
|
* (`AppShell`), and after the reader adds, edits or deletes contacts (the contacts pages) - so a contact removed
|
|
18
18
|
* because its key was revoked doesn't keep vouching for signatures until the TTL runs out.
|
|
19
|
+
*
|
|
20
|
+
* **Explicit-client callers get their own cache**, a `WeakMap<ApiClient, Map<...>>` alongside the default
|
|
21
|
+
* global-path `Map` - the same split `useMailboxUpdateAccess.ts` already uses, for the same reason: two
|
|
22
|
+
* `tauri-client` accounts must never answer each other's "who does this sender's key belong to" question from
|
|
23
|
+
* one shared cache keyed only by `mailboxUid` (mailbox uids are not guaranteed unique across accounts/servers).
|
|
19
24
|
*/
|
|
20
|
-
import { PINNED_FINGERPRINT_MAX_PAGES, PINNED_FINGERPRINT_PAGE_SIZE, listContacts, pinnedSigningFingerprintsFor, signerKeyStateFor, } from "
|
|
25
|
+
import { PINNED_FINGERPRINT_MAX_PAGES, PINNED_FINGERPRINT_PAGE_SIZE, listContacts, pinnedSigningFingerprintsFor, signerKeyStateFor, } from "../../../../lib/contacts/contactsApi.js";
|
|
21
26
|
import { keyPinnedSince } from "../contacts/contactKeys.js";
|
|
22
|
-
import { listFolders } from "
|
|
23
|
-
import { subscribeKeySession } from "
|
|
27
|
+
import { listFolders } from "../../../../lib/mail/mailApi.js";
|
|
28
|
+
import { subscribeKeySession } from "../../../../lib/crypto/keySession.js";
|
|
24
29
|
/** How long one mailbox's loaded contact list is reused before it is fetched again. */
|
|
25
30
|
export const CONTACTS_CACHE_TTL_MS = 60000;
|
|
26
31
|
const contactsCache = new Map();
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
const contactsCacheByClient = new WeakMap();
|
|
33
|
+
function cacheFor(client) {
|
|
34
|
+
if (!client) {
|
|
35
|
+
return contactsCache;
|
|
36
|
+
}
|
|
37
|
+
let cache = contactsCacheByClient.get(client);
|
|
38
|
+
if (!cache) {
|
|
39
|
+
cache = new Map();
|
|
40
|
+
contactsCacheByClient.set(client, cache);
|
|
41
|
+
}
|
|
42
|
+
return cache;
|
|
43
|
+
}
|
|
44
|
+
/** Forgets every cached contact list for the default global path - on sign-out, a key-session lock, after the
|
|
45
|
+
* reader changes their contacts, and in tests. Does not clear any explicit-client cache: those are scoped to
|
|
46
|
+
* their own `ApiClient` and garbage-collected with it, with no shared "the app signed out" moment to clear on. */
|
|
29
47
|
export function clearPinnedSignerCache() {
|
|
30
48
|
contactsCache.clear();
|
|
31
49
|
}
|
|
@@ -43,12 +61,12 @@ function subscribeToLocksOnce() {
|
|
|
43
61
|
}
|
|
44
62
|
});
|
|
45
63
|
}
|
|
46
|
-
async function loadMailboxContacts(mailboxUid) {
|
|
47
|
-
const folders = await listFolders(mailboxUid);
|
|
64
|
+
async function loadMailboxContacts(mailboxUid, client) {
|
|
65
|
+
const folders = await listFolders(mailboxUid, client);
|
|
48
66
|
const contacts = [];
|
|
49
67
|
for (const folder of folders.filter((f) => f.type === "contacts")) {
|
|
50
68
|
for (let page = 0; page < PINNED_FINGERPRINT_MAX_PAGES; page++) {
|
|
51
|
-
const batch = await listContacts(folder.uid, { limit: PINNED_FINGERPRINT_PAGE_SIZE, page });
|
|
69
|
+
const batch = await listContacts(folder.uid, { limit: PINNED_FINGERPRINT_PAGE_SIZE, page }, client);
|
|
52
70
|
contacts.push(...batch);
|
|
53
71
|
if (batch.length < PINNED_FINGERPRINT_PAGE_SIZE) {
|
|
54
72
|
break;
|
|
@@ -58,15 +76,16 @@ async function loadMailboxContacts(mailboxUid) {
|
|
|
58
76
|
return contacts;
|
|
59
77
|
}
|
|
60
78
|
/** `mailboxUid`'s contacts, from the cache when fresh. Rejects if they can't be loaded. */
|
|
61
|
-
function cachedMailboxContacts(mailboxUid) {
|
|
79
|
+
function cachedMailboxContacts(mailboxUid, client) {
|
|
62
80
|
subscribeToLocksOnce();
|
|
63
|
-
|
|
81
|
+
const cache = cacheFor(client);
|
|
82
|
+
let entry = cache.get(mailboxUid);
|
|
64
83
|
if (!entry || Date.now() - entry.loadedAt > CONTACTS_CACHE_TTL_MS) {
|
|
65
|
-
const created = { loadedAt: Date.now(), contacts: loadMailboxContacts(mailboxUid) };
|
|
66
|
-
|
|
84
|
+
const created = { loadedAt: Date.now(), contacts: loadMailboxContacts(mailboxUid, client) };
|
|
85
|
+
cache.set(mailboxUid, created);
|
|
67
86
|
created.contacts.catch(() => {
|
|
68
|
-
if (
|
|
69
|
-
|
|
87
|
+
if (cache.get(mailboxUid) === created) {
|
|
88
|
+
cache.delete(mailboxUid);
|
|
70
89
|
}
|
|
71
90
|
});
|
|
72
91
|
entry = created;
|
|
@@ -74,13 +93,13 @@ function cachedMailboxContacts(mailboxUid) {
|
|
|
74
93
|
return entry.contacts;
|
|
75
94
|
}
|
|
76
95
|
/** The sender `address`'s pinned signing fingerprints from `mailboxUid`'s contacts. Rejects if they can't be loaded. */
|
|
77
|
-
export async function getPinnedSignerFingerprints(mailboxUid, address) {
|
|
78
|
-
return pinnedSigningFingerprintsFor(await cachedMailboxContacts(mailboxUid), address);
|
|
96
|
+
export async function getPinnedSignerFingerprints(mailboxUid, address, client) {
|
|
97
|
+
return pinnedSigningFingerprintsFor(await cachedMailboxContacts(mailboxUid, client), address);
|
|
79
98
|
}
|
|
80
99
|
/** The sender `address`'s signing-key state from `mailboxUid`'s (cached) contacts, for a "signing key changed" comparison
|
|
81
100
|
* or to spot a recorded conflict. Reads stored contacts only. Rejects if they can't be loaded. */
|
|
82
|
-
export async function getSignerKeyState(mailboxUid, address) {
|
|
83
|
-
const contacts = await cachedMailboxContacts(mailboxUid);
|
|
101
|
+
export async function getSignerKeyState(mailboxUid, address, client) {
|
|
102
|
+
const contacts = await cachedMailboxContacts(mailboxUid, client);
|
|
84
103
|
const state = signerKeyStateFor(contacts, address);
|
|
85
104
|
const wanted = address.trim().toLowerCase();
|
|
86
105
|
const matching = contacts.filter((contact) => contact.emails.some((email) => email.address.trim().toLowerCase() === wanted));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { HiOutlineExclamationTriangle, HiOutlineLockClosed } from "react-icons/hi2";
|
|
3
|
-
import Alert from "
|
|
4
|
-
import Button from "
|
|
3
|
+
import Alert from "../../../../../lib/components/feedback/Alert.js";
|
|
4
|
+
import Button from "../../../../../lib/components/buttons/Button.js";
|
|
5
5
|
import { useResolvedTheme } from "../../../appearance/resolvedTheme.js";
|
|
6
6
|
import { formatColour } from "./color.js";
|
|
7
7
|
import { useThemeSurface } from "./themeSurface.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { Attachment } from "
|
|
3
|
-
import type { MimeAttachment } from "
|
|
2
|
+
import type { Attachment } from "../../../../../lib/mail/mailApi.js";
|
|
3
|
+
import type { MimeAttachment } from "../../../../../lib/crypto/mime.js";
|
|
4
4
|
import { BodyContent } from "./bodyContent.js";
|
|
5
5
|
export interface MessageBodyProps {
|
|
6
6
|
messageUid: string;
|
|
@@ -4,10 +4,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
// SPDX-License-Identifier: MPL-2.0
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
7
|
-
import { ApiRequestError, apiUrl } from "
|
|
8
|
-
import Alert from "
|
|
9
|
-
import Button from "
|
|
10
|
-
import Skeleton from "
|
|
7
|
+
import { ApiRequestError, apiUrl } from "../../../../../lib/util/api.js";
|
|
8
|
+
import Alert from "../../../../../lib/components/feedback/Alert.js";
|
|
9
|
+
import Button from "../../../../../lib/components/buttons/Button.js";
|
|
10
|
+
import Skeleton from "../../../../../lib/components/feedback/Skeleton.js";
|
|
11
11
|
import { useResolvedTheme } from "../../../appearance/resolvedTheme.js";
|
|
12
12
|
import { attachmentSource, cachedBodyContent, fetchBodyContent, makeCidResolver } from "./bodyContent.js";
|
|
13
13
|
import { prepareBodyHtml } from "./bodyHtml.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { MailAddressLike } from "
|
|
2
|
+
import type { MailAddressLike } from "../../../../../lib/mail/mailAddress.js";
|
|
3
3
|
/**
|
|
4
4
|
* The pieces the reading pane is drawn from: a header card that carries the subject, and one card per message. Built from the app's own
|
|
5
5
|
* tokens only (`bg-surface`, `text-text`, `border-border`), so they follow the theme, a branding palette and the Appearance colours; the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import ContactAvatar from "
|
|
3
|
-
import Skeleton from "
|
|
2
|
+
import ContactAvatar from "../../../../../lib/components/avatar/ContactAvatar.js";
|
|
3
|
+
import Skeleton from "../../../../../lib/components/feedback/Skeleton.js";
|
|
4
4
|
import MailAddress from "../MailAddress.js";
|
|
5
5
|
import { UnreadBar, UnreadLabel } from "../unreadStyle.js";
|
|
6
6
|
/**
|
|
@@ -4,9 +4,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
4
4
|
// SPDX-License-Identifier: MPL-2.0
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useMemo } from "react";
|
|
7
|
-
import Alert from "
|
|
8
|
-
import CopyButton from "
|
|
9
|
-
import Drawer from "
|
|
7
|
+
import Alert from "../../../../../lib/components/feedback/Alert.js";
|
|
8
|
+
import CopyButton from "../../../../../lib/components/buttons/CopyButton.js";
|
|
9
|
+
import Drawer from "../../../../../lib/components/overlays/Drawer.js";
|
|
10
10
|
import { MAX_SOURCE_DISPLAY_CHARS, headerText, sourceText } from "./messageExport.js";
|
|
11
11
|
const TITLES = { source: "Message source", headers: "Message details" };
|
|
12
12
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Button from "
|
|
2
|
+
import Button from "../../../../../lib/components/buttons/Button.js";
|
|
3
3
|
import MailAddress, { RecipientLine } from "../MailAddress.js";
|
|
4
4
|
import MessageBody from "./MessageBody.js";
|
|
5
5
|
import { BODY_FONT_STYLE, CardShell, SenderAvatar } from "./MessageCard.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Attachment } from "
|
|
2
|
-
import type { MimeAttachment } from "
|
|
1
|
+
import { Attachment } from "../../../../../lib/mail/mailApi.js";
|
|
2
|
+
import type { MimeAttachment } from "../../../../../lib/crypto/mime.js";
|
|
3
3
|
/** What a message's body is: server-sanitized HTML, or plain text (a message with no HTML part, or the server's plain-text fallback). */
|
|
4
4
|
export type BodyContent = {
|
|
5
5
|
kind: "html";
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Copyright (C) 2026 Jean-Philippe Steinmetz
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
|
-
import { ApiRequestError, apiUrl } from "
|
|
6
|
-
import { attachmentContentUrl } from "
|
|
5
|
+
import { ApiRequestError, apiUrl } from "../../../../../lib/util/api.js";
|
|
6
|
+
import { attachmentContentUrl } from "../../../../../lib/mail/mailApi.js";
|
|
7
7
|
/** How many bodies are remembered for the session - a thread that is expanded, collapsed and expanded again does not ask the server twice. */
|
|
8
8
|
const CACHE_LIMIT = 40;
|
|
9
9
|
/** What the pane asks `/content` for. */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (C) 2026 Jean-Philippe Steinmetz
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
|
-
import { sanitizeMessageBodyHtml } from "
|
|
5
|
+
import { sanitizeMessageBodyHtml } from "../../../../../lib/mail/messageBodySanitizer.js";
|
|
6
6
|
import { parseColour } from "./color.js";
|
|
7
7
|
/**
|
|
8
8
|
* Turning a message's HTML - which is hostile until proven otherwise - into the fragment that goes into its display frame.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (C) 2026 Jean-Philippe Steinmetz
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
|
-
import { binaryStringToBytes, extractAddresses, parseMimeEntity } from "
|
|
5
|
+
import { binaryStringToBytes, extractAddresses, parseMimeEntity } from "../../../../../lib/crypto/mime.js";
|
|
6
6
|
/**
|
|
7
7
|
* What the reading pane does with a message's raw RFC 5322 source (`getMessageRawContent()`, a binary string): show it, save it as a
|
|
8
8
|
* file, and read the From header out of it. Nothing here interprets the message's content beyond its header block.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Attachment } from "
|
|
2
|
-
import type { MimeAttachment } from "
|
|
1
|
+
import type { Attachment } from "../../../../../lib/mail/mailApi.js";
|
|
2
|
+
import type { MimeAttachment } from "../../../../../lib/crypto/mime.js";
|
|
3
3
|
import { BodyContent } from "./bodyContent.js";
|
|
4
4
|
/**
|
|
5
5
|
* Printing one message: a document of its own - the message's header lines, and under them the same sanitized body the reading pane draws -
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { attachmentSource, makeCidResolver } from "./bodyContent.js";
|
|
2
2
|
import { prepareBodyHtml } from "./bodyHtml.js";
|
|
3
3
|
import { frameCsp } from "./frameDocument.js";
|
|
4
|
-
const PRINT_CSS = `
|
|
5
|
-
html{font:14px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:#000;background:#fff}
|
|
6
|
-
body{margin:0;padding:24px}
|
|
7
|
-
h1{font-size:20px;margin:0 0 12px}
|
|
8
|
-
dl{margin:0 0 12px;display:grid;grid-template-columns:max-content 1fr;gap:2px 12px}
|
|
9
|
-
dt{font-weight:600;color:#444}
|
|
10
|
-
dd{margin:0;overflow-wrap:anywhere}
|
|
11
|
-
hr{border:0;border-top:1px solid #999;margin:0 0 16px}
|
|
12
|
-
#rr-body{overflow-wrap:break-word}
|
|
13
|
-
#rr-body img{max-width:100%;height:auto}
|
|
14
|
-
#rr-body pre,pre.rr-text{white-space:pre-wrap;font:inherit;margin:0}
|
|
4
|
+
const PRINT_CSS = `
|
|
5
|
+
html{font:14px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:#000;background:#fff}
|
|
6
|
+
body{margin:0;padding:24px}
|
|
7
|
+
h1{font-size:20px;margin:0 0 12px}
|
|
8
|
+
dl{margin:0 0 12px;display:grid;grid-template-columns:max-content 1fr;gap:2px 12px}
|
|
9
|
+
dt{font-weight:600;color:#444}
|
|
10
|
+
dd{margin:0;overflow-wrap:anywhere}
|
|
11
|
+
hr{border:0;border-top:1px solid #999;margin:0 0 16px}
|
|
12
|
+
#rr-body{overflow-wrap:break-word}
|
|
13
|
+
#rr-body img{max-width:100%;height:auto}
|
|
14
|
+
#rr-body pre,pre.rr-text{white-space:pre-wrap;font:inherit;margin:0}
|
|
15
15
|
`;
|
|
16
16
|
export function escapeHtml(text) {
|
|
17
17
|
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactElement } from "react";
|
|
2
|
-
import { Folder, Message } from "
|
|
2
|
+
import { Folder, Message } from "../../../../../lib/mail/mailApi.js";
|
|
3
3
|
import type { CountTracker } from "../../../mail/folderCounts.js";
|
|
4
4
|
export interface MessageActionsParams {
|
|
5
5
|
/** The message the card shows, and the newest copy of it known (a version another action of the card has since raised). */
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import { useState } from "react";
|
|
6
|
-
import { getMessageRawContent, moveMessage, reportMessage, setMessageFlagged, } from "
|
|
7
|
-
import { addBlockedSender, addSafeSender, checkSenderEntry, removeBlockedSender, removeSafeSender, } from "
|
|
8
|
-
import { ApiRequestError } from "
|
|
6
|
+
import { getMessageRawContent, moveMessage, reportMessage, setMessageFlagged, } from "../../../../../lib/mail/mailApi.js";
|
|
7
|
+
import { addBlockedSender, addSafeSender, checkSenderEntry, removeBlockedSender, removeSafeSender, } from "../../../../../lib/mail/senderListsApi.js";
|
|
8
|
+
import { ApiRequestError } from "../../../../../lib/util/api.js";
|
|
9
|
+
import { useApiClient } from "../../../../../lib/util/apiClientContext.js";
|
|
9
10
|
import { resolveFolderOfType } from "../../../mail/folderOfType.js";
|
|
10
11
|
import { setReadStateMany } from "../../../mail/messageReadState.js";
|
|
11
12
|
import { usePermanentDelete } from "../../../mail/usePermanentDelete.js";
|
|
@@ -41,6 +42,7 @@ function isNotFound(err) {
|
|
|
41
42
|
export function useMessageActions(params) {
|
|
42
43
|
const { message, newest, remember, folders, inJunk, inDeletedItems, ownAddresses = [], trackMessageChange, onMoved, onChanged, onFolderCreated } = params;
|
|
43
44
|
const [busy, setBusy] = useState(false);
|
|
45
|
+
const client = useApiClient();
|
|
44
46
|
const permanent = usePermanentDelete();
|
|
45
47
|
/** Runs one action with the card's other actions held meanwhile. */
|
|
46
48
|
async function exclusive(action) {
|
|
@@ -53,7 +55,7 @@ export function useMessageActions(params) {
|
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
function folderOf(type, name) {
|
|
56
|
-
return resolveFolderOfType(message.mailboxUid, type, name, folders, onFolderCreated);
|
|
58
|
+
return resolveFolderOfType(message.mailboxUid, type, name, folders, onFolderCreated, client);
|
|
57
59
|
}
|
|
58
60
|
/** The card's part of a message having left its folder for `updated`'s: the folder badges and the local search index. */
|
|
59
61
|
function relocated(before, updated) {
|
|
@@ -64,7 +66,7 @@ export function useMessageActions(params) {
|
|
|
64
66
|
/** Moves the message into its mailbox's folder of `type`, and tells the folder badges and the local search index. */
|
|
65
67
|
async function moveToType(type, name) {
|
|
66
68
|
const before = newest();
|
|
67
|
-
const updated = await moveMessage(before, await folderOf(type, name));
|
|
69
|
+
const updated = await moveMessage(before, await folderOf(type, name), client);
|
|
68
70
|
relocated(before, updated);
|
|
69
71
|
return updated;
|
|
70
72
|
}
|
|
@@ -90,7 +92,7 @@ export function useMessageActions(params) {
|
|
|
90
92
|
{
|
|
91
93
|
label: "Undo",
|
|
92
94
|
onClick: () => {
|
|
93
|
-
removeSafeSender(message.mailboxUid, safeSender).then(() => notify({ kind: "info", title: `${safeSender} is no longer a safe sender`, message: "This message stays in the Inbox." }), (err) => notifyApiError(err, "Couldn't undo trusting this sender"));
|
|
95
|
+
removeSafeSender(message.mailboxUid, safeSender, client).then(() => notify({ kind: "info", title: `${safeSender} is no longer a safe sender`, message: "This message stays in the Inbox." }), (err) => notifyApiError(err, "Couldn't undo trusting this sender"));
|
|
94
96
|
},
|
|
95
97
|
},
|
|
96
98
|
{ label: "Manage safe senders", href: senderListsHref(message.mailboxUid) },
|
|
@@ -120,7 +122,7 @@ export function useMessageActions(params) {
|
|
|
120
122
|
await exclusive(async () => {
|
|
121
123
|
let result;
|
|
122
124
|
try {
|
|
123
|
-
result = await reportMessage(message.uid, kind, { alwaysTrustSender });
|
|
125
|
+
result = await reportMessage(message.uid, kind, { alwaysTrustSender }, client);
|
|
124
126
|
}
|
|
125
127
|
catch (err) {
|
|
126
128
|
if (isNotFound(err)) {
|
|
@@ -164,7 +166,7 @@ export function useMessageActions(params) {
|
|
|
164
166
|
onChanged?.(updated, previous);
|
|
165
167
|
},
|
|
166
168
|
track: trackMessageChange,
|
|
167
|
-
});
|
|
169
|
+
}, client);
|
|
168
170
|
}
|
|
169
171
|
catch (err) {
|
|
170
172
|
notifyApiError(err, "Couldn't update the message");
|
|
@@ -175,7 +177,7 @@ export function useMessageActions(params) {
|
|
|
175
177
|
await exclusive(async () => {
|
|
176
178
|
const before = newest();
|
|
177
179
|
try {
|
|
178
|
-
const updated = await setMessageFlagged(before, before.flags.flagged !== true);
|
|
180
|
+
const updated = await setMessageFlagged(before, before.flags.flagged !== true, client);
|
|
179
181
|
remember(updated);
|
|
180
182
|
onChanged?.(updated, before);
|
|
181
183
|
}
|
|
@@ -220,7 +222,7 @@ export function useMessageActions(params) {
|
|
|
220
222
|
let result;
|
|
221
223
|
try {
|
|
222
224
|
const [junkUid, inboxUid] = await Promise.all([folderOf("junk", "Junk Email"), folderOf("inbox", "Inbox")]);
|
|
223
|
-
result = await blockSender(message.mailboxUid, addresses, junkUid, inboxUid);
|
|
225
|
+
result = await blockSender(message.mailboxUid, addresses, junkUid, inboxUid, client);
|
|
224
226
|
}
|
|
225
227
|
catch (err) {
|
|
226
228
|
notifyApiError(err, "Couldn't block this sender");
|
|
@@ -238,7 +240,7 @@ export function useMessageActions(params) {
|
|
|
238
240
|
{
|
|
239
241
|
label: "Undo",
|
|
240
242
|
onClick: () => {
|
|
241
|
-
removeSenderRule(result.rule).then(() => notify({ kind: "info", title: `Unblocked ${address}`, message: "The block was removed. This message stays where it is." }), (err) => notifyApiError(err, "Couldn't undo the block"));
|
|
243
|
+
removeSenderRule(result.rule, client).then(() => notify({ kind: "info", title: `Unblocked ${address}`, message: "The block was removed. This message stays where it is." }), (err) => notifyApiError(err, "Couldn't undo the block"));
|
|
242
244
|
},
|
|
243
245
|
},
|
|
244
246
|
]
|
|
@@ -259,7 +261,7 @@ export function useMessageActions(params) {
|
|
|
259
261
|
}
|
|
260
262
|
let added;
|
|
261
263
|
try {
|
|
262
|
-
added = await addBlockedSender(message.mailboxUid, listed);
|
|
264
|
+
added = await addBlockedSender(message.mailboxUid, listed, client);
|
|
263
265
|
}
|
|
264
266
|
catch (err) {
|
|
265
267
|
if (isNotFound(err)) {
|
|
@@ -281,7 +283,7 @@ export function useMessageActions(params) {
|
|
|
281
283
|
{
|
|
282
284
|
label: "Undo",
|
|
283
285
|
onClick: () => {
|
|
284
|
-
removeBlockedSender(message.mailboxUid, listed).then(() => notify({ kind: "info", title: `Unblocked ${listed}`, message: "The block was removed. This message stays where it is." }), (err) => notifyApiError(err, "Couldn't undo the block"));
|
|
286
|
+
removeBlockedSender(message.mailboxUid, listed, client).then(() => notify({ kind: "info", title: `Unblocked ${listed}`, message: "The block was removed. This message stays where it is." }), (err) => notifyApiError(err, "Couldn't undo the block"));
|
|
285
287
|
},
|
|
286
288
|
},
|
|
287
289
|
]
|
|
@@ -296,7 +298,7 @@ export function useMessageActions(params) {
|
|
|
296
298
|
let result;
|
|
297
299
|
try {
|
|
298
300
|
const [junkUid, inboxUid] = await Promise.all([folderOf("junk", "Junk Email"), folderOf("inbox", "Inbox")]);
|
|
299
|
-
result = await neverBlockSender(message.mailboxUid, addresses, junkUid, inboxUid);
|
|
301
|
+
result = await neverBlockSender(message.mailboxUid, addresses, junkUid, inboxUid, client);
|
|
300
302
|
}
|
|
301
303
|
catch (err) {
|
|
302
304
|
notifyApiError(err, "Couldn't stop blocking this sender");
|
|
@@ -318,7 +320,7 @@ export function useMessageActions(params) {
|
|
|
318
320
|
}
|
|
319
321
|
let added;
|
|
320
322
|
try {
|
|
321
|
-
added = await addSafeSender(message.mailboxUid, listed);
|
|
323
|
+
added = await addSafeSender(message.mailboxUid, listed, client);
|
|
322
324
|
}
|
|
323
325
|
catch (err) {
|
|
324
326
|
if (isNotFound(err)) {
|
|
@@ -340,7 +342,7 @@ export function useMessageActions(params) {
|
|
|
340
342
|
{
|
|
341
343
|
label: "Undo",
|
|
342
344
|
onClick: () => {
|
|
343
|
-
removeSafeSender(message.mailboxUid, listed).then(() => notify({ kind: "info", title: `${listed} is no longer a safe sender`, message: "Its mail is filtered as usual again." }), (err) => notifyApiError(err, "Couldn't undo the change"));
|
|
345
|
+
removeSafeSender(message.mailboxUid, listed, client).then(() => notify({ kind: "info", title: `${listed} is no longer a safe sender`, message: "Its mail is filtered as usual again." }), (err) => notifyApiError(err, "Couldn't undo the change"));
|
|
344
346
|
},
|
|
345
347
|
},
|
|
346
348
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { Message } from "
|
|
2
|
+
import type { Message } from "../../../../lib/mail/mailApi.js";
|
|
3
3
|
/**
|
|
4
4
|
* How an unread message looks in every list of mail (the message list, the conversation list and its child rows, the
|
|
5
5
|
* thread pane's message headers, the folder badges), in one place so they can't drift apart. Modelled on Outlook:
|