@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
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { useState } from "react";
|
|
6
6
|
import { HiChevronDown, HiChevronRight, HiOutlineFlag, HiOutlinePaperClip } from "react-icons/hi2";
|
|
7
|
-
import { ApiRequestError } from "
|
|
8
|
-
import { Message } from "
|
|
9
|
-
import { formatMailAddress } from "
|
|
7
|
+
import { ApiRequestError } from "../../../../lib/util/api.js";
|
|
8
|
+
import { Message } from "../../../../lib/mail/mailApi.js";
|
|
9
|
+
import { formatMailAddress } from "../../../../lib/mail/mailAddress.js";
|
|
10
10
|
import MailAddress from "./MailAddress.js";
|
|
11
11
|
import { EncryptedPreview, conversationLooksEncrypted } from "./reading/EncryptedPreview.js";
|
|
12
|
-
import { ConversationSummary, listConversationMessages } from "
|
|
12
|
+
import { ConversationSummary, listConversationMessages } from "../../../../lib/mail/conversationsApi.js";
|
|
13
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
13
14
|
import { ROW_FOCUS_CLASS, UnreadBar, UnreadLabel, dateClass, isUnread, rowClass, senderClass, subjectClass } from "./unreadStyle.js";
|
|
14
15
|
import SwipeRow from "./SwipeRow.js";
|
|
15
16
|
import InviteRowChip from "./invite/InviteRowChip.js";
|
|
@@ -96,6 +97,7 @@ export default function ConversationList({
|
|
|
96
97
|
swipe,
|
|
97
98
|
newestFirst,
|
|
98
99
|
}: ConversationListProps) {
|
|
100
|
+
const client = useApiClient();
|
|
99
101
|
const [expanded, setExpanded] = useState<Set<string>>(new Set());
|
|
100
102
|
const [messagesById, setMessagesById] = useState<Record<string, Message[]>>({});
|
|
101
103
|
const [loadingIds, setLoadingIds] = useState<Set<string>>(new Set());
|
|
@@ -127,7 +129,7 @@ export default function ConversationList({
|
|
|
127
129
|
delete next[id];
|
|
128
130
|
return next;
|
|
129
131
|
});
|
|
130
|
-
listConversationMessages(conversation.mailboxUid ?? mailboxUid, conversation.conversationId)
|
|
132
|
+
listConversationMessages(conversation.mailboxUid ?? mailboxUid, conversation.conversationId, {}, client)
|
|
131
133
|
.then((loaded) => setMessagesById((prev) => ({ ...prev, [id]: loaded })))
|
|
132
134
|
.catch((err) =>
|
|
133
135
|
setErrorsById((prev) => ({
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
6
6
|
import { flushSync } from "react-dom";
|
|
7
|
-
import { ApiRequestError } from "
|
|
8
|
-
import { Attachment, Folder, Message, listAttachments } from "
|
|
9
|
-
import { ConversationSummary, listConversationMessages } from "
|
|
10
|
-
import { Label } from "
|
|
11
|
-
import
|
|
7
|
+
import { ApiClient, ApiRequestError } from "../../../../lib/util/api.js";
|
|
8
|
+
import { Attachment, Folder, Message, listAttachments } from "../../../../lib/mail/mailApi.js";
|
|
9
|
+
import { ConversationSummary, listConversationMessages } from "../../../../lib/mail/conversationsApi.js";
|
|
10
|
+
import { Label } from "../../../../lib/mail/labelsApi.js";
|
|
11
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
12
|
+
import Alert from "../../../../lib/components/feedback/Alert.js";
|
|
12
13
|
import MessageDetailPane from "./MessageDetailPane.js";
|
|
13
14
|
import { EncryptedPreview, displaySubject } from "./reading/EncryptedPreview.js";
|
|
14
15
|
import { CollapsedCard, SkeletonCards, SubjectCard } from "./reading/MessageCard.js";
|
|
@@ -108,14 +109,23 @@ function scrollingAncestor(node: HTMLElement): HTMLElement {
|
|
|
108
109
|
* The pane reads newest first always, whatever the *list* is sorted by: it is the reading order for mail,
|
|
109
110
|
* and it means the message a conversation row stands for is the entry at the top.
|
|
110
111
|
*/
|
|
111
|
-
async function loadThread(
|
|
112
|
+
async function loadThread(
|
|
113
|
+
mailboxUid: string,
|
|
114
|
+
conversationId: string,
|
|
115
|
+
client?: ApiClient,
|
|
116
|
+
): Promise<{ messages: Message[]; truncated: boolean }> {
|
|
112
117
|
const messages: Message[] = [];
|
|
113
118
|
let more = true;
|
|
114
119
|
while (more && messages.length < THREAD_MESSAGE_LIMIT) {
|
|
115
|
-
const page = await listConversationMessages(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
const page = await listConversationMessages(
|
|
121
|
+
mailboxUid,
|
|
122
|
+
conversationId,
|
|
123
|
+
{
|
|
124
|
+
page: messages.length / THREAD_PAGE_SIZE,
|
|
125
|
+
limit: THREAD_PAGE_SIZE,
|
|
126
|
+
},
|
|
127
|
+
client,
|
|
128
|
+
);
|
|
119
129
|
messages.push(...page);
|
|
120
130
|
// A short page is the last one; a full page means asking for another.
|
|
121
131
|
more = page.length === THREAD_PAGE_SIZE;
|
|
@@ -179,6 +189,7 @@ export default function ConversationThreadPane({
|
|
|
179
189
|
shortcuts,
|
|
180
190
|
}: ConversationThreadPaneProps) {
|
|
181
191
|
const { trackMessageChange, live } = useMailShell();
|
|
192
|
+
const client = useApiClient();
|
|
182
193
|
// The replies and forwards this tab has sent, drawn at the top of the thread they continue until the server's own copy is in it.
|
|
183
194
|
const outgoing = useOutgoingReplies();
|
|
184
195
|
const [messages, setMessages] = useState<Message[]>([]);
|
|
@@ -240,7 +251,7 @@ export default function ConversationThreadPane({
|
|
|
240
251
|
return;
|
|
241
252
|
}
|
|
242
253
|
setLoading(true);
|
|
243
|
-
loadThread(mailboxUid, conversationId)
|
|
254
|
+
loadThread(mailboxUid, conversationId, client)
|
|
244
255
|
.then((loaded) => {
|
|
245
256
|
if (generation !== generationRef.current) return;
|
|
246
257
|
loadedIdRef.current = conversationId;
|
|
@@ -256,7 +267,7 @@ export default function ConversationThreadPane({
|
|
|
256
267
|
.finally(() => {
|
|
257
268
|
if (generation === generationRef.current) setLoading(false);
|
|
258
269
|
});
|
|
259
|
-
}, [conversationId, mailboxUid]);
|
|
270
|
+
}, [conversationId, mailboxUid, client]);
|
|
260
271
|
|
|
261
272
|
// Opening the thread, and opening a different message of the same thread, both set the run of expanded
|
|
262
273
|
// messages and ask for that message to be scrolled to. `messages` is a dependency because the thread's
|
|
@@ -332,7 +343,7 @@ export default function ConversationThreadPane({
|
|
|
332
343
|
if (!expandedUids.has(uid)) continue;
|
|
333
344
|
if (message.hasAttachments && !attachmentsRequestedRef.current.has(uid)) {
|
|
334
345
|
attachmentsRequestedRef.current.add(uid);
|
|
335
|
-
listAttachments(message.folderUid, uid)
|
|
346
|
+
listAttachments(message.folderUid, uid, client)
|
|
336
347
|
.then((loaded) => {
|
|
337
348
|
if (generation === generationRef.current) {
|
|
338
349
|
setAttachmentsByUid((prev) => ({ ...prev, [uid]: loaded }));
|
|
@@ -366,7 +377,7 @@ export default function ConversationThreadPane({
|
|
|
366
377
|
});
|
|
367
378
|
}
|
|
368
379
|
}
|
|
369
|
-
}, [expandedUids, messages]);
|
|
380
|
+
}, [expandedUids, messages, client]);
|
|
370
381
|
|
|
371
382
|
/**
|
|
372
383
|
* Reads the thread again, quietly: what is on screen stays until the answer is here (a read that fails changes nothing), a message that arrived
|
|
@@ -380,7 +391,7 @@ export default function ConversationThreadPane({
|
|
|
380
391
|
return;
|
|
381
392
|
}
|
|
382
393
|
const generation = generationRef.current;
|
|
383
|
-
loadThread(mailboxUid, id).then(
|
|
394
|
+
loadThread(mailboxUid, id, client).then(
|
|
384
395
|
(loaded) => {
|
|
385
396
|
if (generation !== generationRef.current) return;
|
|
386
397
|
const current = loaded.messages.filter((message) => !removedRef.current.has(message.uid));
|
|
@@ -13,10 +13,11 @@ import {
|
|
|
13
13
|
proposeNewTime,
|
|
14
14
|
removeMessageInvite,
|
|
15
15
|
respondToMessageInvite,
|
|
16
|
-
} from "
|
|
17
|
-
import { guestPermissionsOf } from "
|
|
18
|
-
import { formatMailAddress } from "
|
|
19
|
-
import
|
|
16
|
+
} from "../../../../lib/calendar/inviteApi.js";
|
|
17
|
+
import { guestPermissionsOf } from "../../../../lib/calendar/calendarApi.js";
|
|
18
|
+
import { formatMailAddress } from "../../../../lib/mail/mailAddress.js";
|
|
19
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
20
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
20
21
|
import EventDescriptionView from "../calendar/EventDescriptionView.js";
|
|
21
22
|
import RequestChangeForm from "../calendar/RequestChangeForm.js";
|
|
22
23
|
import { VISIBILITY_LABEL, describeGuestPermissions } from "../calendar/eventFormat.js";
|
|
@@ -96,6 +97,7 @@ export interface InviteCardProps {
|
|
|
96
97
|
* An answer that arrives after the message changed or this was unmounted is dropped.
|
|
97
98
|
*/
|
|
98
99
|
export default function InviteCard({ messageUid, headingLevel = 2 }: InviteCardProps) {
|
|
100
|
+
const client = useApiClient();
|
|
99
101
|
const { invite, setInvite } = useMessageInvite(messageUid);
|
|
100
102
|
const [pending, setPending] = useState<Pending | null>(null);
|
|
101
103
|
const [proposing, setProposing] = useState(false);
|
|
@@ -125,7 +127,7 @@ export default function InviteCard({ messageUid, headingLevel = 2 }: InviteCardP
|
|
|
125
127
|
}
|
|
126
128
|
|
|
127
129
|
async function sendProposal(proposal: ProposedTime) {
|
|
128
|
-
if (await run("propose", "Couldn't send the proposed time", () => proposeNewTime(messageUid, proposal))) {
|
|
130
|
+
if (await run("propose", "Couldn't send the proposed time", () => proposeNewTime(messageUid, proposal, client))) {
|
|
129
131
|
setProposing(false);
|
|
130
132
|
setProposed(true);
|
|
131
133
|
}
|
|
@@ -283,7 +285,7 @@ export default function InviteCard({ messageUid, headingLevel = 2 }: InviteCardP
|
|
|
283
285
|
aria-busy={pending === response || undefined}
|
|
284
286
|
loading={pending === response}
|
|
285
287
|
disabled={busy || current}
|
|
286
|
-
onClick={() => void run(response, failure, () => respondToMessageInvite(messageUid, response))}
|
|
288
|
+
onClick={() => void run(response, failure, () => respondToMessageInvite(messageUid, response, client))}
|
|
287
289
|
>
|
|
288
290
|
{current && <HiOutlineCheck size={14} aria-hidden="true" />}
|
|
289
291
|
{label}
|
|
@@ -310,7 +312,7 @@ export default function InviteCard({ messageUid, headingLevel = 2 }: InviteCardP
|
|
|
310
312
|
aria-busy={pending === "acceptProposal" || undefined}
|
|
311
313
|
loading={pending === "acceptProposal"}
|
|
312
314
|
disabled={busy}
|
|
313
|
-
onClick={() => void run("acceptProposal", "Couldn't accept the proposed time", () => acceptProposal(messageUid))}
|
|
315
|
+
onClick={() => void run("acceptProposal", "Couldn't accept the proposed time", () => acceptProposal(messageUid, client))}
|
|
314
316
|
>
|
|
315
317
|
Accept proposal
|
|
316
318
|
</Button>
|
|
@@ -324,7 +326,7 @@ export default function InviteCard({ messageUid, headingLevel = 2 }: InviteCardP
|
|
|
324
326
|
loading={pending === "add"}
|
|
325
327
|
disabled={busy}
|
|
326
328
|
// A published event has no organizer to answer, so adding it is accepting it: the server sends no reply.
|
|
327
|
-
onClick={() => void run("add", "Couldn't add this event to your calendar", () => respondToMessageInvite(messageUid, "accepted"))}
|
|
329
|
+
onClick={() => void run("add", "Couldn't add this event to your calendar", () => respondToMessageInvite(messageUid, "accepted", client))}
|
|
328
330
|
>
|
|
329
331
|
Add to calendar
|
|
330
332
|
</Button>
|
|
@@ -337,7 +339,7 @@ export default function InviteCard({ messageUid, headingLevel = 2 }: InviteCardP
|
|
|
337
339
|
aria-busy={pending === "remove" || undefined}
|
|
338
340
|
loading={pending === "remove"}
|
|
339
341
|
disabled={busy}
|
|
340
|
-
onClick={() => void run("remove", "Couldn't remove this meeting from your calendar", () => removeMessageInvite(messageUid))}
|
|
342
|
+
onClick={() => void run("remove", "Couldn't remove this meeting from your calendar", () => removeMessageInvite(messageUid, client))}
|
|
341
343
|
>
|
|
342
344
|
Remove from calendar
|
|
343
345
|
</Button>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { ComponentType, useEffect, useState } from "react";
|
|
6
|
-
import Alert from "
|
|
7
|
-
import Button from "
|
|
6
|
+
import Alert from "../../../../lib/components/feedback/Alert.js";
|
|
7
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
8
8
|
import { ReadingPaneSkeleton } from "./reading/MessageCard.js";
|
|
9
9
|
import type MessageDetailPaneType from "./MessageDetailPane.js";
|
|
10
10
|
import type ConversationThreadPaneType from "./ConversationThreadPane.js";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { useState } from "react";
|
|
6
|
-
import { MailAddressLike, formatMailAddress, splitMailAddress } from "
|
|
6
|
+
import { MailAddressLike, formatMailAddress, splitMailAddress } from "../../../../lib/mail/mailAddress.js";
|
|
7
7
|
|
|
8
8
|
export interface MailAddressProps {
|
|
9
9
|
/** A message's `from`, a recipient, a conversation participant. */
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { useState } from "react";
|
|
6
6
|
import { HiOutlineAdjustmentsHorizontal, HiOutlineBarsArrowDown, HiOutlineStop } from "react-icons/hi2";
|
|
7
|
-
import { MessageListFilter, MessageListSort, MessageSortOrder } from "
|
|
8
|
-
import { Label } from "
|
|
7
|
+
import { MessageListFilter, MessageListSort, MessageSortOrder } from "../../../../lib/mail/mailApi.js";
|
|
8
|
+
import { Label } from "../../../../lib/mail/labelsApi.js";
|
|
9
9
|
import MenuButton, { MenuSectionSpec } from "./MenuButton.js";
|
|
10
10
|
import { NewLabelDialog, labelSections, useLabelDraft } from "./labelMenu.js";
|
|
11
11
|
import {
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { useState } from "react";
|
|
6
|
-
import { Folder, Message } from "
|
|
7
|
-
import { Label } from "
|
|
6
|
+
import { Folder, Message } from "../../../../lib/mail/mailApi.js";
|
|
7
|
+
import { Label } from "../../../../lib/mail/labelsApi.js";
|
|
8
8
|
import LabelMenuButton from "./labelMenu.js";
|
|
9
9
|
import MoveToFolderDialog, { MOVE_TARGET_TYPES } from "./MoveToFolderDialog.js";
|
|
10
10
|
import { ariaKeyShortcuts, withHint } from "../../keyboard/format.js";
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { ReactNode, useEffect, useRef, useState } from "react";
|
|
6
6
|
import { HiCheck, HiChevronDown, HiChevronLeft, HiChevronRight, HiMinus } from "react-icons/hi2";
|
|
7
|
-
import PopoverPortal from "
|
|
7
|
+
import PopoverPortal from "../../../../lib/components/overlays/PopoverPortal.js";
|
|
8
8
|
|
|
9
9
|
/** What every row has. `checked` turns it into a radio/checkbox item (the caller says which via `role`) and
|
|
10
10
|
* draws the checkmark column; without it the row is a plain command. */
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
HiOutlineNoSymbol,
|
|
17
17
|
HiOutlineSun,
|
|
18
18
|
} from "react-icons/hi2";
|
|
19
|
-
import { ApiRequestError } from "
|
|
19
|
+
import { ApiRequestError } from "../../../../lib/util/api.js";
|
|
20
20
|
import {
|
|
21
21
|
Attachment,
|
|
22
22
|
Folder,
|
|
@@ -34,8 +34,8 @@ import {
|
|
|
34
34
|
moveMessage,
|
|
35
35
|
recallMessage,
|
|
36
36
|
setMessageLabels,
|
|
37
|
-
} from "
|
|
38
|
-
import { Label } from "
|
|
37
|
+
} from "../../../../lib/mail/mailApi.js";
|
|
38
|
+
import { Label } from "../../../../lib/mail/labelsApi.js";
|
|
39
39
|
import {
|
|
40
40
|
buildForwardQuote,
|
|
41
41
|
buildReplyQuote,
|
|
@@ -43,25 +43,26 @@ import {
|
|
|
43
43
|
buildReplyThreading,
|
|
44
44
|
forwardSubject,
|
|
45
45
|
replySubject,
|
|
46
|
-
} from "
|
|
46
|
+
} from "../../../../lib/mail/compose/composeQuoting.js";
|
|
47
47
|
import MoveToFolderDialog from "./MoveToFolderDialog.js";
|
|
48
48
|
import InviteCard from "./InviteCard.js";
|
|
49
49
|
import { isCalendarAttachment } from "./invite/inviteFormat.js";
|
|
50
50
|
import { useMessageInvite } from "./invite/inviteStore.js";
|
|
51
|
-
import { getUnlockedKeys, subscribeKeySession } from "
|
|
52
|
-
import type { MessageSecurityResult, SignatureFailureReason } from "
|
|
53
|
-
import { extractAddresses, type MimeAttachment } from "
|
|
54
|
-
import { SignerKeyConflictError, signingKeyFingerprints, trustSigner } from "
|
|
55
|
-
import { isLikelyMailingList } from "
|
|
51
|
+
import { getUnlockedKeys, subscribeKeySession } from "../../../../lib/crypto/keySession.js";
|
|
52
|
+
import type { MessageSecurityResult, SignatureFailureReason } from "../../../../lib/crypto/messageSecurity.js";
|
|
53
|
+
import { extractAddresses, type MimeAttachment } from "../../../../lib/crypto/mime.js";
|
|
54
|
+
import { SignerKeyConflictError, signingKeyFingerprints, trustSigner } from "../../../../lib/crypto/keyvaultApi.js";
|
|
55
|
+
import { isLikelyMailingList } from "../../../../lib/crypto/composeSecurity.js";
|
|
56
56
|
import { SenderKeyState, clearPinnedSignerCache, getPinnedSignerFingerprints, getSignerKeyState } from "./pinnedSigners.js";
|
|
57
57
|
import { currentVerificationSeal, getVaultGeneration, sendVerificationSeal } from "./verificationSeals.js";
|
|
58
|
-
import { getMyMailboxAccess } from "
|
|
58
|
+
import { getMyMailboxAccess } from "../../../../lib/mail/mailboxAccessApi.js";
|
|
59
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
59
60
|
import KeyChangeReview from "../contacts/KeyChangeReview.js";
|
|
60
61
|
import { KEY_CHANGE_STALE_MESSAGE, sameFingerprint } from "../contacts/contactKeys.js";
|
|
61
62
|
import { ComposeLateInput, prefetchComposeWindow, useCompose } from "./compose/ComposeContext.js";
|
|
62
63
|
import { loadOriginalMessage, prefetchOriginalMessage } from "./compose/quotedBody.js";
|
|
63
64
|
import { formatRecipient } from "./compose/recipients.js";
|
|
64
|
-
import { formatMailAddress } from "
|
|
65
|
+
import { formatMailAddress } from "../../../../lib/mail/mailAddress.js";
|
|
65
66
|
import MailAddress, { RecipientLine } from "./MailAddress.js";
|
|
66
67
|
import { useMailShell } from "./layout/MailShell.js";
|
|
67
68
|
import { ariaKeyShortcuts, withHint } from "../../keyboard/format.js";
|
|
@@ -74,10 +75,10 @@ import { useNavigate } from "../../navigation/index.js";
|
|
|
74
75
|
import { notify } from "../../notifications/store.js";
|
|
75
76
|
import { notifyApiError } from "../../notifications/apiErrors.js";
|
|
76
77
|
import { useMailboxUpdateAccess } from "../../mail/useMailboxUpdateAccess.js";
|
|
77
|
-
import Modal from "
|
|
78
|
-
import Alert from "
|
|
78
|
+
import Modal from "../../../../lib/components/overlays/Modal.js";
|
|
79
|
+
import Alert from "../../../../lib/components/feedback/Alert.js";
|
|
79
80
|
import LabelMenuButton from "./labelMenu.js";
|
|
80
|
-
import Button from "
|
|
81
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
81
82
|
import EncryptedBody from "./reading/EncryptedBody.js";
|
|
82
83
|
import { displaySubject } from "./reading/EncryptedPreview.js";
|
|
83
84
|
import MessageBody, { BodySkeleton } from "./reading/MessageBody.js";
|
|
@@ -508,6 +509,7 @@ function MessageDetailContent({
|
|
|
508
509
|
const [nowMs, setNowMs] = useState(() => Date.now());
|
|
509
510
|
const { mailboxes, trackMessageChange } = useMailShell();
|
|
510
511
|
const { requestUnlock } = useUnlockPrompt();
|
|
512
|
+
const client = useApiClient();
|
|
511
513
|
// Bumped after a successful on-demand unlock to re-run the effect below - it's not a dependency the
|
|
512
514
|
// effect could read reactively otherwise (getUnlockedKeys() is a plain module-level read, not React
|
|
513
515
|
// state; see keySession.ts's own doc comment).
|
|
@@ -556,7 +558,7 @@ function MessageDetailContent({
|
|
|
556
558
|
// mailbox's own signing keys when it sent the message itself. A failed lookup means no pins, which can only
|
|
557
559
|
// ever make a signature "signer not verified", never verified.
|
|
558
560
|
const senderAddress = message.from.address;
|
|
559
|
-
const pinsPromise = getPinnedSignerFingerprints(message.mailboxUid, senderAddress).then(
|
|
561
|
+
const pinsPromise = getPinnedSignerFingerprints(message.mailboxUid, senderAddress, client).then(
|
|
560
562
|
(fingerprints) => ({ loaded: true, fingerprints }),
|
|
561
563
|
() => ({ loaded: false, fingerprints: [] as string[] }),
|
|
562
564
|
);
|
|
@@ -564,9 +566,9 @@ function MessageDetailContent({
|
|
|
564
566
|
// generation; without either the message is evaluated exactly as before, with no seal. The sender's key records
|
|
565
567
|
// are loaded alongside, so a seal can say when the signer key was later revoked as compromised.
|
|
566
568
|
let keyStatePromise: Promise<SenderKeyState | undefined> | undefined;
|
|
567
|
-
const loadKeyState = () => (keyStatePromise ??= getSignerKeyState(message.mailboxUid, senderAddress).catch(() => undefined));
|
|
569
|
+
const loadKeyState = () => (keyStatePromise ??= getSignerKeyState(message.mailboxUid, senderAddress, client).catch(() => undefined));
|
|
568
570
|
const sealContextPromise = getUnlockedKeys(message.mailboxUid)
|
|
569
|
-
? getVaultGeneration(message.mailboxUid).then(async (generation) =>
|
|
571
|
+
? getVaultGeneration(message.mailboxUid, client).then(async (generation) =>
|
|
570
572
|
generation === undefined ? undefined : { generation, keyState: await loadKeyState() },
|
|
571
573
|
)
|
|
572
574
|
: undefined;
|
|
@@ -577,7 +579,7 @@ function MessageDetailContent({
|
|
|
577
579
|
}
|
|
578
580
|
// The S/MIME code (PKI.js and the ASN.1/X.509 libraries) loads here, only for a message that is signed or
|
|
579
581
|
// encrypted - it is over half a megabyte, and the pane opens plain messages without it.
|
|
580
|
-
const messageSecurity = await import("
|
|
582
|
+
const messageSecurity = await import("../../../../lib/crypto/messageSecurity.js");
|
|
581
583
|
const [primaryAddress, ...aliasAddresses] = readerAddressesKey ? readerAddressesKey.split(" ") : [];
|
|
582
584
|
const ownAddresses = readerAddressesKey.toLowerCase().split(" ");
|
|
583
585
|
const ownKeys = ownAddresses.includes(senderAddress.toLowerCase()) ? (readerMailbox!.keys ?? []) : [];
|
|
@@ -607,7 +609,7 @@ function MessageDetailContent({
|
|
|
607
609
|
);
|
|
608
610
|
if (result.sealToWrite) {
|
|
609
611
|
// Best effort and in the background: never awaited, never shown.
|
|
610
|
-
void sendVerificationSeal(message.uid, result.sealToWrite);
|
|
612
|
+
void sendVerificationSeal(message.uid, result.sealToWrite, client);
|
|
611
613
|
}
|
|
612
614
|
} else {
|
|
613
615
|
result = await messageSecurity.evaluateMessageSecurity(rawMime, unlocked, pinned, primaryAddress);
|
|
@@ -625,7 +627,7 @@ function MessageDetailContent({
|
|
|
625
627
|
const keyChanged = signerKeyChanged(result);
|
|
626
628
|
const [keyState, access] = await Promise.all([
|
|
627
629
|
keyChanged || (unpinned && UNVERIFIED_SIGNER_STATES.has(result.state)) ? loadKeyState() : undefined,
|
|
628
|
-
keyChanged ? getMyMailboxAccess(message.mailboxUid).then((a) => a.canUpdate, () => undefined) : undefined,
|
|
630
|
+
keyChanged ? getMyMailboxAccess(message.mailboxUid, client).then((a) => a.canUpdate, () => undefined) : undefined,
|
|
629
631
|
]);
|
|
630
632
|
if (!cancelled) {
|
|
631
633
|
setSecurity(result);
|
|
@@ -644,7 +646,7 @@ function MessageDetailContent({
|
|
|
644
646
|
return () => {
|
|
645
647
|
cancelled = true;
|
|
646
648
|
};
|
|
647
|
-
}, [message.uid, message.mailboxUid, message.from.address, message.encrypted, rawEvaluationNeeded, unlockRefresh, readerAddressesKey]);
|
|
649
|
+
}, [message.uid, message.mailboxUid, message.from.address, message.encrypted, rawEvaluationNeeded, unlockRefresh, readerAddressesKey, client]);
|
|
648
650
|
|
|
649
651
|
// Whether the body is the locked state right now (an encrypted message this device holds no unlocked keys for), for the subscription below.
|
|
650
652
|
const lockedRef = useRef(false);
|
|
@@ -697,7 +699,7 @@ function MessageDetailContent({
|
|
|
697
699
|
|
|
698
700
|
async function reloadMessage() {
|
|
699
701
|
try {
|
|
700
|
-
setReloaded(await getMessage(message.uid));
|
|
702
|
+
setReloaded(await getMessage(message.uid, client));
|
|
701
703
|
setNowMs(Date.now());
|
|
702
704
|
} catch {
|
|
703
705
|
// Keep showing what we have - the next refused action or lease expiry tries again.
|
|
@@ -731,7 +733,7 @@ function MessageDetailContent({
|
|
|
731
733
|
setTrusting(true);
|
|
732
734
|
setTrustError(null);
|
|
733
735
|
try {
|
|
734
|
-
await trustSigner(message.mailboxUid, { address, certificate });
|
|
736
|
+
await trustSigner(message.mailboxUid, { address, certificate }, client);
|
|
735
737
|
clearPinnedSignerCache();
|
|
736
738
|
setTrustConfirmOpen(false);
|
|
737
739
|
setUnlockRefresh((n) => n + 1);
|
|
@@ -758,7 +760,7 @@ function MessageDetailContent({
|
|
|
758
760
|
/** The replying mailbox's own addresses (primary and aliases), which a reply never goes to - from the mail shell's
|
|
759
761
|
* mailbox list, else fetched; none when neither is available. */
|
|
760
762
|
async function ownAddresses(): Promise<string[]> {
|
|
761
|
-
const mailbox = readerMailbox ?? (await getMailbox(message.mailboxUid).catch(() => undefined));
|
|
763
|
+
const mailbox = readerMailbox ?? (await getMailbox(message.mailboxUid, {}, client).catch(() => undefined));
|
|
762
764
|
return mailbox ? [mailbox.primarySmtpAddress, ...(mailbox.aliasAddresses ?? [])] : [];
|
|
763
765
|
}
|
|
764
766
|
|
|
@@ -845,7 +847,7 @@ function MessageDetailContent({
|
|
|
845
847
|
setRecalling(true);
|
|
846
848
|
setError(null);
|
|
847
849
|
try {
|
|
848
|
-
const updated = await recallMessage(message.uid);
|
|
850
|
+
const updated = await recallMessage(message.uid, client);
|
|
849
851
|
setConfirming(false);
|
|
850
852
|
onRecalled?.(updated);
|
|
851
853
|
} catch (err) {
|
|
@@ -863,7 +865,7 @@ function MessageDetailContent({
|
|
|
863
865
|
setCanceling(true);
|
|
864
866
|
setCancelError(null);
|
|
865
867
|
try {
|
|
866
|
-
const updated = await cancelScheduledSend(message, draftsFolderUid
|
|
868
|
+
const updated = await cancelScheduledSend(message, draftsFolderUid!, client);
|
|
867
869
|
// Keeps a `folder:`-scoped Tier 2 local search from still finding it in its old folder.
|
|
868
870
|
void moveLocalEntity(updated.mailboxUid, updated.uid, updated.folderUid);
|
|
869
871
|
// Out of Outbox, into Drafts: both folders' badges.
|
|
@@ -889,7 +891,7 @@ function MessageDetailContent({
|
|
|
889
891
|
setArchiving(true);
|
|
890
892
|
setArchiveError(null);
|
|
891
893
|
try {
|
|
892
|
-
const updated = await archiveMessage(message.uid);
|
|
894
|
+
const updated = await archiveMessage(message.uid, client);
|
|
893
895
|
void moveLocalEntity(updated.mailboxUid, updated.uid, updated.folderUid);
|
|
894
896
|
trackMessageChange(message, updated).settle();
|
|
895
897
|
onArchived?.(updated);
|
|
@@ -912,7 +914,7 @@ function MessageDetailContent({
|
|
|
912
914
|
setLabelsError(null);
|
|
913
915
|
try {
|
|
914
916
|
const base = message.version >= latestLabelsMessageRef.current.version ? message : latestLabelsMessageRef.current;
|
|
915
|
-
const updated = await setMessageLabels(base, labelUids);
|
|
917
|
+
const updated = await setMessageLabels(base, labelUids, client);
|
|
916
918
|
latestLabelsMessageRef.current = updated;
|
|
917
919
|
setLabelsMessage(updated);
|
|
918
920
|
onLabelsChanged?.(updated);
|
|
@@ -933,7 +935,7 @@ function MessageDetailContent({
|
|
|
933
935
|
* passes no `onMoved` would have had nothing moved while the prompt closed as if it had.
|
|
934
936
|
*/
|
|
935
937
|
async function handleMove(folderUid: string) {
|
|
936
|
-
const updated = await moveMessage(message, folderUid);
|
|
938
|
+
const updated = await moveMessage(message, folderUid, client);
|
|
937
939
|
// Move to, Delete and Report junk are all this: the source folder's badge goes down, the target's up.
|
|
938
940
|
trackMessageChange(message, updated).settle();
|
|
939
941
|
onMoved?.(updated);
|
|
@@ -988,7 +990,7 @@ function MessageDetailContent({
|
|
|
988
990
|
setReceiptBusy(type);
|
|
989
991
|
setReceiptError(null);
|
|
990
992
|
try {
|
|
991
|
-
const updated = await (action === "approve" ? approveReceipt : declineReceipt)(message.uid, type);
|
|
993
|
+
const updated = await (action === "approve" ? approveReceipt : declineReceipt)(message.uid, type, client);
|
|
992
994
|
onReceiptHandled?.(updated);
|
|
993
995
|
} catch (err) {
|
|
994
996
|
setReceiptError(err instanceof ApiRequestError ? err.message : "Could not handle this receipt request.");
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { FormEvent, useEffect, useRef, useState } from "react";
|
|
6
6
|
import { HiOutlineFolder, HiOutlineFolderPlus } from "react-icons/hi2";
|
|
7
|
-
import { ApiRequestError } from "
|
|
8
|
-
import { Folder, createFolder } from "
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
7
|
+
import { ApiRequestError } from "../../../../lib/util/api.js";
|
|
8
|
+
import { Folder, createFolder } from "../../../../lib/mail/mailApi.js";
|
|
9
|
+
import { useApiClient } from "../../../../lib/util/apiClientContext.js";
|
|
10
|
+
import Alert from "../../../../lib/components/feedback/Alert.js";
|
|
11
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
12
|
+
import Modal from "../../../../lib/components/overlays/Modal.js";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* The folder types a message can be moved *into* - Outbox is a transient send queue the server owns, and
|
|
@@ -95,6 +96,7 @@ export default function MoveToFolderDialog({
|
|
|
95
96
|
onMove,
|
|
96
97
|
onFolderCreated,
|
|
97
98
|
}: MoveToFolderDialogProps) {
|
|
99
|
+
const client = useApiClient();
|
|
98
100
|
const [filter, setFilter] = useState("");
|
|
99
101
|
const [creating, setCreating] = useState(false);
|
|
100
102
|
const [newName, setNewName] = useState("");
|
|
@@ -152,7 +154,7 @@ export default function MoveToFolderDialog({
|
|
|
152
154
|
setError(null);
|
|
153
155
|
let created: Folder;
|
|
154
156
|
try {
|
|
155
|
-
created = await createFolder({ mailboxUid, name: newName.trim(), type: "user" });
|
|
157
|
+
created = await createFolder({ mailboxUid, name: newName.trim(), type: "user" }, client);
|
|
156
158
|
} catch (err) {
|
|
157
159
|
setError(err instanceof ApiRequestError ? err.message : "Could not create that folder.");
|
|
158
160
|
setBusy(false);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React from "react";
|
|
6
|
-
import type { Message } from "
|
|
6
|
+
import type { Message } from "../../../../lib/mail/mailApi.js";
|
|
7
7
|
import { outboxItemStatus } from "../../mail/outbox/outboxState.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React from "react";
|
|
6
|
-
import Button from "
|
|
7
|
-
import Modal from "
|
|
6
|
+
import Button from "../../../../lib/components/buttons/Button.js";
|
|
7
|
+
import Modal from "../../../../lib/components/overlays/Modal.js";
|
|
8
8
|
|
|
9
9
|
export interface PermanentDeleteDialogProps {
|
|
10
10
|
open: boolean;
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
// SPDX-License-Identifier: MPL-2.0
|
|
4
4
|
///////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
import React, { PropsWithChildren, createContext, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
6
|
-
import { DraftThreading } from "
|
|
7
|
-
import
|
|
6
|
+
import { DraftThreading } from "../../../../../lib/mail/mailApi.js";
|
|
7
|
+
import { ApiClient } from "../../../../../lib/util/api.js";
|
|
8
|
+
import { useApiClient } from "../../../../../lib/util/apiClientContext.js";
|
|
9
|
+
import useIsMobile from "../../../../../lib/util/useIsMobile.js";
|
|
8
10
|
import { ResumeCompose, registerComposeOpener } from "../../../mail/outbox/composeBridge.js";
|
|
9
11
|
import { markComposePhase } from "./composePerf.js";
|
|
10
12
|
import ComposeWindowPlaceholder from "./ComposeWindowPlaceholder.js";
|
|
@@ -169,6 +171,14 @@ export interface OpenComposeInput {
|
|
|
169
171
|
export interface ComposeContextValue {
|
|
170
172
|
/** Opens a new compose window, stacked alongside any already open (Gmail allows several at once). */
|
|
171
173
|
openCompose: (input: OpenComposeInput) => void;
|
|
174
|
+
/**
|
|
175
|
+
* The active account's `ApiClient` (see `useApiClient()`'s own doc comment), resolved once here rather
|
|
176
|
+
* than by every compose component individually - `ComposeWindow` and everything it renders reach it
|
|
177
|
+
* through this context's own value instead of each calling `useApiClient()` for itself. `useApiClient()`
|
|
178
|
+
* remains independently callable (this is additive, not a replacement) - a future consumer that isn't a
|
|
179
|
+
* descendant of `ComposeProvider` (or doesn't want to depend on it) can still read it directly.
|
|
180
|
+
*/
|
|
181
|
+
client?: ApiClient;
|
|
172
182
|
}
|
|
173
183
|
|
|
174
184
|
const ComposeContext = createContext<ComposeContextValue>({ openCompose: () => undefined });
|
|
@@ -187,6 +197,7 @@ export function useCompose(): ComposeContextValue {
|
|
|
187
197
|
*/
|
|
188
198
|
export default function ComposeProvider({ children, userUid, trusted }: PropsWithChildren<{ userUid?: string; trusted?: boolean }>) {
|
|
189
199
|
const [sessions, setSessions] = useState<ComposeSession[]>([]);
|
|
200
|
+
const client = useApiClient();
|
|
190
201
|
const isMobile = useIsMobile();
|
|
191
202
|
const { Component: ComposeWindow, failed, retry: retryLoad } = useComposeWindowComponent(sessions.length > 0);
|
|
192
203
|
|
|
@@ -263,7 +274,7 @@ export default function ComposeProvider({ children, userUid, trusted }: PropsWit
|
|
|
263
274
|
setSessions((prev) => prev.map((s) => (s.id === id ? { ...s, minimized: !s.minimized } : s)));
|
|
264
275
|
}
|
|
265
276
|
|
|
266
|
-
const value = useMemo<ComposeContextValue>(() => ({ openCompose }), []);
|
|
277
|
+
const value = useMemo<ComposeContextValue>(() => ({ openCompose, client }), [client]);
|
|
267
278
|
// Code with no React context - a failed send's "Open draft" pop-up - opens windows through this.
|
|
268
279
|
useEffect(() => registerComposeOpener((input) => value.openCompose(input)), [value]);
|
|
269
280
|
|