@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
package/apps/www/index.tsx
CHANGED
|
@@ -9,7 +9,7 @@ import { prefetchComposeWindow } from "../shared/components/mail/compose/Compose
|
|
|
9
9
|
import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
10
10
|
import { createPortal } from "react-dom";
|
|
11
11
|
import { HiOutlineFlag, HiOutlineLockClosed, HiOutlinePaperClip } from "react-icons/hi2";
|
|
12
|
-
import { ApiRequestError } from "
|
|
12
|
+
import { ApiClient, ApiRequestError } from "../../lib/util/api.js";
|
|
13
13
|
import {
|
|
14
14
|
Folder,
|
|
15
15
|
Mailbox,
|
|
@@ -25,16 +25,17 @@ import {
|
|
|
25
25
|
listMessages,
|
|
26
26
|
moveMessages,
|
|
27
27
|
setMessagesFlagged,
|
|
28
|
-
} from "
|
|
29
|
-
import { Label, listLabels } from "
|
|
28
|
+
} from "../../lib/mail/mailApi.js";
|
|
29
|
+
import { Label, listLabels } from "../../lib/mail/labelsApi.js";
|
|
30
30
|
import {
|
|
31
31
|
ConversationListParams,
|
|
32
32
|
ConversationSummary,
|
|
33
33
|
listConversationMessages,
|
|
34
34
|
listConversations,
|
|
35
|
-
} from "
|
|
36
|
-
import { SearchResult, search as searchMailbox } from "
|
|
37
|
-
import {
|
|
35
|
+
} from "../../lib/mail/conversationsApi.js";
|
|
36
|
+
import { SearchResult, search as searchMailbox } from "../../lib/search/searchApi.js";
|
|
37
|
+
import { useApiClient } from "../../lib/util/apiClientContext.js";
|
|
38
|
+
import { parseSearchQuery, type ParsedSearchQuery } from "../../lib/search/queryGrammar.js";
|
|
38
39
|
import { searchLocalIndex } from "../shared/search/searchTier2.js";
|
|
39
40
|
import {
|
|
40
41
|
MailboxFailure,
|
|
@@ -50,9 +51,9 @@ import {
|
|
|
50
51
|
withTimeout,
|
|
51
52
|
} from "../shared/search/crossMailboxSearch.js";
|
|
52
53
|
import type { Coverage } from "../shared/search/localIndexWorker.js";
|
|
53
|
-
import { getUnlockedKeys, subscribeKeySession, UnlockedKeys } from "
|
|
54
|
-
import { useMessageAttachments } from "
|
|
55
|
-
import useIsMobile from "
|
|
54
|
+
import { getUnlockedKeys, subscribeKeySession, UnlockedKeys } from "../../lib/crypto/keySession.js";
|
|
55
|
+
import { useMessageAttachments } from "../../lib/mail/mailDetailHooks.js";
|
|
56
|
+
import useIsMobile from "../../lib/util/useIsMobile.js";
|
|
56
57
|
import MailShell, {
|
|
57
58
|
AggregateFolderType,
|
|
58
59
|
MailboxFolders,
|
|
@@ -89,8 +90,8 @@ import {
|
|
|
89
90
|
setMailListPreferences,
|
|
90
91
|
sortConversations,
|
|
91
92
|
} from "../shared/components/mail/listPreferences.js";
|
|
92
|
-
import Alert from "
|
|
93
|
-
import Skeleton, { SkeletonList } from "
|
|
93
|
+
import Alert from "../../lib/components/feedback/Alert.js";
|
|
94
|
+
import Skeleton, { SkeletonList } from "../../lib/components/feedback/Skeleton.js";
|
|
94
95
|
import { useUnlockPrompt } from "../shared/components/layout/UnlockPromptProvider.js";
|
|
95
96
|
import { SHORTCUTS } from "../shared/keyboard/keymap.js";
|
|
96
97
|
import { isActivatable } from "../shared/keyboard/targets.js";
|
|
@@ -145,14 +146,14 @@ function stripHtmlToText(html: string): string {
|
|
|
145
146
|
async function decryptEncryptedRows(messages: Message[], unlocked: UnlockedKeys): Promise<Record<string, DecryptedRow>> {
|
|
146
147
|
const encrypted = messages.filter((m) => m.subject === ENCRYPTED_SUBJECT_PLACEHOLDER);
|
|
147
148
|
// Imported once for all the rows, by whichever needs it first.
|
|
148
|
-
let securityModule: Promise<typeof import("
|
|
149
|
+
let securityModule: Promise<typeof import("../../lib/crypto/messageSecurity.js")> | undefined;
|
|
149
150
|
const entries = await Promise.all(
|
|
150
151
|
encrypted.map(async (message): Promise<[string, DecryptedRow] | null> => {
|
|
151
152
|
try {
|
|
152
153
|
const rawMime = await getMessageRawContent(message.uid);
|
|
153
154
|
// Loaded here, on first use: the S/MIME code (PKI.js, ASN.1, X.509) is over half a megabyte and an inbox with
|
|
154
155
|
// no encrypted mail in it never needs it.
|
|
155
|
-
const { evaluateMessageSecurity } = await (securityModule ??= import("
|
|
156
|
+
const { evaluateMessageSecurity } = await (securityModule ??= import("../../lib/crypto/messageSecurity.js"));
|
|
156
157
|
const security = await evaluateMessageSecurity(rawMime, unlocked);
|
|
157
158
|
if (!security.subject && !security.html) {
|
|
158
159
|
return null;
|
|
@@ -297,7 +298,7 @@ async function searchTier3Windows(
|
|
|
297
298
|
windows: ParsedSearchQuery[],
|
|
298
299
|
unlocked: UnlockedKeys | undefined,
|
|
299
300
|
mailboxUid: string,
|
|
300
|
-
loadTier3: () => Promise<typeof import("
|
|
301
|
+
loadTier3: () => Promise<typeof import("../../lib/search/searchTier3.js")>,
|
|
301
302
|
): Promise<SearchResult[]> {
|
|
302
303
|
// Loaded on first use, with the S/MIME code it decrypts through (see `decryptEncryptedRows()`) - once for however many mailboxes a search
|
|
303
304
|
// covers: `loadTier3` hands every one of them the same import.
|
|
@@ -382,11 +383,12 @@ function mailboxesWithMore(cursor: SearchCursor): string[] {
|
|
|
382
383
|
async function resolveHitsToMessages(
|
|
383
384
|
hits: SearchResult[],
|
|
384
385
|
cache: Map<string, Message | null>,
|
|
386
|
+
client?: ApiClient,
|
|
385
387
|
): Promise<{ messages: Message[]; snippets: Record<string, string> }> {
|
|
386
388
|
const toFetch = hits.filter((hit) => !cache.has(hit.entityUid));
|
|
387
389
|
await Promise.all(
|
|
388
390
|
toFetch.map(async (hit) => {
|
|
389
|
-
const message = await getMessage(hit.entityUid).catch(() => null);
|
|
391
|
+
const message = await getMessage(hit.entityUid, client).catch(() => null);
|
|
390
392
|
cache.set(hit.entityUid, message);
|
|
391
393
|
}),
|
|
392
394
|
);
|
|
@@ -489,6 +491,7 @@ async function fetchAggregateMessages(
|
|
|
489
491
|
mailboxFolders: MailboxFolders[],
|
|
490
492
|
type: AggregateFolderType,
|
|
491
493
|
filter: MessageListFilter,
|
|
494
|
+
client?: ApiClient,
|
|
492
495
|
): Promise<Message[]> {
|
|
493
496
|
const perMailbox = await Promise.all(
|
|
494
497
|
mailboxFolders.map(async ({ mailbox, folders }) => {
|
|
@@ -500,7 +503,7 @@ async function fetchAggregateMessages(
|
|
|
500
503
|
// this function's own pagination scope trim) - each mailbox contributes its own newest page and
|
|
501
504
|
// they're merged newest-first, which a different sort key couldn't be made honest across an
|
|
502
505
|
// arbitrary number of independently-paged folders.
|
|
503
|
-
const messages = await listMessages(folder.uid, { limit: MESSAGE_PAGE_SIZE, filter }).catch(() => [] as Message[]);
|
|
506
|
+
const messages = await listMessages(folder.uid, { limit: MESSAGE_PAGE_SIZE, filter }, client).catch(() => [] as Message[]);
|
|
504
507
|
return { mailbox, messages };
|
|
505
508
|
}),
|
|
506
509
|
);
|
|
@@ -517,6 +520,7 @@ async function fetchAggregateConversations(
|
|
|
517
520
|
mailboxFolders: MailboxFolders[],
|
|
518
521
|
type: AggregateFolderType,
|
|
519
522
|
params: ConversationListParams,
|
|
523
|
+
client?: ApiClient,
|
|
520
524
|
): Promise<ListedConversation[]> {
|
|
521
525
|
const perMailbox = await Promise.all(
|
|
522
526
|
mailboxFolders.map(async ({ mailbox, folders }): Promise<ListedConversation[]> => {
|
|
@@ -524,7 +528,7 @@ async function fetchAggregateConversations(
|
|
|
524
528
|
if (!folder) {
|
|
525
529
|
return [];
|
|
526
530
|
}
|
|
527
|
-
const rows = await listConversations(mailbox.uid, { ...params, folderUid: folder.uid, page: 0 }).catch(() => [] as ConversationSummary[]);
|
|
531
|
+
const rows = await listConversations(mailbox.uid, { ...params, folderUid: folder.uid, page: 0 }, client).catch(() => [] as ConversationSummary[]);
|
|
528
532
|
return rows.map((row) => ({ ...row, mailboxUid: mailbox.uid }));
|
|
529
533
|
}),
|
|
530
534
|
);
|
|
@@ -570,6 +574,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
570
574
|
const isMobile = useIsMobile();
|
|
571
575
|
const navigate = useNavigate();
|
|
572
576
|
const { requestUnlock } = useUnlockPrompt();
|
|
577
|
+
const client = useApiClient();
|
|
573
578
|
const [messages, setMessages] = useState<Message[]>([]);
|
|
574
579
|
const [conversations, setConversations] = useState<ListedConversation[]>([]);
|
|
575
580
|
const [loading, setLoading] = useState(true);
|
|
@@ -940,7 +945,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
940
945
|
}
|
|
941
946
|
let cancelled = false;
|
|
942
947
|
setOtherMailboxLabels([]);
|
|
943
|
-
listLabels(labelsMailboxUid, { limit: 200 })
|
|
948
|
+
listLabels(labelsMailboxUid, { limit: 200 }, client)
|
|
944
949
|
.then((result) => {
|
|
945
950
|
if (!cancelled) {
|
|
946
951
|
setOtherMailboxLabels(result);
|
|
@@ -950,12 +955,12 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
950
955
|
return () => {
|
|
951
956
|
cancelled = true;
|
|
952
957
|
};
|
|
953
|
-
}, [labelsMailboxUid, otherMailbox]);
|
|
958
|
+
}, [labelsMailboxUid, otherMailbox, client]);
|
|
954
959
|
|
|
955
960
|
useEffect(() => {
|
|
956
961
|
let cancelled = false;
|
|
957
962
|
setMailboxLabels([]);
|
|
958
|
-
listLabels(activeMailboxUid, { limit: 200 })
|
|
963
|
+
listLabels(activeMailboxUid, { limit: 200 }, client)
|
|
959
964
|
.then((result) => {
|
|
960
965
|
if (!cancelled) {
|
|
961
966
|
setMailboxLabels(result);
|
|
@@ -965,7 +970,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
965
970
|
return () => {
|
|
966
971
|
cancelled = true;
|
|
967
972
|
};
|
|
968
|
-
}, [activeMailboxUid]);
|
|
973
|
+
}, [activeMailboxUid, client]);
|
|
969
974
|
|
|
970
975
|
// Debounce the raw input into the query actually searched, so every keystroke doesn't fire a request.
|
|
971
976
|
useEffect(() => {
|
|
@@ -1083,7 +1088,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1083
1088
|
setLoading(true);
|
|
1084
1089
|
setError(null);
|
|
1085
1090
|
setHasMore(false);
|
|
1086
|
-
void fetchAggregateConversations(mailboxFolders, aggregateFolderType, conversationParams(0))
|
|
1091
|
+
void fetchAggregateConversations(mailboxFolders, aggregateFolderType, conversationParams(0), client)
|
|
1087
1092
|
.then((results) => {
|
|
1088
1093
|
if (isCurrentRun()) {
|
|
1089
1094
|
setConversations(results);
|
|
@@ -1111,7 +1116,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1111
1116
|
setLoading(true);
|
|
1112
1117
|
}
|
|
1113
1118
|
setError(null);
|
|
1114
|
-
listConversations(activeMailboxUid, conversationParams(0))
|
|
1119
|
+
listConversations(activeMailboxUid, conversationParams(0), client)
|
|
1115
1120
|
.then((result) => {
|
|
1116
1121
|
if (isCurrentRun()) {
|
|
1117
1122
|
shownListKeyRef.current = listKey;
|
|
@@ -1145,7 +1150,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1145
1150
|
setLoading(true);
|
|
1146
1151
|
setError(null);
|
|
1147
1152
|
// hasMore stays false (set above) - see fetchAggregateMessages()'s own pagination scope trim.
|
|
1148
|
-
void fetchAggregateMessages(mailboxFolders, aggregateFolderType, effectiveFilter)
|
|
1153
|
+
void fetchAggregateMessages(mailboxFolders, aggregateFolderType, effectiveFilter, client)
|
|
1149
1154
|
.then((results) => {
|
|
1150
1155
|
if (isCurrentRun()) {
|
|
1151
1156
|
setMessages(results);
|
|
@@ -1180,8 +1185,8 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1180
1185
|
const mailboxNames = new Map(searchedMailboxes.map((mb) => [mb.uid, mb.displayName]));
|
|
1181
1186
|
const isSuperseded = () => searchRunIdRef.current !== myRunId;
|
|
1182
1187
|
// Tier 3's code, imported when the first mailbox needs it and shared by the rest.
|
|
1183
|
-
let tier3Module: Promise<typeof import("
|
|
1184
|
-
const loadTier3 = () => (tier3Module ??= import("
|
|
1188
|
+
let tier3Module: Promise<typeof import("../../lib/search/searchTier3.js")> | undefined;
|
|
1189
|
+
const loadTier3 = () => (tier3Module ??= import("../../lib/search/searchTier3.js"));
|
|
1185
1190
|
const failures: MailboxFailure[] = [];
|
|
1186
1191
|
/** The failed mailbox's notice entry. A search of one mailbox has none: its failure fails the search. */
|
|
1187
1192
|
const noteFailure = (uid: string, encrypted: boolean, err: unknown) => {
|
|
@@ -1229,6 +1234,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1229
1234
|
const { messages: resolved, snippets: resolvedSnippets } = await resolveHitsToMessages(
|
|
1230
1235
|
merged,
|
|
1231
1236
|
resolvedMessageCacheRef.current,
|
|
1237
|
+
client,
|
|
1232
1238
|
);
|
|
1233
1239
|
if (isSuperseded() || revealId < revealsApplied) {
|
|
1234
1240
|
return;
|
|
@@ -1259,7 +1265,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1259
1265
|
const run = runs.get(uid)!;
|
|
1260
1266
|
try {
|
|
1261
1267
|
const [tier1Page, tier2Page] = await Promise.all([
|
|
1262
|
-
withTimeout(searchMailbox(parsed.text, tier1SearchParams(parsed, undefined, uid, pageSize)), tier1TimeoutMs),
|
|
1268
|
+
withTimeout(searchMailbox(parsed.text, tier1SearchParams(parsed, undefined, uid, pageSize), client), tier1TimeoutMs),
|
|
1263
1269
|
searchLocalIndex(uid, parsed, run.unlocked, pageSize, 0),
|
|
1264
1270
|
]);
|
|
1265
1271
|
if (isSuperseded()) {
|
|
@@ -1377,7 +1383,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1377
1383
|
shownListKeyRef.current = listKey;
|
|
1378
1384
|
pendingScrollRef.current = snapshot.scrollTop;
|
|
1379
1385
|
}
|
|
1380
|
-
listMessages(folderUid!, listParams)
|
|
1386
|
+
listMessages(folderUid!, listParams, client)
|
|
1381
1387
|
.then((results) => {
|
|
1382
1388
|
if (isCurrentRun()) {
|
|
1383
1389
|
shownListKeyRef.current = listKey;
|
|
@@ -1436,6 +1442,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1436
1442
|
crossMailbox,
|
|
1437
1443
|
searchTargetKey,
|
|
1438
1444
|
activeMailboxUid,
|
|
1445
|
+
client,
|
|
1439
1446
|
]);
|
|
1440
1447
|
|
|
1441
1448
|
// Which folders the messages on screen live in: one the sidebar does not know (the Outbox and Sent Items are made by the server on first use) is looked for -
|
|
@@ -1473,12 +1480,12 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1473
1480
|
try {
|
|
1474
1481
|
if (asConversations && aggregateFolderType) {
|
|
1475
1482
|
// No paging here either: the fresh merged first pages are the list.
|
|
1476
|
-
const fresh = await fetchAggregateConversations(mailboxFolders, aggregateFolderType, conversationParams(0));
|
|
1483
|
+
const fresh = await fetchAggregateConversations(mailboxFolders, aggregateFolderType, conversationParams(0), client);
|
|
1477
1484
|
if (isCurrent()) {
|
|
1478
1485
|
setConversations(fresh);
|
|
1479
1486
|
}
|
|
1480
1487
|
} else if (asConversations) {
|
|
1481
|
-
const fresh = await listConversations(activeMailboxUid, conversationParams(0));
|
|
1488
|
+
const fresh = await listConversations(activeMailboxUid, conversationParams(0), client);
|
|
1482
1489
|
if (!isCurrent()) {
|
|
1483
1490
|
return;
|
|
1484
1491
|
}
|
|
@@ -1488,12 +1495,12 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1488
1495
|
setHasMore(!merged.complete);
|
|
1489
1496
|
} else if (aggregateFolderType) {
|
|
1490
1497
|
// No paging here (see `fetchAggregateMessages()`): the fresh merged first pages are the list.
|
|
1491
|
-
const fresh = await fetchAggregateMessages(mailboxFolders, aggregateFolderType, effectiveFilter);
|
|
1498
|
+
const fresh = await fetchAggregateMessages(mailboxFolders, aggregateFolderType, effectiveFilter, client);
|
|
1492
1499
|
if (isCurrent()) {
|
|
1493
1500
|
setMessages(fresh);
|
|
1494
1501
|
}
|
|
1495
1502
|
} else {
|
|
1496
|
-
const fresh = await listMessages(folderUid!, listParams);
|
|
1503
|
+
const fresh = await listMessages(folderUid!, listParams, client);
|
|
1497
1504
|
if (!isCurrent()) {
|
|
1498
1505
|
return;
|
|
1499
1506
|
}
|
|
@@ -1567,7 +1574,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1567
1574
|
try {
|
|
1568
1575
|
if (asConversations) {
|
|
1569
1576
|
const page = Math.floor(listedOffsetRef.current / MESSAGE_PAGE_SIZE);
|
|
1570
|
-
const more = await listConversations(activeMailboxUid, conversationParams(page));
|
|
1577
|
+
const more = await listConversations(activeMailboxUid, conversationParams(page), client);
|
|
1571
1578
|
if (!isCurrentRun()) {
|
|
1572
1579
|
return;
|
|
1573
1580
|
}
|
|
@@ -1592,7 +1599,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1592
1599
|
try {
|
|
1593
1600
|
const [tier1Page, tier2Page] = await Promise.all([
|
|
1594
1601
|
withTimeout(
|
|
1595
|
-
searchMailbox(parsed.text, tier1SearchParams(parsed, mailboxCursor.tier1Cursor, uid, cursor.pageSize)),
|
|
1602
|
+
searchMailbox(parsed.text, tier1SearchParams(parsed, mailboxCursor.tier1Cursor, uid, cursor.pageSize), client),
|
|
1596
1603
|
tier1TimeoutMs,
|
|
1597
1604
|
),
|
|
1598
1605
|
searchLocalIndex(uid, parsed, getUnlockedKeys(uid), cursor.pageSize, mailboxCursor.tier2Offset),
|
|
@@ -1644,7 +1651,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1644
1651
|
answered.flatMap((page) => page.tier2),
|
|
1645
1652
|
answered.flatMap((page) => page.tier3),
|
|
1646
1653
|
);
|
|
1647
|
-
const { messages: more, snippets: moreSnippets } = await resolveHitsToMessages(merged, resolvedMessageCacheRef.current);
|
|
1654
|
+
const { messages: more, snippets: moreSnippets } = await resolveHitsToMessages(merged, resolvedMessageCacheRef.current, client);
|
|
1648
1655
|
if (!isCurrentRun()) {
|
|
1649
1656
|
return;
|
|
1650
1657
|
}
|
|
@@ -1682,7 +1689,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1682
1689
|
// no longer a page boundary, so this page overlaps rows already shown - `appendUnseenRows()`
|
|
1683
1690
|
// drops those - rather than skipping the message that shifted back across the boundary.
|
|
1684
1691
|
const page = Math.floor(listedOffsetRef.current / MESSAGE_PAGE_SIZE);
|
|
1685
|
-
const more = await listMessages(folderUid!, { ...listParams, page });
|
|
1692
|
+
const more = await listMessages(folderUid!, { ...listParams, page }, client);
|
|
1686
1693
|
if (!isCurrentRun()) {
|
|
1687
1694
|
return;
|
|
1688
1695
|
}
|
|
@@ -1716,6 +1723,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1716
1723
|
activeMailboxUid,
|
|
1717
1724
|
crossMailbox,
|
|
1718
1725
|
searchTargetKey,
|
|
1726
|
+
client,
|
|
1719
1727
|
]);
|
|
1720
1728
|
|
|
1721
1729
|
// Always calls the latest `loadMore` closure so the effect below doesn't need `loadMore` itself in its
|
|
@@ -1884,7 +1892,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1884
1892
|
setResolvingSelection((n) => n + 1);
|
|
1885
1893
|
try {
|
|
1886
1894
|
const loaded = await Promise.all(
|
|
1887
|
-
missing.map(async (id) => [id, await listConversationMessages(activeMailboxUid, id)] as const),
|
|
1895
|
+
missing.map(async (id) => [id, await listConversationMessages(activeMailboxUid, id, {}, client)] as const),
|
|
1888
1896
|
);
|
|
1889
1897
|
setConversationMessagesById((prev) => ({ ...prev, ...Object.fromEntries(loaded) }));
|
|
1890
1898
|
} catch (err) {
|
|
@@ -1989,11 +1997,11 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
1989
1997
|
return inEachMailbox(chosen, async (ofMailbox, group) => {
|
|
1990
1998
|
const archiveFolderUid = foldersOf(ofMailbox).find((f) => f.type === "archive")?.uid;
|
|
1991
1999
|
if (archiveFolderUid) {
|
|
1992
|
-
return moveMessages(group, archiveFolderUid);
|
|
2000
|
+
return moveMessages(group, archiveFolderUid, client);
|
|
1993
2001
|
}
|
|
1994
|
-
const first = await archiveMessage(group[0].uid);
|
|
2002
|
+
const first = await archiveMessage(group[0].uid, client);
|
|
1995
2003
|
const rest = group.slice(1);
|
|
1996
|
-
return rest.length === 0 ? [first] : [first, ...(await moveMessages(rest, first.folderUid))];
|
|
2004
|
+
return rest.length === 0 ? [first] : [first, ...(await moveMessages(rest, first.folderUid, client))];
|
|
1997
2005
|
});
|
|
1998
2006
|
}
|
|
1999
2007
|
|
|
@@ -2025,20 +2033,20 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
2025
2033
|
if (known) {
|
|
2026
2034
|
return known;
|
|
2027
2035
|
}
|
|
2028
|
-
const listed = (await listFolders(ofMailbox)).find((f) => f.type === type);
|
|
2036
|
+
const listed = (await listFolders(ofMailbox, client)).find((f) => f.type === type);
|
|
2029
2037
|
if (listed) {
|
|
2030
2038
|
onFolderCreated(listed);
|
|
2031
2039
|
lazyFoldersRef.current.set(key, listed.uid);
|
|
2032
2040
|
return listed.uid;
|
|
2033
2041
|
}
|
|
2034
|
-
const created = await createFolder({ mailboxUid: ofMailbox, name, type });
|
|
2042
|
+
const created = await createFolder({ mailboxUid: ofMailbox, name, type }, client);
|
|
2035
2043
|
lazyFoldersRef.current.set(key, created.uid);
|
|
2036
2044
|
return created.uid;
|
|
2037
2045
|
}
|
|
2038
2046
|
|
|
2039
2047
|
/** Moves `chosen` into each of its mailbox's own folder of `type` (Deleted Items, Junk), making it where the server has none yet. */
|
|
2040
2048
|
function moveToFolderOfType(chosen: Message[], type: Folder["type"], name: string): Promise<Message[]> {
|
|
2041
|
-
return inEachMailbox(chosen, async (ofMailbox, group) => moveMessages(group, await resolveFolderOfType(type, name, ofMailbox)));
|
|
2049
|
+
return inEachMailbox(chosen, async (ofMailbox, group) => moveMessages(group, await resolveFolderOfType(type, name, ofMailbox), client));
|
|
2042
2050
|
}
|
|
2043
2051
|
|
|
2044
2052
|
/**
|
|
@@ -2059,6 +2067,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
2059
2067
|
);
|
|
2060
2068
|
return { uid: message.uid, version: message.version, labelUids: [...new Set([...labelUids, ...kept])] };
|
|
2061
2069
|
}),
|
|
2070
|
+
client,
|
|
2062
2071
|
),
|
|
2063
2072
|
false,
|
|
2064
2073
|
);
|
|
@@ -2151,7 +2160,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
2151
2160
|
setMoveDialog(null);
|
|
2152
2161
|
return;
|
|
2153
2162
|
}
|
|
2154
|
-
await runBulkAction((moving) => moveMessages(moving, folderUidToMoveTo), true, chosen);
|
|
2163
|
+
await runBulkAction((moving) => moveMessages(moving, folderUidToMoveTo, client), true, chosen);
|
|
2155
2164
|
setMoveDialog(null);
|
|
2156
2165
|
}
|
|
2157
2166
|
|
|
@@ -2412,7 +2421,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
2412
2421
|
const cacheKey = ofMailbox === activeMailboxUid ? id : `${ofMailbox}\u0000${id}`;
|
|
2413
2422
|
let all = conversationMessagesById[cacheKey];
|
|
2414
2423
|
if (!all) {
|
|
2415
|
-
all = await listConversationMessages(ofMailbox, id);
|
|
2424
|
+
all = await listConversationMessages(ofMailbox, id, {}, client);
|
|
2416
2425
|
const loaded = all;
|
|
2417
2426
|
setConversationMessagesById((prev) => ({ ...prev, [cacheKey]: loaded }));
|
|
2418
2427
|
}
|
|
@@ -2517,7 +2526,7 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
2517
2526
|
SHORTCUTS.mail.flag,
|
|
2518
2527
|
() =>
|
|
2519
2528
|
// Flags them all unless every one already is - what the bar's Flag and Unflag would do on this selection.
|
|
2520
|
-
void runOnKeyboardTargets((chosen) => setMessagesFlagged(chosen, !chosen.every((m) => m.flags.flagged)), false),
|
|
2529
|
+
void runOnKeyboardTargets((chosen) => setMessagesFlagged(chosen, !chosen.every((m) => m.flags.flagged), client), false),
|
|
2521
2530
|
{ enabled: keyboardActions && keyboardTargetExists },
|
|
2522
2531
|
);
|
|
2523
2532
|
useShortcut(
|
|
@@ -2630,11 +2639,11 @@ function InboxContent({ userUid }: { userUid?: string }) {
|
|
|
2630
2639
|
false,
|
|
2631
2640
|
)
|
|
2632
2641
|
}
|
|
2633
|
-
onSetFlagged={(flagged) => void runBulkAction((chosen) => setMessagesFlagged(chosen, flagged), false)}
|
|
2642
|
+
onSetFlagged={(flagged) => void runBulkAction((chosen) => setMessagesFlagged(chosen, flagged, client), false)}
|
|
2634
2643
|
shortcuts={keyboardActions}
|
|
2635
2644
|
onArchive={() => void runBulkAction(bulkArchive, true)}
|
|
2636
2645
|
onMoveTo={async (targetFolderUid) => {
|
|
2637
|
-
await runBulkAction((chosen) => moveMessages(chosen, targetFolderUid), true);
|
|
2646
|
+
await runBulkAction((chosen) => moveMessages(chosen, targetFolderUid, client), true);
|
|
2638
2647
|
}}
|
|
2639
2648
|
onReportJunk={() => void moveSelectionToType("junk", "Junk Email")}
|
|
2640
2649
|
onDelete={() =>
|
|
@@ -4,16 +4,17 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import { pageTitle } from "../../shared/navigation/pageTitle.js";
|
|
6
6
|
import React, { useEffect, useState } from "react";
|
|
7
|
-
import { ApiRequestError } from "
|
|
8
|
-
import { Message, getMessage } from "
|
|
9
|
-
import { Label, listLabels } from "
|
|
10
|
-
import { useMessageAttachments } from "
|
|
7
|
+
import { ApiRequestError } from "../../../lib/util/api.js";
|
|
8
|
+
import { Message, getMessage } from "../../../lib/mail/mailApi.js";
|
|
9
|
+
import { Label, listLabels } from "../../../lib/mail/labelsApi.js";
|
|
10
|
+
import { useMessageAttachments } from "../../../lib/mail/mailDetailHooks.js";
|
|
11
|
+
import { useApiClient } from "../../../lib/util/apiClientContext.js";
|
|
11
12
|
import { useMarkMessageRead } from "../../shared/mail/useMarkMessageRead.js";
|
|
12
13
|
import MailShell, { MailShellProps, useMailShell } from "../../shared/components/mail/layout/MailShell.js";
|
|
13
14
|
import { LazyConversationThreadPane, LazyMessageDetailPane } from "../../shared/components/mail/LazyReadingPane.js";
|
|
14
15
|
import { useSearchParams } from "@rapidrest/react/client";
|
|
15
16
|
import { ReadingPaneSkeleton } from "../../shared/components/mail/reading/MessageCard.js";
|
|
16
|
-
import Alert from "
|
|
17
|
+
import Alert from "../../../lib/components/feedback/Alert.js";
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Only reached on mobile (below the `md` breakpoint) — desktop's `apps/www/index.tsx` keeps its existing
|
|
@@ -31,6 +32,7 @@ function MessageDetailPage(props: MailShellProps & { params: { uid: string } })
|
|
|
31
32
|
|
|
32
33
|
function MessageDetailContent({ uid }: { uid: string }) {
|
|
33
34
|
const { mailboxFolders, mailboxUid, onFolderCreated } = useMailShell();
|
|
35
|
+
const client = useApiClient();
|
|
34
36
|
const [message, setMessage] = useState<Message | null>(null);
|
|
35
37
|
const [loading, setLoading] = useState(true);
|
|
36
38
|
const [error, setError] = useState<string | null>(null);
|
|
@@ -40,11 +42,11 @@ function MessageDetailContent({ uid }: { uid: string }) {
|
|
|
40
42
|
useEffect(() => {
|
|
41
43
|
setLoading(true);
|
|
42
44
|
setError(null);
|
|
43
|
-
getMessage(uid)
|
|
45
|
+
getMessage(uid, client)
|
|
44
46
|
.then(setMessage)
|
|
45
47
|
.catch((err) => setError(err instanceof ApiRequestError ? err.message : "Could not load this message."))
|
|
46
48
|
.finally(() => setLoading(false));
|
|
47
|
-
}, [uid]);
|
|
49
|
+
}, [uid, client]);
|
|
48
50
|
|
|
49
51
|
// See `apps/www/index.tsx`'s identical effect's own doc comment - a failure here just hides the
|
|
50
52
|
// Labels control rather than blocking the rest of the page. Keyed on the message's own mailbox, not the
|
|
@@ -55,7 +57,7 @@ function MessageDetailContent({ uid }: { uid: string }) {
|
|
|
55
57
|
return;
|
|
56
58
|
}
|
|
57
59
|
let cancelled = false;
|
|
58
|
-
listLabels(messageMailboxUid, { limit: 200 })
|
|
60
|
+
listLabels(messageMailboxUid, { limit: 200 }, client)
|
|
59
61
|
.then((result) => {
|
|
60
62
|
if (!cancelled) {
|
|
61
63
|
setLabels(result);
|
|
@@ -65,7 +67,7 @@ function MessageDetailContent({ uid }: { uid: string }) {
|
|
|
65
67
|
return () => {
|
|
66
68
|
cancelled = true;
|
|
67
69
|
};
|
|
68
|
-
}, [messageMailboxUid]);
|
|
70
|
+
}, [messageMailboxUid, client]);
|
|
69
71
|
|
|
70
72
|
// A thread loads, marks read and fetches the attachments of each message it opens itself.
|
|
71
73
|
const attachments = useMessageAttachments(conversationId ? null : message);
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import { pageTitle } from "../../../shared/navigation/pageTitle.js";
|
|
6
6
|
import React, { FormEvent, useState } from "react";
|
|
7
|
-
import { toDatetimeLocal } from "
|
|
8
|
-
import { updateMailbox } from "
|
|
7
|
+
import { toDatetimeLocal } from "../../../../lib/util/dateInput.js";
|
|
8
|
+
import { updateMailbox } from "../../../../lib/mail/mailApi.js";
|
|
9
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
9
10
|
import SettingsShell, { SettingsShellProps, useSettingsShell } from "../../../shared/components/settings/layout/SettingsShell.js";
|
|
10
|
-
import Button from "
|
|
11
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
11
12
|
import { notifyApiError } from "../../../shared/notifications/apiErrors.js";
|
|
12
13
|
|
|
13
14
|
const INPUT_CLASS =
|
|
@@ -29,6 +30,7 @@ function AutoReplyContent() {
|
|
|
29
30
|
// resolved to one of them (a mailbox-less caller sees `MailboxProvisioning` instead) — this lookup
|
|
30
31
|
// can't miss, same established non-null pattern as `apps/www/contacts/index.tsx`'s `mailboxUid!`.
|
|
31
32
|
const mailbox = mailboxes.find((mb) => mb.uid === mailboxUid)!;
|
|
33
|
+
const client = useApiClient();
|
|
32
34
|
|
|
33
35
|
const [oofEnabled, setOofEnabled] = useState(mailbox.oofEnabled ?? false);
|
|
34
36
|
const [oofMessage, setOofMessage] = useState(mailbox.oofMessage ?? "");
|
|
@@ -53,7 +55,7 @@ function AutoReplyContent() {
|
|
|
53
55
|
// `null` (not omitted) clears a previously saved window - an omitted field is left as-is.
|
|
54
56
|
oofStartTime: oofStartTime ? new Date(oofStartTime).toISOString() : null,
|
|
55
57
|
oofEndTime: oofEndTime ? new Date(oofEndTime).toISOString() : null,
|
|
56
|
-
});
|
|
58
|
+
}, client);
|
|
57
59
|
setVersion(updated.version);
|
|
58
60
|
setSaved(true);
|
|
59
61
|
} catch (err) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import { pageTitle } from "../../../shared/navigation/pageTitle.js";
|
|
6
6
|
import React, { FormEvent, useId, useRef, useState } from "react";
|
|
7
|
-
import { blockedSendersOf, isSharedWithMe, safeSendersOf } from "
|
|
7
|
+
import { blockedSendersOf, isSharedWithMe, safeSendersOf } from "../../../../lib/mail/mailApi.js";
|
|
8
8
|
import {
|
|
9
9
|
MAX_SENDER_LIST_ENTRIES,
|
|
10
10
|
SenderListKind,
|
|
@@ -14,9 +14,10 @@ import {
|
|
|
14
14
|
checkSenderEntry,
|
|
15
15
|
removeBlockedSender,
|
|
16
16
|
removeSafeSender,
|
|
17
|
-
} from "
|
|
17
|
+
} from "../../../../lib/mail/senderListsApi.js";
|
|
18
18
|
import SettingsShell, { SettingsShellProps, useSettingsShell } from "../../../shared/components/settings/layout/SettingsShell.js";
|
|
19
|
-
import Button from "
|
|
19
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
20
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
20
21
|
import { useMailboxUpdateAccess } from "../../../shared/mail/useMailboxUpdateAccess.js";
|
|
21
22
|
import { notifyApiError } from "../../../shared/notifications/apiErrors.js";
|
|
22
23
|
|
|
@@ -222,6 +223,7 @@ function ListsContent() {
|
|
|
222
223
|
// `SettingsShell` only ever renders its children once `mailboxes` has loaded and `mailboxUid` has resolved to one of them - same established
|
|
223
224
|
// non-null pattern as `apps/www/settings/read-receipts/index.tsx`.
|
|
224
225
|
const mailbox = mailboxes.find((mb) => mb.uid === mailboxUid)!;
|
|
226
|
+
const client = useApiClient();
|
|
225
227
|
const writable = useMailboxUpdateAccess(mailbox);
|
|
226
228
|
// The lists are the owner's (and a manager's) to change; the server does not say which of the two a delegate is, so one who may update is offered the
|
|
227
229
|
// forms and told what a refusal means.
|
|
@@ -277,8 +279,8 @@ function ListsContent() {
|
|
|
277
279
|
otherEntries={safe}
|
|
278
280
|
ownAddresses={ownAddresses}
|
|
279
281
|
editable={writable}
|
|
280
|
-
onAdd={(entry) => change(() => addBlockedSender(mailbox.uid, entry), "Couldn't block this sender")}
|
|
281
|
-
onRemove={(entry) => change(() => removeBlockedSender(mailbox.uid, entry), "Couldn't unblock this sender")}
|
|
282
|
+
onAdd={(entry) => change(() => addBlockedSender(mailbox.uid, entry, client), "Couldn't block this sender")}
|
|
283
|
+
onRemove={(entry) => change(() => removeBlockedSender(mailbox.uid, entry, client), "Couldn't unblock this sender")}
|
|
282
284
|
/>
|
|
283
285
|
<ListSection
|
|
284
286
|
kind="safe"
|
|
@@ -286,8 +288,8 @@ function ListsContent() {
|
|
|
286
288
|
otherEntries={blocked}
|
|
287
289
|
ownAddresses={ownAddresses}
|
|
288
290
|
editable={writable}
|
|
289
|
-
onAdd={(entry) => change(() => addSafeSender(mailbox.uid, entry), "Couldn't add this safe sender")}
|
|
290
|
-
onRemove={(entry) => change(() => removeSafeSender(mailbox.uid, entry), "Couldn't remove this safe sender")}
|
|
291
|
+
onAdd={(entry) => change(() => addSafeSender(mailbox.uid, entry, client), "Couldn't add this safe sender")}
|
|
292
|
+
onRemove={(entry) => change(() => removeSafeSender(mailbox.uid, entry, client), "Couldn't remove this safe sender")}
|
|
291
293
|
/>
|
|
292
294
|
</div>
|
|
293
295
|
</>
|