@rapidmx/web-client 0.21.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 +48 -14
- package/apps/admin/_layout.tsx +2 -2
- package/apps/admin/audit-log/index.tsx +4 -4
- package/apps/admin/branding/index.tsx +3 -3
- package/apps/admin/data-requests/index.tsx +8 -8
- 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 +6 -6
- 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 +7 -7
- package/apps/admin/escrow-scopes/index.tsx +4 -4
- package/apps/admin/escrow-scopes/new/index.tsx +5 -5
- package/apps/admin/index.tsx +6 -6
- package/apps/admin/ingest-queue/index.tsx +4 -4
- package/apps/admin/mailbox-policy/index.tsx +1 -1
- package/apps/admin/mailboxes/[uid].tsx +5 -5
- package/apps/admin/quarantine/index.tsx +5 -5
- package/apps/admin/retention-policy/index.tsx +3 -3
- package/apps/admin/signing-certificates/index.tsx +5 -5
- 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 +4 -4
- package/apps/escrow/index.tsx +4 -4
- package/apps/escrow/matters/[uid].tsx +10 -10
- 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 +1 -1
- 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 +8 -8
- package/apps/shared/components/admin/mailboxes/EraseLeftoverDataDialog.tsx +6 -6
- package/apps/shared/components/admin/mailboxes/EscrowScopeCard.tsx +10 -8
- package/apps/shared/components/admin/mailboxes/LeftoverMailboxesSection.tsx +4 -4
- 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 +5 -5
- package/apps/shared/components/admin/settings/DomainDnsSetup.tsx +5 -5
- package/apps/shared/components/admin/settings/EncryptionPolicyForm.tsx +4 -4
- 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 +4 -4
- package/apps/shared/components/admin/settings/PluginsManager.tsx +5 -5
- package/apps/shared/components/admin/settings/RetentionPolicyForm.tsx +5 -5
- package/apps/shared/components/admin/setup/EscrowSetupStep.tsx +7 -7
- package/apps/shared/components/admin/setup/SetupWizard.tsx +27 -23
- package/apps/shared/components/admin/signOut.ts +1 -1
- package/apps/shared/components/admin/usePagedList.tsx +2 -2
- 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 +5 -5
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- package/apps/shared/components/calendar/TaskQuickForm.tsx +23 -18
- package/apps/shared/components/calendar/TimeGridView.tsx +2 -2
- package/apps/shared/components/calendar/allDay.ts +2 -2
- 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 +27 -17
- package/apps/shared/components/contacts/ContactsSidebar.tsx +7 -5
- 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 +6 -6
- package/apps/shared/components/forms/StringListField.tsx +1 -1
- package/apps/shared/components/layout/AppShell.tsx +12 -10
- package/apps/shared/components/layout/BrandingChrome.tsx +1 -1
- package/apps/shared/components/layout/KeyEnrollmentGate.tsx +9 -9
- package/apps/shared/components/layout/MailboxProvisioning.tsx +8 -6
- package/apps/shared/components/layout/RecoveryCodeUnlock.tsx +9 -9
- package/apps/shared/components/layout/ThemeSwitch.tsx +1 -1
- package/apps/shared/components/layout/UnlockPromptProvider.tsx +6 -6
- package/apps/shared/components/layout/UserMenu.tsx +6 -4
- package/apps/shared/components/mail/ConversationList.tsx +7 -5
- package/apps/shared/components/mail/ConversationThreadPane.tsx +26 -15
- 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 +2 -2
- package/apps/shared/components/mail/MenuButton.tsx +1 -1
- package/apps/shared/components/mail/MessageDetailPane.tsx +32 -30
- 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 +14 -3
- package/apps/shared/components/mail/compose/ComposeWindow.tsx +34 -30
- 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/ScheduleSendPicker.tsx +1 -1
- package/apps/shared/components/mail/compose/encryptionRequirement.ts +2 -2
- package/apps/shared/components/mail/compose/quotedBody.ts +5 -5
- 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/MessageSourceDialog.tsx +3 -3
- 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 +1 -1
- package/apps/shared/components/mail/reading/printMessage.ts +2 -2
- package/apps/shared/components/mail/reading/useMessageActions.ts +28 -21
- package/apps/shared/components/mail/unreadStyle.tsx +1 -1
- package/apps/shared/components/mail/verificationSeals.ts +16 -12
- package/apps/shared/components/mail/writableMailboxes.ts +14 -7
- package/apps/shared/components/rules/RuleBuilder.tsx +1 -1
- package/apps/shared/components/settings/SigningCertificateCard.tsx +4 -4
- 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/ShortcutsDialog.tsx +1 -1
- package/apps/shared/mail/findWellKnownFolderUid.ts +6 -4
- package/apps/shared/mail/folderCounts.ts +8 -4
- package/apps/shared/mail/folderOfType.ts +5 -3
- package/apps/shared/mail/folderTree.ts +1 -1
- package/apps/shared/mail/listSnapshots.ts +2 -2
- package/apps/shared/mail/messageReadState.ts +6 -5
- package/apps/shared/mail/newMailNotifications.ts +2 -2
- 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 +40 -35
- package/apps/shared/mail/outbox/sendOutcomes.ts +20 -15
- 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 +1 -1
- package/apps/shared/mail/senderBlocking.ts +36 -20
- package/apps/shared/mail/useMailConnection.ts +12 -10
- package/apps/shared/mail/useMailLiveUpdates.ts +3 -3
- package/apps/shared/mail/useMailboxUpdateAccess.ts +35 -11
- package/apps/shared/mail/useMarkMessageRead.ts +14 -7
- package/apps/shared/mail/useNewMailNotifications.ts +1 -1
- 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/systemErrors.ts +1 -1
- package/apps/shared/search/LocalIndexLifecycle.tsx +18 -12
- package/apps/shared/search/crossMailboxSearch.ts +3 -3
- package/apps/shared/search/localIndexBuilder.ts +24 -12
- 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/enrollmentTracker.ts +3 -3
- package/apps/shared/signing/enrollmentView.ts +1 -1
- package/apps/shared/signing/signingInfo.ts +1 -1
- package/apps/shared/signing/useSigningEnrollmentWatcher.ts +6 -4
- package/apps/shared/styles/app.css +14 -23
- package/apps/www/_layout.tsx +2 -2
- package/apps/www/calendar/index.tsx +20 -18
- package/apps/www/contacts/[uid].tsx +8 -6
- package/apps/www/contacts/index.tsx +19 -17
- package/apps/www/index.tsx +57 -48
- package/apps/www/messages/[uid].tsx +11 -9
- package/apps/www/settings/auto-reply/index.tsx +6 -4
- package/apps/www/settings/blocked-senders/index.tsx +9 -7
- package/apps/www/settings/encryption/index.tsx +38 -32
- package/apps/www/settings/filters/[uid].tsx +19 -14
- package/apps/www/settings/filters/_mailFilterRuleConfig.tsx +2 -2
- package/apps/www/settings/filters/index.tsx +4 -4
- package/apps/www/settings/filters/new/index.tsx +10 -8
- package/apps/www/settings/labels/index.tsx +12 -10
- package/apps/www/settings/privacy/index.tsx +18 -14
- package/apps/www/settings/profile/index.tsx +16 -11
- package/apps/www/settings/read-receipts/index.tsx +17 -12
- package/apps/www/settings/sharing/index.tsx +6 -6
- package/apps/www/settings/signatures/[uid].tsx +5 -5
- package/apps/www/settings/signatures/index.tsx +4 -4
- package/apps/www/settings/signatures/new/index.tsx +4 -4
- package/apps/www/settings/signatures/signatureDefaults.ts +1 -1
- package/apps/www/tasks/index.tsx +28 -23
- 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 +7 -7
- 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 +5 -5
- 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 +6 -6
- 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 +11 -9
- 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.js +34 -30
- 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/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 +14 -23
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Folder, Message } from "
|
|
3
|
-
import { Label } from "
|
|
2
|
+
import { Folder, Message } from "../../../../lib/mail/mailApi.js";
|
|
3
|
+
import { Label } from "../../../../lib/mail/labelsApi.js";
|
|
4
4
|
export interface MailSelectionBarProps {
|
|
5
5
|
selected: Message[];
|
|
6
6
|
/** Every message currently listed - what "Select all" selects and what `allSelected` is measured against. */
|
|
@@ -5,7 +5,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useEffect, useRef, useState } from "react";
|
|
7
7
|
import { HiCheck, HiChevronDown, HiChevronLeft, HiChevronRight, HiMinus } from "react-icons/hi2";
|
|
8
|
-
import PopoverPortal from "
|
|
8
|
+
import PopoverPortal from "../../../../lib/components/overlays/PopoverPortal.js";
|
|
9
9
|
// `PopoverPortal` positions a fixed-size box (it has no auto-height mode), so the menu's height is
|
|
10
10
|
// computed from its own contents rather than measured - from whichever level is *shown*, so a submenu
|
|
11
11
|
// isn't left standing in the parent menu's taller box. These are the exact heights the classes below
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Attachment, Folder, Message } from "
|
|
3
|
-
import { Label } from "
|
|
4
|
-
import type { MessageSecurityResult } from "
|
|
2
|
+
import { Attachment, Folder, Message } from "../../../../lib/mail/mailApi.js";
|
|
3
|
+
import { Label } from "../../../../lib/mail/labelsApi.js";
|
|
4
|
+
import type { MessageSecurityResult } from "../../../../lib/crypto/messageSecurity.js";
|
|
5
5
|
/** The detail line under a `verified_at_first_open` badge. */
|
|
6
6
|
export declare function verifiedAtFirstOpenMessage(result: MessageSecurityResult): string;
|
|
7
7
|
export interface SenderNameCheck {
|
|
@@ -5,26 +5,27 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useEffect, useRef, useState } from "react";
|
|
7
7
|
import { HiOutlineArchiveBox, HiOutlineArrowUturnLeft, HiOutlineArrowUturnRight, HiOutlineCheck, HiOutlineExclamationTriangle, HiOutlineFolderArrowDown, HiOutlineInboxArrowDown, HiOutlineLockClosed, HiOutlineMoon, HiOutlineNoSymbol, HiOutlineSun, } from "react-icons/hi2";
|
|
8
|
-
import { ApiRequestError } from "
|
|
9
|
-
import { approveReceipt, archiveMessage, attachmentContentUrl, cancelScheduledSend, declineReceipt, getMailbox, getMessage, getMessageRawContent, moveMessage, recallMessage, setMessageLabels, } from "
|
|
10
|
-
import { buildForwardQuote, buildReplyQuote, buildReplyRecipients, buildReplyThreading, forwardSubject, replySubject, } from "
|
|
8
|
+
import { ApiRequestError } from "../../../../lib/util/api.js";
|
|
9
|
+
import { approveReceipt, archiveMessage, attachmentContentUrl, cancelScheduledSend, declineReceipt, getMailbox, getMessage, getMessageRawContent, moveMessage, recallMessage, setMessageLabels, } from "../../../../lib/mail/mailApi.js";
|
|
10
|
+
import { buildForwardQuote, buildReplyQuote, buildReplyRecipients, buildReplyThreading, forwardSubject, replySubject, } from "../../../../lib/mail/compose/composeQuoting.js";
|
|
11
11
|
import MoveToFolderDialog from "./MoveToFolderDialog.js";
|
|
12
12
|
import InviteCard from "./InviteCard.js";
|
|
13
13
|
import { isCalendarAttachment } from "./invite/inviteFormat.js";
|
|
14
14
|
import { useMessageInvite } from "./invite/inviteStore.js";
|
|
15
|
-
import { getUnlockedKeys, subscribeKeySession } from "
|
|
16
|
-
import { extractAddresses } from "
|
|
17
|
-
import { SignerKeyConflictError, signingKeyFingerprints, trustSigner } from "
|
|
18
|
-
import { isLikelyMailingList } from "
|
|
15
|
+
import { getUnlockedKeys, subscribeKeySession } from "../../../../lib/crypto/keySession.js";
|
|
16
|
+
import { extractAddresses } from "../../../../lib/crypto/mime.js";
|
|
17
|
+
import { SignerKeyConflictError, signingKeyFingerprints, trustSigner } from "../../../../lib/crypto/keyvaultApi.js";
|
|
18
|
+
import { isLikelyMailingList } from "../../../../lib/crypto/composeSecurity.js";
|
|
19
19
|
import { clearPinnedSignerCache, getPinnedSignerFingerprints, getSignerKeyState } from "./pinnedSigners.js";
|
|
20
20
|
import { currentVerificationSeal, getVaultGeneration, sendVerificationSeal } from "./verificationSeals.js";
|
|
21
|
-
import { getMyMailboxAccess } from "
|
|
21
|
+
import { getMyMailboxAccess } from "../../../../lib/mail/mailboxAccessApi.js";
|
|
22
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
22
23
|
import KeyChangeReview from "../contacts/KeyChangeReview.js";
|
|
23
24
|
import { KEY_CHANGE_STALE_MESSAGE, sameFingerprint } from "../contacts/contactKeys.js";
|
|
24
25
|
import { prefetchComposeWindow, useCompose } from "./compose/ComposeContext.js";
|
|
25
26
|
import { loadOriginalMessage, prefetchOriginalMessage } from "./compose/quotedBody.js";
|
|
26
27
|
import { formatRecipient } from "./compose/recipients.js";
|
|
27
|
-
import { formatMailAddress } from "
|
|
28
|
+
import { formatMailAddress } from "../../../../lib/mail/mailAddress.js";
|
|
28
29
|
import MailAddress, { RecipientLine } from "./MailAddress.js";
|
|
29
30
|
import { useMailShell } from "./layout/MailShell.js";
|
|
30
31
|
import { ariaKeyShortcuts, withHint } from "../../keyboard/format.js";
|
|
@@ -37,10 +38,10 @@ import { useNavigate } from "../../navigation/index.js";
|
|
|
37
38
|
import { notify } from "../../notifications/store.js";
|
|
38
39
|
import { notifyApiError } from "../../notifications/apiErrors.js";
|
|
39
40
|
import { useMailboxUpdateAccess } from "../../mail/useMailboxUpdateAccess.js";
|
|
40
|
-
import Modal from "
|
|
41
|
-
import Alert from "
|
|
41
|
+
import Modal from "../../../../lib/components/overlays/Modal.js";
|
|
42
|
+
import Alert from "../../../../lib/components/feedback/Alert.js";
|
|
42
43
|
import LabelMenuButton from "./labelMenu.js";
|
|
43
|
-
import Button from "
|
|
44
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
44
45
|
import EncryptedBody from "./reading/EncryptedBody.js";
|
|
45
46
|
import { displaySubject } from "./reading/EncryptedPreview.js";
|
|
46
47
|
import MessageBody, { BodySkeleton } from "./reading/MessageBody.js";
|
|
@@ -271,6 +272,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
271
272
|
const [nowMs, setNowMs] = useState(() => Date.now());
|
|
272
273
|
const { mailboxes, trackMessageChange } = useMailShell();
|
|
273
274
|
const { requestUnlock } = useUnlockPrompt();
|
|
275
|
+
const client = useApiClient();
|
|
274
276
|
// Bumped after a successful on-demand unlock to re-run the effect below - it's not a dependency the
|
|
275
277
|
// effect could read reactively otherwise (getUnlockedKeys() is a plain module-level read, not React
|
|
276
278
|
// state; see keySession.ts's own doc comment).
|
|
@@ -317,14 +319,14 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
317
319
|
// mailbox's own signing keys when it sent the message itself. A failed lookup means no pins, which can only
|
|
318
320
|
// ever make a signature "signer not verified", never verified.
|
|
319
321
|
const senderAddress = message.from.address;
|
|
320
|
-
const pinsPromise = getPinnedSignerFingerprints(message.mailboxUid, senderAddress).then((fingerprints) => ({ loaded: true, fingerprints }), () => ({ loaded: false, fingerprints: [] }));
|
|
322
|
+
const pinsPromise = getPinnedSignerFingerprints(message.mailboxUid, senderAddress, client).then((fingerprints) => ({ loaded: true, fingerprints }), () => ({ loaded: false, fingerprints: [] }));
|
|
321
323
|
// Verification seals (see `verificationSeals.ts`) need unlocked keys and the vault's current master key
|
|
322
324
|
// generation; without either the message is evaluated exactly as before, with no seal. The sender's key records
|
|
323
325
|
// are loaded alongside, so a seal can say when the signer key was later revoked as compromised.
|
|
324
326
|
let keyStatePromise;
|
|
325
|
-
const loadKeyState = () => (keyStatePromise ?? (keyStatePromise = getSignerKeyState(message.mailboxUid, senderAddress).catch(() => undefined)));
|
|
327
|
+
const loadKeyState = () => (keyStatePromise ?? (keyStatePromise = getSignerKeyState(message.mailboxUid, senderAddress, client).catch(() => undefined)));
|
|
326
328
|
const sealContextPromise = getUnlockedKeys(message.mailboxUid)
|
|
327
|
-
? getVaultGeneration(message.mailboxUid).then(async (generation) => generation === undefined ? undefined : { generation, keyState: await loadKeyState() })
|
|
329
|
+
? getVaultGeneration(message.mailboxUid, client).then(async (generation) => generation === undefined ? undefined : { generation, keyState: await loadKeyState() })
|
|
328
330
|
: undefined;
|
|
329
331
|
getMessageRawContent(message.uid)
|
|
330
332
|
.then(async (rawMime) => {
|
|
@@ -333,7 +335,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
333
335
|
}
|
|
334
336
|
// The S/MIME code (PKI.js and the ASN.1/X.509 libraries) loads here, only for a message that is signed or
|
|
335
337
|
// encrypted - it is over half a megabyte, and the pane opens plain messages without it.
|
|
336
|
-
const messageSecurity = await import("
|
|
338
|
+
const messageSecurity = await import("../../../../lib/crypto/messageSecurity.js");
|
|
337
339
|
const [primaryAddress, ...aliasAddresses] = readerAddressesKey ? readerAddressesKey.split(" ") : [];
|
|
338
340
|
const ownAddresses = readerAddressesKey.toLowerCase().split(" ");
|
|
339
341
|
const ownKeys = ownAddresses.includes(senderAddress.toLowerCase()) ? (readerMailbox.keys ?? []) : [];
|
|
@@ -362,7 +364,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
362
364
|
messageSecurity.evaluateMessageSecurity(rawMime, undefined, pinned, primaryAddress));
|
|
363
365
|
if (result.sealToWrite) {
|
|
364
366
|
// Best effort and in the background: never awaited, never shown.
|
|
365
|
-
void sendVerificationSeal(message.uid, result.sealToWrite);
|
|
367
|
+
void sendVerificationSeal(message.uid, result.sealToWrite, client);
|
|
366
368
|
}
|
|
367
369
|
}
|
|
368
370
|
else {
|
|
@@ -381,7 +383,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
381
383
|
const keyChanged = signerKeyChanged(result);
|
|
382
384
|
const [keyState, access] = await Promise.all([
|
|
383
385
|
keyChanged || (unpinned && UNVERIFIED_SIGNER_STATES.has(result.state)) ? loadKeyState() : undefined,
|
|
384
|
-
keyChanged ? getMyMailboxAccess(message.mailboxUid).then((a) => a.canUpdate, () => undefined) : undefined,
|
|
386
|
+
keyChanged ? getMyMailboxAccess(message.mailboxUid, client).then((a) => a.canUpdate, () => undefined) : undefined,
|
|
385
387
|
]);
|
|
386
388
|
if (!cancelled) {
|
|
387
389
|
setSecurity(result);
|
|
@@ -398,7 +400,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
398
400
|
return () => {
|
|
399
401
|
cancelled = true;
|
|
400
402
|
};
|
|
401
|
-
}, [message.uid, message.mailboxUid, message.from.address, message.encrypted, rawEvaluationNeeded, unlockRefresh, readerAddressesKey]);
|
|
403
|
+
}, [message.uid, message.mailboxUid, message.from.address, message.encrypted, rawEvaluationNeeded, unlockRefresh, readerAddressesKey, client]);
|
|
402
404
|
// Whether the body is the locked state right now (an encrypted message this device holds no unlocked keys for), for the subscription below.
|
|
403
405
|
const lockedRef = useRef(false);
|
|
404
406
|
lockedRef.current = security?.decryptError !== undefined && !getUnlockedKeys(message.mailboxUid);
|
|
@@ -443,7 +445,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
443
445
|
}, [sendInProgress, leaseExpiresMs, nowMs]);
|
|
444
446
|
async function reloadMessage() {
|
|
445
447
|
try {
|
|
446
|
-
setReloaded(await getMessage(message.uid));
|
|
448
|
+
setReloaded(await getMessage(message.uid, client));
|
|
447
449
|
setNowMs(Date.now());
|
|
448
450
|
}
|
|
449
451
|
catch {
|
|
@@ -478,7 +480,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
478
480
|
setTrusting(true);
|
|
479
481
|
setTrustError(null);
|
|
480
482
|
try {
|
|
481
|
-
await trustSigner(message.mailboxUid, { address, certificate });
|
|
483
|
+
await trustSigner(message.mailboxUid, { address, certificate }, client);
|
|
482
484
|
clearPinnedSignerCache();
|
|
483
485
|
setTrustConfirmOpen(false);
|
|
484
486
|
setUnlockRefresh((n) => n + 1);
|
|
@@ -504,7 +506,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
504
506
|
/** The replying mailbox's own addresses (primary and aliases), which a reply never goes to - from the mail shell's
|
|
505
507
|
* mailbox list, else fetched; none when neither is available. */
|
|
506
508
|
async function ownAddresses() {
|
|
507
|
-
const mailbox = readerMailbox ?? (await getMailbox(message.mailboxUid).catch(() => undefined));
|
|
509
|
+
const mailbox = readerMailbox ?? (await getMailbox(message.mailboxUid, {}, client).catch(() => undefined));
|
|
508
510
|
return mailbox ? [mailbox.primarySmtpAddress, ...(mailbox.aliasAddresses ?? [])] : [];
|
|
509
511
|
}
|
|
510
512
|
/** Starts fetching what Reply/Reply All/Forward will need (the compose window's code, the original's body) as the
|
|
@@ -586,7 +588,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
586
588
|
setRecalling(true);
|
|
587
589
|
setError(null);
|
|
588
590
|
try {
|
|
589
|
-
const updated = await recallMessage(message.uid);
|
|
591
|
+
const updated = await recallMessage(message.uid, client);
|
|
590
592
|
setConfirming(false);
|
|
591
593
|
onRecalled?.(updated);
|
|
592
594
|
}
|
|
@@ -605,7 +607,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
605
607
|
setCanceling(true);
|
|
606
608
|
setCancelError(null);
|
|
607
609
|
try {
|
|
608
|
-
const updated = await cancelScheduledSend(message, draftsFolderUid);
|
|
610
|
+
const updated = await cancelScheduledSend(message, draftsFolderUid, client);
|
|
609
611
|
// Keeps a `folder:`-scoped Tier 2 local search from still finding it in its old folder.
|
|
610
612
|
void moveLocalEntity(updated.mailboxUid, updated.uid, updated.folderUid);
|
|
611
613
|
// Out of Outbox, into Drafts: both folders' badges.
|
|
@@ -632,7 +634,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
632
634
|
setArchiving(true);
|
|
633
635
|
setArchiveError(null);
|
|
634
636
|
try {
|
|
635
|
-
const updated = await archiveMessage(message.uid);
|
|
637
|
+
const updated = await archiveMessage(message.uid, client);
|
|
636
638
|
void moveLocalEntity(updated.mailboxUid, updated.uid, updated.folderUid);
|
|
637
639
|
trackMessageChange(message, updated).settle();
|
|
638
640
|
onArchived?.(updated);
|
|
@@ -656,7 +658,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
656
658
|
setLabelsError(null);
|
|
657
659
|
try {
|
|
658
660
|
const base = message.version >= latestLabelsMessageRef.current.version ? message : latestLabelsMessageRef.current;
|
|
659
|
-
const updated = await setMessageLabels(base, labelUids);
|
|
661
|
+
const updated = await setMessageLabels(base, labelUids, client);
|
|
660
662
|
latestLabelsMessageRef.current = updated;
|
|
661
663
|
setLabelsMessage(updated);
|
|
662
664
|
onLabelsChanged?.(updated);
|
|
@@ -678,7 +680,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
678
680
|
* passes no `onMoved` would have had nothing moved while the prompt closed as if it had.
|
|
679
681
|
*/
|
|
680
682
|
async function handleMove(folderUid) {
|
|
681
|
-
const updated = await moveMessage(message, folderUid);
|
|
683
|
+
const updated = await moveMessage(message, folderUid, client);
|
|
682
684
|
// Move to, Delete and Report junk are all this: the source folder's badge goes down, the target's up.
|
|
683
685
|
trackMessageChange(message, updated).settle();
|
|
684
686
|
onMoved?.(updated);
|
|
@@ -730,7 +732,7 @@ function MessageDetailContent({ message: messageProp, attachments, backHref, isS
|
|
|
730
732
|
setReceiptBusy(type);
|
|
731
733
|
setReceiptError(null);
|
|
732
734
|
try {
|
|
733
|
-
const updated = await (action === "approve" ? approveReceipt : declineReceipt)(message.uid, type);
|
|
735
|
+
const updated = await (action === "approve" ? approveReceipt : declineReceipt)(message.uid, type, client);
|
|
734
736
|
onReceiptHandled?.(updated);
|
|
735
737
|
}
|
|
736
738
|
catch (err) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Folder } from "
|
|
2
|
+
import { Folder } from "../../../../lib/mail/mailApi.js";
|
|
3
3
|
/**
|
|
4
4
|
* The folder types a message can be moved *into* - Outbox is a transient send queue the server owns, and
|
|
5
5
|
* the non-mail folders (`calendar`/`contacts`/`tasks`/`notes`) aren't message folders at all, so neither is
|
|
@@ -5,11 +5,12 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useEffect, useRef, useState } from "react";
|
|
7
7
|
import { HiOutlineFolder, HiOutlineFolderPlus } from "react-icons/hi2";
|
|
8
|
-
import { ApiRequestError } from "
|
|
9
|
-
import { createFolder } from "
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
8
|
+
import { ApiRequestError } from "../../../../lib/util/api.js";
|
|
9
|
+
import { createFolder } from "../../../../lib/mail/mailApi.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 Modal from "../../../../lib/components/overlays/Modal.js";
|
|
13
14
|
/**
|
|
14
15
|
* The folder types a message can be moved *into* - Outbox is a transient send queue the server owns, and
|
|
15
16
|
* the non-mail folders (`calendar`/`contacts`/`tasks`/`notes`) aren't message folders at all, so neither is
|
|
@@ -58,6 +59,7 @@ export function folderNameError(name, existing) {
|
|
|
58
59
|
* subfolder would be created into a hierarchy nothing here renders.
|
|
59
60
|
*/
|
|
60
61
|
export default function MoveToFolderDialog({ open, onClose, mailboxUid, folders, currentFolderUid, count = 1, onMove, onFolderCreated, }) {
|
|
62
|
+
const client = useApiClient();
|
|
61
63
|
const [filter, setFilter] = useState("");
|
|
62
64
|
const [creating, setCreating] = useState(false);
|
|
63
65
|
const [newName, setNewName] = useState("");
|
|
@@ -112,7 +114,7 @@ export default function MoveToFolderDialog({ open, onClose, mailboxUid, folders,
|
|
|
112
114
|
setError(null);
|
|
113
115
|
let created;
|
|
114
116
|
try {
|
|
115
|
-
created = await createFolder({ mailboxUid, name: newName.trim(), type: "user" });
|
|
117
|
+
created = await createFolder({ mailboxUid, name: newName.trim(), type: "user" }, client);
|
|
116
118
|
}
|
|
117
119
|
catch (err) {
|
|
118
120
|
setError(err instanceof ApiRequestError ? err.message : "Could not create that folder.");
|
|
@@ -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
|
* The state line an Outbox list row carries under its subject: "Sending...", "Retrying (attempt 2, at 10:15)", "Not sent: <reason>" or
|
|
5
5
|
* "Scheduled for ...". Read from the message's own `scheduledSend*` fields (see `outboxItemStatus()`), so it follows the list as the server's
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Button from "
|
|
3
|
-
import Modal from "
|
|
2
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
3
|
+
import Modal from "../../../../lib/components/overlays/Modal.js";
|
|
4
4
|
/**
|
|
5
5
|
* The confirmation in front of every permanent delete. A `Modal`, so Escape and the Cancel button dismiss it and Tab stays inside it. Focus
|
|
6
6
|
* starts on the dialog itself, never on the destructive button, so pressing Enter (or the Delete key again) on a dialog the reader did not
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from "react";
|
|
2
|
-
import { DraftThreading } from "
|
|
2
|
+
import { DraftThreading } from "../../../../../lib/mail/mailApi.js";
|
|
3
|
+
import { ApiClient } from "../../../../../lib/util/api.js";
|
|
3
4
|
import { ResumeCompose } from "../../../mail/outbox/composeBridge.js";
|
|
4
5
|
/** The CSS variable (on `<html>`) that holds how far down the screen the open compose windows start, in px. */
|
|
5
6
|
export declare const COMPOSE_TOP_VAR = "--rr-compose-top";
|
|
@@ -95,6 +96,14 @@ export interface OpenComposeInput {
|
|
|
95
96
|
export interface ComposeContextValue {
|
|
96
97
|
/** Opens a new compose window, stacked alongside any already open (Gmail allows several at once). */
|
|
97
98
|
openCompose: (input: OpenComposeInput) => void;
|
|
99
|
+
/**
|
|
100
|
+
* The active account's `ApiClient` (see `useApiClient()`'s own doc comment), resolved once here rather
|
|
101
|
+
* than by every compose component individually - `ComposeWindow` and everything it renders reach it
|
|
102
|
+
* through this context's own value instead of each calling `useApiClient()` for itself. `useApiClient()`
|
|
103
|
+
* remains independently callable (this is additive, not a replacement) - a future consumer that isn't a
|
|
104
|
+
* descendant of `ComposeProvider` (or doesn't want to depend on it) can still read it directly.
|
|
105
|
+
*/
|
|
106
|
+
client?: ApiClient;
|
|
98
107
|
}
|
|
99
108
|
/** Opens the floating Compose window from anywhere inside `AppShell` (any of the four webmail apps). */
|
|
100
109
|
export declare function useCompose(): ComposeContextValue;
|
|
@@ -4,7 +4,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
// SPDX-License-Identifier: MPL-2.0
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { createContext, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
7
|
-
import
|
|
7
|
+
import { useApiClient } from "../../../../../lib/util/apiClientContext.js";
|
|
8
|
+
import useIsMobile from "../../../../../lib/util/useIsMobile.js";
|
|
8
9
|
import { registerComposeOpener } from "../../../mail/outbox/composeBridge.js";
|
|
9
10
|
import { markComposePhase } from "./composePerf.js";
|
|
10
11
|
import ComposeWindowPlaceholder from "./ComposeWindowPlaceholder.js";
|
|
@@ -81,6 +82,7 @@ export function useCompose() {
|
|
|
81
82
|
*/
|
|
82
83
|
export default function ComposeProvider({ children, userUid, trusted }) {
|
|
83
84
|
const [sessions, setSessions] = useState([]);
|
|
85
|
+
const client = useApiClient();
|
|
84
86
|
const isMobile = useIsMobile();
|
|
85
87
|
const { Component: ComposeWindow, failed, retry: retryLoad } = useComposeWindowComponent(sessions.length > 0);
|
|
86
88
|
// The top edge of the compose windows, published as `--rr-compose-top` so the pop-up stack (`NotificationCenter`) can keep clear of them.
|
|
@@ -134,7 +136,7 @@ export default function ComposeProvider({ children, userUid, trusted }) {
|
|
|
134
136
|
function toggleMinimize(id) {
|
|
135
137
|
setSessions((prev) => prev.map((s) => (s.id === id ? { ...s, minimized: !s.minimized } : s)));
|
|
136
138
|
}
|
|
137
|
-
const value = useMemo(() => ({ openCompose }), []);
|
|
139
|
+
const value = useMemo(() => ({ openCompose, client }), [client]);
|
|
138
140
|
// Code with no React context - a failed send's "Open draft" pop-up - opens windows through this.
|
|
139
141
|
useEffect(() => registerComposeOpener((input) => value.openCompose(input)), [value]);
|
|
140
142
|
// On mobile, a non-minimized `ComposeWindow` renders full-screen (see that component's own doc
|
|
@@ -5,17 +5,17 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useEffect, useRef, useState } from "react";
|
|
7
7
|
import { HiOutlineArrowsPointingIn, HiOutlineArrowsPointingOut, HiOutlineChevronDown, HiOutlineLockClosed, HiOutlineMinus, HiOutlinePaperClip, HiOutlineTrash, HiOutlineXMark, } from "react-icons/hi2";
|
|
8
|
-
import { ApiRequestError } from "
|
|
9
|
-
import { assembleDraft, attachmentContentUrl, createDraft, deleteMessage, getMailbox, getMessage, listFolders, listMailboxes, uploadAttachment, } from "
|
|
10
|
-
import { listMailSignatures } from "
|
|
11
|
-
import { buildComposeBodyHtml } from "
|
|
8
|
+
import { ApiRequestError } from "../../../../../lib/util/api.js";
|
|
9
|
+
import { assembleDraft, attachmentContentUrl, createDraft, deleteMessage, getMailbox, getMessage, listFolders, listMailboxes, uploadAttachment, } from "../../../../../lib/mail/mailApi.js";
|
|
10
|
+
import { listMailSignatures } from "../../../../../lib/mail/mailSignaturesApi.js";
|
|
11
|
+
import { buildComposeBodyHtml } from "../../../../../lib/mail/compose/composeQuoting.js";
|
|
12
12
|
import { peekMailboxWritability, useMailboxWritability } from "../writableMailboxes.js";
|
|
13
13
|
import { orderMailboxes, primaryMailboxUid } from "../../../mail/primaryMailbox.js";
|
|
14
|
-
import { resolveRecipientEncryption } from "
|
|
15
|
-
import { getUnlockedKeys, subscribeKeySession } from "
|
|
16
|
-
import { findActivePublicKey, getEncryptionPolicy, lookupKeys } from "
|
|
14
|
+
import { resolveRecipientEncryption } from "../../../../../lib/crypto/composeSecurity.js";
|
|
15
|
+
import { getUnlockedKeys, subscribeKeySession } from "../../../../../lib/crypto/keySession.js";
|
|
16
|
+
import { findActivePublicKey, getEncryptionPolicy, lookupKeys } from "../../../../../lib/crypto/keyvaultApi.js";
|
|
17
17
|
import { useUnlockPrompt } from "../../layout/UnlockPromptProvider.js";
|
|
18
|
-
import useIsMobile from "
|
|
18
|
+
import useIsMobile from "../../../../../lib/util/useIsMobile.js";
|
|
19
19
|
import { notify } from "../../../notifications/store.js";
|
|
20
20
|
import { evaluateEncryptionRequirement } from "./encryptionRequirement.js";
|
|
21
21
|
import { decideSend } from "../../../mail/outbox/sendDecision.js";
|
|
@@ -31,9 +31,9 @@ import RecipientInput from "./RecipientInput.js";
|
|
|
31
31
|
import { parseRecipientList } from "./recipients.js";
|
|
32
32
|
import RichTextEditor from "./RichTextEditor.js";
|
|
33
33
|
import ScheduleSendPicker from "./ScheduleSendPicker.js";
|
|
34
|
-
import Alert from "
|
|
35
|
-
import Button from "
|
|
36
|
-
import Modal from "
|
|
34
|
+
import Alert from "../../../../../lib/components/feedback/Alert.js";
|
|
35
|
+
import Button from "../../../../../lib/components/buttons/Button.js";
|
|
36
|
+
import Modal from "../../../../../lib/components/overlays/Modal.js";
|
|
37
37
|
/** Debounce between the last edit and the draft autosave. */
|
|
38
38
|
export const DEFAULT_AUTOSAVE_DELAY_MS = 2000;
|
|
39
39
|
/** The longest an edit stays unsaved while the user keeps typing (the debounce above restarts on every keystroke, so it alone never fires then). */
|
|
@@ -119,7 +119,11 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
119
119
|
const [hasUploads, setHasUploads] = useState(!!resume && resume.attachments.length > 0);
|
|
120
120
|
const isMobile = useIsMobile();
|
|
121
121
|
const { requestUnlock } = useUnlockPrompt();
|
|
122
|
-
|
|
122
|
+
// Resolved once by `ComposeProvider` (see `ComposeContext.tsx`'s own doc comment on `ComposeContextValue.client`)
|
|
123
|
+
// rather than calling `useApiClient()` again here - every REST call below (including `startSend()`'s own,
|
|
124
|
+
// see `sendJob.ts`) passes it through as the trailing `client` argument, `undefined` (the default global
|
|
125
|
+
// cookie-based fetch) for every existing caller.
|
|
126
|
+
const { openCompose, client } = useCompose();
|
|
123
127
|
const keyEnv = useKeyEnvironment();
|
|
124
128
|
// Bumped after a successful on-demand unlock to force a re-render - `getUnlockedKeys()` below is a
|
|
125
129
|
// plain read from a module-level store, not React state, so nothing else would pick up the change.
|
|
@@ -219,7 +223,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
219
223
|
// to apply - see the transition rules there.
|
|
220
224
|
useEffect(() => {
|
|
221
225
|
let cancelled = false;
|
|
222
|
-
listMailboxes({ limit: 100 })
|
|
226
|
+
listMailboxes({ limit: 100 }, client)
|
|
223
227
|
.then((result) => {
|
|
224
228
|
if (cancelled) {
|
|
225
229
|
return;
|
|
@@ -256,14 +260,14 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
256
260
|
async function load() {
|
|
257
261
|
await Promise.all([
|
|
258
262
|
mailboxLoaded ||
|
|
259
|
-
getMailbox(mailboxUid).then((result) => {
|
|
263
|
+
getMailbox(mailboxUid, {}, client).then((result) => {
|
|
260
264
|
mailboxLoaded = true;
|
|
261
265
|
if (!cancelled) {
|
|
262
266
|
setMailbox(result);
|
|
263
267
|
}
|
|
264
268
|
}, () => undefined),
|
|
265
269
|
policyLoaded ||
|
|
266
|
-
getEncryptionPolicy().then((result) => {
|
|
270
|
+
getEncryptionPolicy(client).then((result) => {
|
|
267
271
|
policyLoaded = true;
|
|
268
272
|
if (!cancelled) {
|
|
269
273
|
setEncryptionPolicy(result);
|
|
@@ -287,7 +291,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
287
291
|
// Cancellable so a slow response for a mailbox the user has since switched away from can't point
|
|
288
292
|
// the new draft at the wrong mailbox's Drafts folder.
|
|
289
293
|
let cancelled = false;
|
|
290
|
-
listFolders(mailboxUid)
|
|
294
|
+
listFolders(mailboxUid, client)
|
|
291
295
|
.then((folders) => {
|
|
292
296
|
if (!cancelled) {
|
|
293
297
|
setDraftsFolderUid(folders.find((f) => f.type === "drafts")?.uid);
|
|
@@ -326,7 +330,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
326
330
|
for (const recipient of unchecked) {
|
|
327
331
|
const key = addressCacheKey(recipient.address);
|
|
328
332
|
inFlight.add(key);
|
|
329
|
-
void lookupKeys(mailbox.uid, recipient.address)
|
|
333
|
+
void lookupKeys(mailbox.uid, recipient.address, client)
|
|
330
334
|
.then((lookup) => ({ lookup }), () => null)
|
|
331
335
|
.then((result) => {
|
|
332
336
|
inFlight.delete(key);
|
|
@@ -387,7 +391,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
387
391
|
if (!mailboxUid || contentReady || defaultSignature) {
|
|
388
392
|
return;
|
|
389
393
|
}
|
|
390
|
-
listMailSignatures(mailboxUid)
|
|
394
|
+
listMailSignatures(mailboxUid, {}, client)
|
|
391
395
|
.then((signatures) => {
|
|
392
396
|
const signature = signatures.find((s) => signatureContext === "new" ? s.isDefaultForNewMessages : s.isDefaultForReplyForward);
|
|
393
397
|
setDefaultSignature({ html: signature?.contentHtml });
|
|
@@ -419,11 +423,11 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
419
423
|
// `In-Reply-To`/`References` and groups the message into the thread being answered. Recorded on
|
|
420
424
|
// every draft this window creates, including the replacement one a From switch makes - the thread
|
|
421
425
|
// doesn't change because the sending mailbox did.
|
|
422
|
-
createDraft(mailboxUid, draftsFolderUid, session.threading)
|
|
426
|
+
createDraft(mailboxUid, draftsFolderUid, session.threading, client)
|
|
423
427
|
.then((created) => {
|
|
424
428
|
if (cancelled) {
|
|
425
429
|
// The sender changed while this was in flight - discard the now-orphaned draft.
|
|
426
|
-
void deleteMessage(created.uid, created.version).catch(() => undefined);
|
|
430
|
+
void deleteMessage(created.uid, created.version, client).catch(() => undefined);
|
|
427
431
|
return;
|
|
428
432
|
}
|
|
429
433
|
setDraft(created);
|
|
@@ -463,13 +467,13 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
463
467
|
// Once it's out of `supersededDraftsRef` a landing save can't update `superseded.version` any more.
|
|
464
468
|
const version = saved?.uid === superseded.uid ? saved.version : superseded.version;
|
|
465
469
|
try {
|
|
466
|
-
await deleteMessage(superseded.uid, version);
|
|
470
|
+
await deleteMessage(superseded.uid, version, client);
|
|
467
471
|
}
|
|
468
472
|
catch {
|
|
469
473
|
try {
|
|
470
|
-
const fresh = await getMessage(superseded.uid);
|
|
474
|
+
const fresh = await getMessage(superseded.uid, client);
|
|
471
475
|
if (isStillDraft(fresh, superseded.folderUid)) {
|
|
472
|
-
await deleteMessage(fresh.uid, fresh.version);
|
|
476
|
+
await deleteMessage(fresh.uid, fresh.version, client);
|
|
473
477
|
}
|
|
474
478
|
}
|
|
475
479
|
catch {
|
|
@@ -602,7 +606,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
602
606
|
* current version. */
|
|
603
607
|
async function refreshDraftVersion(uid) {
|
|
604
608
|
try {
|
|
605
|
-
const fresh = await getMessage(uid);
|
|
609
|
+
const fresh = await getMessage(uid, client);
|
|
606
610
|
setDraft((prev) => (prev?.uid === fresh.uid && fresh.version > prev.version ? { ...prev, version: fresh.version } : prev));
|
|
607
611
|
}
|
|
608
612
|
catch {
|
|
@@ -713,7 +717,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
713
717
|
}
|
|
714
718
|
pendingSaveRef.current = false;
|
|
715
719
|
finishedRef.current = true;
|
|
716
|
-
if (!startSend(request)) {
|
|
720
|
+
if (!startSend(request, client)) {
|
|
717
721
|
finishedRef.current = false;
|
|
718
722
|
setSendError("This message is already being sent.");
|
|
719
723
|
return;
|
|
@@ -778,7 +782,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
778
782
|
bcc: parseAddresses(current.bcc),
|
|
779
783
|
subject: current.subject,
|
|
780
784
|
html: current.html,
|
|
781
|
-
});
|
|
785
|
+
}, client);
|
|
782
786
|
lastSavedRef.current = savedKey;
|
|
783
787
|
saveErrorRef.current = null;
|
|
784
788
|
// A From switch may have replaced the draft while this was in flight - never resurrect it,
|
|
@@ -818,13 +822,13 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
818
822
|
const saved = await saveInFlightRef.current;
|
|
819
823
|
const version = Math.max(current.version, saved?.uid === current.uid ? saved.version : 0);
|
|
820
824
|
try {
|
|
821
|
-
await deleteMessage(current.uid, version);
|
|
825
|
+
await deleteMessage(current.uid, version, client);
|
|
822
826
|
}
|
|
823
827
|
catch (err) {
|
|
824
828
|
if (!(err instanceof ApiRequestError) || (err.status !== 404 && err.status !== 409)) {
|
|
825
829
|
throw err;
|
|
826
830
|
}
|
|
827
|
-
const fresh = await getMessage(current.uid).catch((getErr) => {
|
|
831
|
+
const fresh = await getMessage(current.uid, client).catch((getErr) => {
|
|
828
832
|
if (getErr instanceof ApiRequestError && getErr.status === 404) {
|
|
829
833
|
return null;
|
|
830
834
|
}
|
|
@@ -837,7 +841,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
837
841
|
if (!isStillDraft(fresh, current.folderUid)) {
|
|
838
842
|
throw new ApiRequestError(NO_LONGER_A_DRAFT_MESSAGE, 409);
|
|
839
843
|
}
|
|
840
|
-
await deleteMessage(fresh.uid, fresh.version);
|
|
844
|
+
await deleteMessage(fresh.uid, fresh.version, client);
|
|
841
845
|
}
|
|
842
846
|
}
|
|
843
847
|
/**
|
|
@@ -985,7 +989,7 @@ export default function ComposeWindow({ session, onClose, onToggleMinimize, user
|
|
|
985
989
|
await previous;
|
|
986
990
|
try {
|
|
987
991
|
// Its answer (the new version) is what a later delete waits for through `saveInFlightRef`, like any save's.
|
|
988
|
-
return await assembleDraft(target.uid, { to: [], cc: [], bcc: [], subject: "", html: "" });
|
|
992
|
+
return await assembleDraft(target.uid, { to: [], cc: [], bcc: [], subject: "", html: "" }, client);
|
|
989
993
|
}
|
|
990
994
|
catch {
|
|
991
995
|
notify({
|
|
@@ -5,10 +5,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useEffect } from "react";
|
|
7
7
|
import { HiOutlineMinus, HiOutlineXMark } from "react-icons/hi2";
|
|
8
|
-
import Skeleton from "
|
|
9
|
-
import Alert from "
|
|
10
|
-
import Button from "
|
|
11
|
-
import useIsMobile from "
|
|
8
|
+
import Skeleton from "../../../../../lib/components/feedback/Skeleton.js";
|
|
9
|
+
import Alert from "../../../../../lib/components/feedback/Alert.js";
|
|
10
|
+
import Button from "../../../../../lib/components/buttons/Button.js";
|
|
11
|
+
import useIsMobile from "../../../../../lib/util/useIsMobile.js";
|
|
12
12
|
import { markComposePhase } from "./composePerf.js";
|
|
13
13
|
/**
|
|
14
14
|
* What stands in for the compose window in the moment between clicking Compose/Reply/Forward and the window's code being
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { EMOJI_CATEGORIES } from "
|
|
3
|
-
import PopoverPortal from "
|
|
2
|
+
import { EMOJI_CATEGORIES } from "../../../../../lib/mail/compose/emojiData.js";
|
|
3
|
+
import PopoverPortal from "../../../../../lib/components/overlays/PopoverPortal.js";
|
|
4
4
|
const CATEGORY_LABELS = {
|
|
5
5
|
people: "Smileys & People",
|
|
6
6
|
nature: "Animals & Nature",
|
|
@@ -4,9 +4,9 @@ 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, useState } from "react";
|
|
7
|
-
import { ApiRequestError } from "
|
|
8
|
-
import { searchGifs } from "
|
|
9
|
-
import PopoverPortal from "
|
|
7
|
+
import { ApiRequestError } from "../../../../../lib/util/api.js";
|
|
8
|
+
import { searchGifs } from "../../../../../lib/mail/compose/giphyApi.js";
|
|
9
|
+
import PopoverPortal from "../../../../../lib/components/overlays/PopoverPortal.js";
|
|
10
10
|
const SEARCH_DEBOUNCE_MS = 350;
|
|
11
11
|
const WIDTH = 288;
|
|
12
12
|
const HEIGHT = 320;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type ContactSuggestionOptions, type RecipientSuggestion } from "
|
|
2
|
+
import { type ContactSuggestionOptions, type RecipientSuggestion } from "../../../../../lib/mail/directoryApi.js";
|
|
3
3
|
/** How long typing must pause before suggestions are requested. */
|
|
4
4
|
export declare const RECIPIENT_SUGGESTION_DEBOUNCE_MS = 150;
|
|
5
5
|
export interface RecipientInputProps {
|
|
@@ -6,7 +6,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
import { useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
7
7
|
import { createPortal } from "react-dom";
|
|
8
8
|
import { HiOutlineXMark } from "react-icons/hi2";
|
|
9
|
-
import { fetchRecipientSuggestions, RECIPIENT_SUGGESTION_MIN_QUERY_LENGTH, } from "
|
|
9
|
+
import { fetchRecipientSuggestions, RECIPIENT_SUGGESTION_MIN_QUERY_LENGTH, } from "../../../../../lib/mail/directoryApi.js";
|
|
10
10
|
import { formatRecipient, isValidRecipientAddress, parseRecipient, splitRecipientList, splitTypedRecipients } from "./recipients.js";
|
|
11
11
|
/** How long typing must pause before suggestions are requested. */
|
|
12
12
|
export const RECIPIENT_SUGGESTION_DEBOUNCE_MS = 150;
|
|
@@ -4,7 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
// SPDX-License-Identifier: MPL-2.0
|
|
5
5
|
///////////////////////////////////////////////////////////////////////////////
|
|
6
6
|
import { useState } from "react";
|
|
7
|
-
import PopoverPortal from "
|
|
7
|
+
import PopoverPortal from "../../../../../lib/components/overlays/PopoverPortal.js";
|
|
8
8
|
/**
|
|
9
9
|
* The "Send later" popover next to Compose's Send button — same `PopoverPortal` shell
|
|
10
10
|
* `EmojiPicker`/`GifPicker`/`ResourcePicker` already use, just holding a single `datetime-local` input
|