@inboxsdk/core 1.2.4 → 1.2.7
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/inboxsdk.js +4474 -463
- package/inboxsdk.js.map +1 -1
- package/package.json +1 -1
- package/pageWorld.js +1 -1
- package/pageWorld.js.map +1 -1
- package/src/common/load-script.d.ts +0 -6
- package/src/common/load-script.d.ts.map +1 -1
- package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -1
- package/src/inboxsdk.d.ts +29 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
- package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
- package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
- package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
- package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
- package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
- package/src/build/exec.js +0 -26
- package/src/build/spawn.js +0 -17
- package/src/common/ajax.js +0 -90
- package/src/common/cachebust-url.js +0 -10
- package/src/common/censorHTMLstring.js +0 -37
- package/src/common/censorHTMLtree.js +0 -28
- package/src/common/censorJSONTree.js +0 -15
- package/src/common/connectivity-test.js +0 -21
- package/src/common/defer.js +0 -11
- package/src/common/find-parent.js +0 -10
- package/src/common/get-extension-id.js +0 -7
- package/src/common/get-or-fail.js +0 -8
- package/src/common/get-session-id.js +0 -14
- package/src/common/get-stack-trace.js +0 -6
- package/src/common/html-to-text.js +0 -7
- package/src/common/isElementVisible.js +0 -6
- package/src/common/load-script.js +0 -128
- package/src/common/log-error.js +0 -185
- package/src/common/quoted-split.js +0 -18
- package/src/common/rate-limit-queuer.js +0 -57
- package/src/common/rate-limit.js +0 -14
- package/src/common/version.js +0 -8
- package/src/inboxsdk-js/header.js +0 -19
- package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
- package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
- package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
- package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
- package/src/inboxsdk-js/inboxsdk.js +0 -23
- package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
- package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -31
- package/src/injected-js/gmail/constants.js +0 -2
- package/src/injected-js/gmail/modify-suggestions.js +0 -106
- package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
- package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
- package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
- package/src/injected-js/gmail/sync-compose-processor.js +0 -55
- package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
- package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
- package/src/injected-js/gmail/thread-identifier/index.js +0 -133
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
- package/src/injected-js/injected-logger.js +0 -50
- package/src/injected-js/main.js +0 -49
- package/src/injected-js/message-metadata-holder.js +0 -103
- package/src/injected-js/setup-data-exposer.js +0 -135
- package/src/injected-js/setup-error-silencer.js +0 -15
- package/src/injected-js/setup-event-reemitter.js +0 -47
- package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
- package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
- package/src/injected-js/setupPushStateListener.js +0 -14
- package/src/injected-js/xhr-helper.js +0 -43
- package/src/injected-js/xhr-proxy-factory.js +0 -537
- package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
- package/src/platform-implementation-js/constants/router.js +0 -60
- package/src/platform-implementation-js/constants/toolbars.js +0 -5
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
- package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
- package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
- package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
- package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
- package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
- package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -328
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
- package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
- package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
- package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
- package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
- package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
- package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
- package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
- package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
- package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
- package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
- package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
- package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
- package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
- package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
- package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
- package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
- package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
- package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
- package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
- package/src/platform-implementation-js/lib/Membrane.js +0 -22
- package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
- package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
- package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
- package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
- package/src/platform-implementation-js/lib/delay-asap.js +0 -10
- package/src/platform-implementation-js/lib/delay-idle.js +0 -16
- package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
- package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
- package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
- package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
- package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
- package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
- package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
- package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
- package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
- package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
- package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
- package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
- package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
- package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
- package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
- package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
- package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
- package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
- package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
- package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
- package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
- package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
- package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
- package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
- package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
- package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
- package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
- package/src/platform-implementation-js/lib/handler-registry.js +0 -67
- package/src/platform-implementation-js/lib/idMap.js +0 -40
- package/src/platform-implementation-js/lib/imageRequest.js +0 -8
- package/src/platform-implementation-js/lib/incrementName.js +0 -7
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -8
- package/src/platform-implementation-js/lib/inject-script.js +0 -33
- package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
- package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
- package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
- package/src/platform-implementation-js/lib/isNotNil.js +0 -5
- package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
- package/src/platform-implementation-js/lib/logger.js +0 -439
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
- package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
- package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
- package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
- package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
- package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
- package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
- package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
- package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
- package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
- package/src/platform-implementation-js/lib/wait-for.js +0 -38
- package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
- package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
- package/src/platform-implementation-js/main.js +0 -42
- package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
- package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
- package/src/platform-implementation-js/namespaces/compose.js +0 -59
- package/src/platform-implementation-js/namespaces/conversations.js +0 -83
- package/src/platform-implementation-js/namespaces/global.js +0 -30
- package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
- package/src/platform-implementation-js/namespaces/lists.js +0 -40
- package/src/platform-implementation-js/namespaces/modal.js +0 -43
- package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
- package/src/platform-implementation-js/namespaces/router.js +0 -139
- package/src/platform-implementation-js/namespaces/search.js +0 -29
- package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
- package/src/platform-implementation-js/namespaces/user.js +0 -57
- package/src/platform-implementation-js/namespaces/widgets.js +0 -73
- package/src/platform-implementation-js/platform-implementation.js +0 -178
- package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
- package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
- package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
- package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
- package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
- package/src/platform-implementation-js/views/compose-button-view.js +0 -45
- package/src/platform-implementation-js/views/compose-view.js +0 -310
- package/src/platform-implementation-js/views/content-panel-view.js +0 -36
- package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
- package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
- package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
- package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
- package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
- package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
- package/src/platform-implementation-js/views/nav-item-view.js +0 -130
- package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
- package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
- package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
- package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
- package/src/platform-implementation-js/views/section-view.js +0 -60
- package/src/platform-implementation-js/views/thread-row-view.js +0 -90
- package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
- package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
- package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
- package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
- package/src/platform-implementation-js/widgets/modal-view.js +0 -108
- package/src/platform-implementation-js/widgets/mole-view.js +0 -38
- package/src/platform-implementation-js/widgets/top-message-bar-view.js +0 -15
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import isIntegratedViewGmail, { isCollapsiblePanelHidden, } from './isIntegratedViewGmail';
|
|
2
|
-
import { waitForMenuReady } from './add-nav-item';
|
|
3
|
-
import { checkForDarkThemeSafe } from './track-gmail-styles';
|
|
4
|
-
export default async function gmailLoadEvent(driver) {
|
|
5
|
-
const pageCommunicator = driver.getPageCommunicator();
|
|
6
|
-
const isConversationViewDisabled = await pageCommunicator.isConversationViewDisabled();
|
|
7
|
-
await waitForMenuReady();
|
|
8
|
-
const isUsingDarkTheme = await checkForDarkThemeSafe();
|
|
9
|
-
driver.getLogger().eventSite('gmailSettings', {
|
|
10
|
-
isGmailIntegratedView: isIntegratedViewGmail(),
|
|
11
|
-
isCollapsiblePanelHidden: isCollapsiblePanelHidden(),
|
|
12
|
-
isDarkTheme: isUsingDarkTheme,
|
|
13
|
-
screenWidth: window.screen?.width,
|
|
14
|
-
screenHeight: window.screen?.height,
|
|
15
|
-
windowWidth: window.innerWidth,
|
|
16
|
-
windowHeight: window.innerHeight,
|
|
17
|
-
language: pageCommunicator.getUserLanguage(),
|
|
18
|
-
isUsingSyncAPI: pageCommunicator.isUsingSyncAPI(),
|
|
19
|
-
previewPane: pageCommunicator.getUserOriginalPreviewPaneMode(),
|
|
20
|
-
isConversationViewDisabled,
|
|
21
|
-
wasAccountSwitcherReadyAtStart: driver.getEnvData().wasAccountSwitcherReadyAtStart,
|
|
22
|
-
timings: {
|
|
23
|
-
responseStart: global.performance?.timing.responseStart,
|
|
24
|
-
responseEnd: global.performance?.timing.responseEnd,
|
|
25
|
-
domLoading: global.performance?.timing.domLoading,
|
|
26
|
-
domInteractive: global.performance?.timing.domInteractive,
|
|
27
|
-
domComplete: global.performance?.timing.domComplete,
|
|
28
|
-
domContentLoadedEventStart: global.performance?.timing.domContentLoadedEventStart,
|
|
29
|
-
domContentLoadedEventEnd: global.performance?.timing.domContentLoadedEventEnd,
|
|
30
|
-
domainLookupEnd: global.performance?.timing.domainLookupEnd,
|
|
31
|
-
domainLookupStart: global.performance?.timing.domainLookupStart,
|
|
32
|
-
fetchStart: global.performance?.timing.fetchStart,
|
|
33
|
-
loadEventStart: global.performance?.timing.loadEventStart,
|
|
34
|
-
loadEventEnd: global.performance?.timing.loadEventEnd,
|
|
35
|
-
navigationStart: global.performance?.timing.navigationStart,
|
|
36
|
-
requestStart: global.performance?.timing.requestStart,
|
|
37
|
-
...driver.getTimings(),
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import includes from 'lodash/includes';
|
|
2
|
-
import * as ud from 'ud';
|
|
3
|
-
import { NATIVE_ROUTE_IDS } from '../../../constants/router';
|
|
4
|
-
import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
|
|
5
|
-
const gotoView = ud.defn(module, async function gotoView(gmailDriver, viewName, params) {
|
|
6
|
-
if (viewName[0] === '#') {
|
|
7
|
-
if (params) {
|
|
8
|
-
throw new Error("params parameter can't be passed with resolved URL");
|
|
9
|
-
}
|
|
10
|
-
viewName = viewName.slice(1);
|
|
11
|
-
}
|
|
12
|
-
if (includes(NATIVE_ROUTE_IDS, viewName)) {
|
|
13
|
-
if (gmailDriver.isUsingSyncAPI()) {
|
|
14
|
-
// need to go to the new url
|
|
15
|
-
if (params && typeof params !== 'string') {
|
|
16
|
-
const threadID = params.threadID;
|
|
17
|
-
if (threadID && typeof threadID === 'string') {
|
|
18
|
-
const int = parseInt(threadID, 16);
|
|
19
|
-
if (!isNaN(int)) {
|
|
20
|
-
//we got an old id
|
|
21
|
-
const syncThreadId = await gmailDriver.getSyncThreadIdForOldGmailThreadId(threadID);
|
|
22
|
-
params = {
|
|
23
|
-
...params,
|
|
24
|
-
threadID: '#' + syncThreadId,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
const newHash = gmailDriver.createLink(viewName, params);
|
|
31
|
-
// Create a fake link and simulate a click event on it to let Gmail handle
|
|
32
|
-
// the view change. If we just set window.location.hash ourselves to the
|
|
33
|
-
// newHash, it's a Gmail hash, and any composes are open, then Gmail will
|
|
34
|
-
// redirect the user to the hash with ?compose=... appended to the end and
|
|
35
|
-
// break the back button. If we try to pre-empt Gmail and add the
|
|
36
|
-
// ?compose=... part ourselves, then sometimes Gmail thinks it's new and
|
|
37
|
-
// actually triggers now composes to open. This fake link method avoids the
|
|
38
|
-
// issue.
|
|
39
|
-
const link = document.createElement('a');
|
|
40
|
-
link.style.display = 'none';
|
|
41
|
-
link.href = newHash;
|
|
42
|
-
document.body.appendChild(link);
|
|
43
|
-
simulateClick(link);
|
|
44
|
-
link.remove();
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const newHash = gmailDriver.createLink(viewName, params);
|
|
48
|
-
// If it's not a gmail view name, then it's probably a hash for a custom
|
|
49
|
-
// view. We need to set the hash ourselves. Gmail won't react at all to a
|
|
50
|
-
// hashchange event for a hash it doesn't recognize, so we don't have to
|
|
51
|
-
// worry about the above issue.
|
|
52
|
-
window.location.hash = newHash;
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
export default gotoView;
|
package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* https://support.google.com/mail/answer/11555490
|
|
3
|
-
*/
|
|
4
|
-
export default function isIntegratedViewGmail() {
|
|
5
|
-
const nav = document.querySelector('div[role=navigation]');
|
|
6
|
-
return Boolean(nav?.firstElementChild?.classList.contains('Xa'));
|
|
7
|
-
}
|
|
8
|
-
/** @returns null if the app menu is configured off */
|
|
9
|
-
export function isCollapsiblePanelHidden() {
|
|
10
|
-
if (!isIntegratedViewGmail()) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
return document.querySelector('div[role=navigation].aBA') != null;
|
|
14
|
-
}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import escape from 'lodash/escape';
|
|
2
|
-
import kefirStopper from 'kefir-stopper';
|
|
3
|
-
import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
|
|
4
|
-
import querySelector from '../../../lib/dom/querySelectorOrFail';
|
|
5
|
-
import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
|
|
6
|
-
export default class KeyboardShortcutHelpModifier {
|
|
7
|
-
_appId;
|
|
8
|
-
_appName;
|
|
9
|
-
_appIconUrl;
|
|
10
|
-
_stopper;
|
|
11
|
-
_shortcuts;
|
|
12
|
-
constructor() {
|
|
13
|
-
this._appId = null; // TODO have these passed to the constructor
|
|
14
|
-
this._appName = null;
|
|
15
|
-
this._appIconUrl = null;
|
|
16
|
-
this._stopper = kefirStopper();
|
|
17
|
-
this._shortcuts = new Set();
|
|
18
|
-
this._monitorKeyboardHelp();
|
|
19
|
-
}
|
|
20
|
-
destroy() {
|
|
21
|
-
this._stopper.destroy();
|
|
22
|
-
this._shortcuts.clear();
|
|
23
|
-
}
|
|
24
|
-
set(keyboardShortcutHandle, appId, appName, appIconUrl) {
|
|
25
|
-
this._initializeAppValues(appId, appName, appIconUrl);
|
|
26
|
-
this._shortcuts.add(keyboardShortcutHandle);
|
|
27
|
-
}
|
|
28
|
-
delete(keyboardShortcutHandle) {
|
|
29
|
-
this._shortcuts.delete(keyboardShortcutHandle);
|
|
30
|
-
}
|
|
31
|
-
_initializeAppValues(appId, appName, appIconUrl) {
|
|
32
|
-
if (!this._appId) {
|
|
33
|
-
this._appId = appId;
|
|
34
|
-
}
|
|
35
|
-
if (!this._appName) {
|
|
36
|
-
this._appName = appName;
|
|
37
|
-
}
|
|
38
|
-
if (!this._appIconUrl) {
|
|
39
|
-
this._appIconUrl = appIconUrl;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
_monitorKeyboardHelp() {
|
|
43
|
-
makeElementChildStream(document.body)
|
|
44
|
-
.map((event) => event.el)
|
|
45
|
-
.filter((node) => node && node.classList && node.classList.contains('wa'))
|
|
46
|
-
.flatMap((node) => makeMutationObserverChunkedStream(node, {
|
|
47
|
-
attributes: true,
|
|
48
|
-
attributeFilter: ['class'],
|
|
49
|
-
})
|
|
50
|
-
.filter(() => !node.classList.contains('aou'))
|
|
51
|
-
.toProperty(() => null)
|
|
52
|
-
.map(() => node))
|
|
53
|
-
.takeUntilBy(this._stopper)
|
|
54
|
-
.onValue((node) => this._renderHelp(node));
|
|
55
|
-
}
|
|
56
|
-
_renderHelp(node) {
|
|
57
|
-
if (this._shortcuts.size === 0) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
this._shortcuts.keys();
|
|
61
|
-
var header = this._renderHeader();
|
|
62
|
-
var table = this._renderTable();
|
|
63
|
-
var bodies = table.querySelectorAll('tbody tbody');
|
|
64
|
-
var index = 0;
|
|
65
|
-
this._shortcuts.forEach((keyboardShortcutHandle) => {
|
|
66
|
-
this._renderShortcut(bodies[index % 2], keyboardShortcutHandle);
|
|
67
|
-
index++;
|
|
68
|
-
});
|
|
69
|
-
const firstHeader = querySelector(node, '.aov');
|
|
70
|
-
const parent = firstHeader.parentElement;
|
|
71
|
-
if (!parent)
|
|
72
|
-
throw new Error('Could not find parent');
|
|
73
|
-
parent.insertBefore(header, firstHeader);
|
|
74
|
-
parent.insertBefore(table, firstHeader);
|
|
75
|
-
}
|
|
76
|
-
_renderHeader() {
|
|
77
|
-
const header = document.createElement('div');
|
|
78
|
-
header.setAttribute('class', 'aov aox');
|
|
79
|
-
header.innerHTML = [
|
|
80
|
-
'<div class="aow">',
|
|
81
|
-
'<span class="inboxsdk__shortcutHelp_title">',
|
|
82
|
-
escape(this._appName || this._appId) + ' keyboard shortcuts',
|
|
83
|
-
'</span>',
|
|
84
|
-
'</div>',
|
|
85
|
-
].join('');
|
|
86
|
-
if (this._appIconUrl) {
|
|
87
|
-
const img = document.createElement('img');
|
|
88
|
-
if (this._appIconUrl) {
|
|
89
|
-
img.src = this._appIconUrl;
|
|
90
|
-
}
|
|
91
|
-
img.setAttribute('class', 'inboxsdk__icon');
|
|
92
|
-
const title = querySelector(header, '.inboxsdk__shortcutHelp_title');
|
|
93
|
-
title.insertBefore(img, title.firstChild);
|
|
94
|
-
}
|
|
95
|
-
return header;
|
|
96
|
-
}
|
|
97
|
-
_renderTable() {
|
|
98
|
-
var table = document.createElement('table');
|
|
99
|
-
table.setAttribute('cellpadding', '0');
|
|
100
|
-
table.setAttribute('class', 'cf wd inboxsdk__shortcutHelp_table');
|
|
101
|
-
table.innerHTML = [
|
|
102
|
-
'<tbody>',
|
|
103
|
-
'<tr>',
|
|
104
|
-
'<td class="Dn">',
|
|
105
|
-
'<table cellpadding="0" class="cf">',
|
|
106
|
-
'<tbody>',
|
|
107
|
-
'<tr><th> </th><th> </th></tr>',
|
|
108
|
-
'</tbody>',
|
|
109
|
-
'</table>',
|
|
110
|
-
'</td>',
|
|
111
|
-
'<td class="Dn">',
|
|
112
|
-
'<table cellpadding="0" class="cf">',
|
|
113
|
-
'<tbody>',
|
|
114
|
-
'<tr><th> </th><th> </th></tr>',
|
|
115
|
-
'</tbody>',
|
|
116
|
-
'</table>',
|
|
117
|
-
'</td>',
|
|
118
|
-
'</tr',
|
|
119
|
-
'</tbody>',
|
|
120
|
-
].join('');
|
|
121
|
-
return table;
|
|
122
|
-
}
|
|
123
|
-
_renderShortcut(tableBody, keyboardShortcutHandle) {
|
|
124
|
-
var shortcutRow = document.createElement('tr');
|
|
125
|
-
shortcutRow.innerHTML = [
|
|
126
|
-
'<td class="wg Dn"> ',
|
|
127
|
-
_getShortcutHTML(keyboardShortcutHandle.chord),
|
|
128
|
-
'</td>',
|
|
129
|
-
'<td class="we Dn"> ',
|
|
130
|
-
escape(keyboardShortcutHandle.description || ''),
|
|
131
|
-
'</td>',
|
|
132
|
-
].join('');
|
|
133
|
-
tableBody.appendChild(shortcutRow);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
function _getShortcutHTML(chord) {
|
|
137
|
-
const retArray = [];
|
|
138
|
-
const parts = chord.split(/[\s+]/g);
|
|
139
|
-
const separators = chord.match(/[\s+]/g);
|
|
140
|
-
for (var ii = 0; ii < parts.length; ii++) {
|
|
141
|
-
retArray.push('<span class="wh">' + escape(_getAngledBracket(parts[ii])) + '</span>');
|
|
142
|
-
if (separators && separators[ii]) {
|
|
143
|
-
retArray.push(_getSeparatorHTML(separators[ii]));
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
retArray.push(' :');
|
|
147
|
-
return retArray.join('');
|
|
148
|
-
}
|
|
149
|
-
function _getAngledBracket(chordChar) {
|
|
150
|
-
switch (chordChar.toLowerCase()) {
|
|
151
|
-
case 'shift':
|
|
152
|
-
return '<Shift>';
|
|
153
|
-
case 'ctrl':
|
|
154
|
-
return '<Ctrl>';
|
|
155
|
-
case 'alt':
|
|
156
|
-
return '<Alt>';
|
|
157
|
-
case 'meta':
|
|
158
|
-
case 'command':
|
|
159
|
-
return '<⌘>';
|
|
160
|
-
case 'mod':
|
|
161
|
-
// Operating system check copied from Combokeys.
|
|
162
|
-
// https://github.com/avocode/combokeys/blob/0b80e13cf7e5217c5b4fbd393289a87b1f48f7cc/helpers/special-aliases.js#L14
|
|
163
|
-
return /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? '<⌘>' : '<Ctrl>';
|
|
164
|
-
default:
|
|
165
|
-
return chordChar;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
function _getSeparatorHTML(separator) {
|
|
169
|
-
switch (separator) {
|
|
170
|
-
case ' ':
|
|
171
|
-
return '<span class="wb">then</span> ';
|
|
172
|
-
case '+':
|
|
173
|
-
return ' <span class="wb">+</span> ';
|
|
174
|
-
default:
|
|
175
|
-
return '';
|
|
176
|
-
}
|
|
177
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
|
|
2
|
-
import GmailElementGetter from '../gmail-element-getter';
|
|
3
|
-
import waitFor from '../../../lib/wait-for';
|
|
4
|
-
export default async function openComposeWindow(_gmailDriver) {
|
|
5
|
-
await GmailElementGetter.waitForGmailModeToSettle();
|
|
6
|
-
if (GmailElementGetter.isStandaloneComposeWindow() ||
|
|
7
|
-
GmailElementGetter.isStandaloneThreadWindow()) {
|
|
8
|
-
throw new Error('Can not open new compose while in standalone window');
|
|
9
|
-
}
|
|
10
|
-
if (!GmailElementGetter.getComposeButton()) {
|
|
11
|
-
await waitFor(() => !!GmailElementGetter.getComposeButton());
|
|
12
|
-
}
|
|
13
|
-
const composeButton = GmailElementGetter.getComposeButton();
|
|
14
|
-
if (!composeButton)
|
|
15
|
-
throw new Error('Could not find compose button');
|
|
16
|
-
simulateClick(composeButton);
|
|
17
|
-
}
|
package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import qs from 'querystring';
|
|
2
|
-
import getSyncThreadsForSearch from '../../../driver-common/getSyncThreadsForSearch';
|
|
3
|
-
import encodeDraftUrlId from './encodeDraftUrlId';
|
|
4
|
-
import getRfcMessageIdForGmailMessageId from './get-rfc-message-id-for-gmail-message-id';
|
|
5
|
-
export default async function openDraftByMessageID(driver, messageID) {
|
|
6
|
-
let newHash;
|
|
7
|
-
if (driver.isUsingSyncAPI()) {
|
|
8
|
-
const rfcMessageID = await getRfcMessageIdForGmailMessageId(driver, messageID);
|
|
9
|
-
const { threads } = await getSyncThreadsForSearch(driver, 'rfc822msgid:' + rfcMessageID);
|
|
10
|
-
if (threads.length === 0) {
|
|
11
|
-
throw new Error('Failed to get sync message id');
|
|
12
|
-
}
|
|
13
|
-
const thread = threads[0];
|
|
14
|
-
const syncMessageData = thread.extraMetaData.syncMessageData.find((m) => m.oldMessageID === messageID);
|
|
15
|
-
if (!syncMessageData) {
|
|
16
|
-
throw new Error('Failed to find syncMessageData');
|
|
17
|
-
}
|
|
18
|
-
const { syncMessageID } = syncMessageData;
|
|
19
|
-
newHash = makeNewSyncHash(window.location.hash, thread.syncThreadID, syncMessageID);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
newHash = makeNewHash(window.location.hash, messageID);
|
|
23
|
-
}
|
|
24
|
-
window.location.hash = newHash;
|
|
25
|
-
}
|
|
26
|
-
export function makeNewHash(oldHash, messageID) {
|
|
27
|
-
oldHash = '#' + oldHash.replace(/^#/, '');
|
|
28
|
-
const [pre, query] = oldHash.split('?');
|
|
29
|
-
const params = qs.parse(query);
|
|
30
|
-
if (params.compose) {
|
|
31
|
-
params.compose += ',' + messageID;
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
params.compose = messageID;
|
|
35
|
-
}
|
|
36
|
-
return pre + '?' + qs.stringify(params);
|
|
37
|
-
}
|
|
38
|
-
export function makeNewSyncHash(oldHash, syncThreadID, syncMessageID) {
|
|
39
|
-
oldHash = '#' + oldHash.replace(/^#/, '');
|
|
40
|
-
const [pre, query] = oldHash.split('?');
|
|
41
|
-
const params = qs.parse(query);
|
|
42
|
-
params.compose = encodeDraftUrlId(syncThreadID, syncMessageID);
|
|
43
|
-
return pre + '?' + qs.stringify(params);
|
|
44
|
-
}
|
package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { defn } from 'ud';
|
|
2
|
-
import GmailElementGetter from '../gmail-element-getter';
|
|
3
|
-
import onMouseDownAndUp from '../../../lib/dom/on-mouse-down-and-up';
|
|
4
|
-
export default function overrideGmailBackButton(gmailDriver, gmailRouteProcessor) {
|
|
5
|
-
GmailElementGetter.waitForGmailModeToSettle().then(function () {
|
|
6
|
-
if (GmailElementGetter.isStandalone()) {
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
_setupManagement(gmailDriver, gmailRouteProcessor);
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
function _setupManagement(gmailDriver, gmailRouteProcessor) {
|
|
13
|
-
gmailDriver
|
|
14
|
-
.getRouteViewDriverStream()
|
|
15
|
-
.scan((prev, gmailRouteView) => {
|
|
16
|
-
let lastCustomRouteID, lastCustomRouteParams;
|
|
17
|
-
if (prev &&
|
|
18
|
-
prev.gmailRouteView &&
|
|
19
|
-
prev.gmailRouteView.isCustomRouteBelongingToApp()) {
|
|
20
|
-
lastCustomRouteID = prev.gmailRouteView.getRouteID();
|
|
21
|
-
lastCustomRouteParams = prev.gmailRouteView.getParams();
|
|
22
|
-
}
|
|
23
|
-
return { gmailRouteView, lastCustomRouteID, lastCustomRouteParams };
|
|
24
|
-
}, undefined)
|
|
25
|
-
.changes()
|
|
26
|
-
.onValue(({ gmailRouteView, lastCustomRouteID, lastCustomRouteParams }) => {
|
|
27
|
-
handleGmailRouteView(gmailRouteView, lastCustomRouteID, lastCustomRouteParams, gmailDriver, gmailRouteProcessor);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
const handleGmailRouteView = defn(module, function handleGmailRouteView(gmailRouteView, lastCustomRouteID, lastCustomRouteParams, gmailDriver, gmailRouteProcessor) {
|
|
31
|
-
if (lastCustomRouteID &&
|
|
32
|
-
gmailRouteView.getRouteType() === gmailRouteProcessor.RouteTypes.THREAD) {
|
|
33
|
-
_bindToBackButton(gmailDriver, gmailRouteView);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
function _bindToBackButton(gmailDriver, gmailRouteView) {
|
|
37
|
-
const backButton = GmailElementGetter.getThreadBackButton();
|
|
38
|
-
if (!backButton) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
onMouseDownAndUp(backButton)
|
|
42
|
-
.takeUntilBy(gmailRouteView.getStopper())
|
|
43
|
-
.filter((e) => !e.defaultPrevented)
|
|
44
|
-
.onValue((e) => {
|
|
45
|
-
window.history.back();
|
|
46
|
-
e.preventDefault();
|
|
47
|
-
e.stopImmediatePropagation();
|
|
48
|
-
});
|
|
49
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export default function registerSearchQueryRewriter(pageCommunicator, obj) {
|
|
2
|
-
pageCommunicator.createCustomSearchTerm(obj.term);
|
|
3
|
-
pageCommunicator.ajaxInterceptStream
|
|
4
|
-
.filter((event) => {
|
|
5
|
-
return (event.type === 'searchQueryForReplacement' && event.term === obj.term);
|
|
6
|
-
})
|
|
7
|
-
.onValue((event) => {
|
|
8
|
-
Promise.resolve(obj.termReplacer({})).then((result) => {
|
|
9
|
-
if (typeof result != 'string') {
|
|
10
|
-
throw new Error('termReplacer response must be a string');
|
|
11
|
-
}
|
|
12
|
-
const newTerm = '(' + result + ')';
|
|
13
|
-
const newQuery = event.query.replace(obj.term, () => newTerm // Callback used so $ escapes aren't interpreted
|
|
14
|
-
);
|
|
15
|
-
pageCommunicator.setSearchQueryReplacement(event.query, newQuery);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import once from 'lodash/once';
|
|
2
|
-
import find from 'lodash/find';
|
|
3
|
-
import * as Kefir from 'kefir';
|
|
4
|
-
import fromEventTargetCapture from '../../../lib/from-event-target-capture';
|
|
5
|
-
import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
|
|
6
|
-
import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
|
|
7
|
-
import gmailElementGetter from '../gmail-element-getter';
|
|
8
|
-
import copyAndValidateAutocompleteResults from '../../../lib/copyAndValidateAutocompleteResults';
|
|
9
|
-
export default function registerSearchSuggestionsProvider(driver, handler) {
|
|
10
|
-
// We inject the app-provided suggestions into Gmail's AJAX response. Then we
|
|
11
|
-
// watch the DOM for our injected suggestions to show up and attach click and
|
|
12
|
-
// enter handlers to them to let them do custom actions.
|
|
13
|
-
const providerId = 'inboxsdk__suggestions_' +
|
|
14
|
-
('' + Date.now() + Math.random()).replace(/\D+/g, '');
|
|
15
|
-
const pageCommunicator = driver.getPageCommunicator();
|
|
16
|
-
pageCommunicator.registerSuggestionsModifier(providerId);
|
|
17
|
-
// Listen for the AJAX requests, call the application's handler function, and
|
|
18
|
-
// give the application's suggestions back to the pageCommunicator for it to
|
|
19
|
-
// inject into the AJAX responses.
|
|
20
|
-
const suggestionsStream = pageCommunicator.ajaxInterceptStream
|
|
21
|
-
.filter((event) => event.type === 'suggestionsRequest')
|
|
22
|
-
.flatMapLatest(({ query }) => Kefir.fromPromise(Promise.resolve(handler(query)))
|
|
23
|
-
.flatMap((results) => {
|
|
24
|
-
try {
|
|
25
|
-
const validatedResults = copyAndValidateAutocompleteResults(driver, results);
|
|
26
|
-
const validatedResultsWithIds = validatedResults.map((result) => ({
|
|
27
|
-
...result,
|
|
28
|
-
providerId,
|
|
29
|
-
id: `${Date.now()}-${Math.random()}`,
|
|
30
|
-
}));
|
|
31
|
-
return Kefir.constant(validatedResultsWithIds);
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
return Kefir.constantError(e);
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
.mapErrors((err) => {
|
|
38
|
-
driver.getLogger().error(err);
|
|
39
|
-
return [];
|
|
40
|
-
})
|
|
41
|
-
.map((suggestions) => {
|
|
42
|
-
return { query, suggestions };
|
|
43
|
-
}))
|
|
44
|
-
.onValue((event) => {
|
|
45
|
-
pageCommunicator.provideAutocompleteSuggestions(providerId, event.query, event.suggestions);
|
|
46
|
-
})
|
|
47
|
-
.map((event) => event.suggestions);
|
|
48
|
-
// Wait for the first routeViewDriver to happen before looking for the search box.
|
|
49
|
-
const searchBoxStream = driver
|
|
50
|
-
.getRouteViewDriverStream()
|
|
51
|
-
.toProperty(() => null)
|
|
52
|
-
.map(() => gmailElementGetter.getSearchInput())
|
|
53
|
-
.filter(Boolean)
|
|
54
|
-
.take(1);
|
|
55
|
-
// Wait for the search box to be focused before looking for the suggestions box.
|
|
56
|
-
const suggestionsBoxTbodyStream = searchBoxStream
|
|
57
|
-
.flatMapLatest((searchBox) => Kefir.fromEvents(searchBox, 'focus'))
|
|
58
|
-
.map(() => gmailElementGetter.getSearchSuggestionsBoxParent())
|
|
59
|
-
.filter(Boolean)
|
|
60
|
-
.flatMapLatest(makeElementChildStream)
|
|
61
|
-
.map((x) => x.el.firstElementChild)
|
|
62
|
-
.take(1)
|
|
63
|
-
.toProperty();
|
|
64
|
-
// This stream emits an event after every time Gmail changes the suggestions
|
|
65
|
-
// list.
|
|
66
|
-
const suggestionsBoxGmailChanges = suggestionsBoxTbodyStream
|
|
67
|
-
.flatMap((suggestionsBoxTbody) => makeMutationObserverChunkedStream(suggestionsBoxTbody, {
|
|
68
|
-
childList: true,
|
|
69
|
-
}).toProperty(() => null))
|
|
70
|
-
.map(() => null);
|
|
71
|
-
// We listen to the event on the document node so that the event can be
|
|
72
|
-
// canceled before Gmail receives it.
|
|
73
|
-
const suggestionsBoxEnterPresses = searchBoxStream.flatMap((searchBox) => fromEventTargetCapture(document, 'keydown').filter((event) => event.keyCode == 13 && event.target === searchBox));
|
|
74
|
-
// Stream of arrays of row elements belonging to this provider.
|
|
75
|
-
const providedRows = suggestionsBoxTbodyStream
|
|
76
|
-
.sampledBy(suggestionsBoxGmailChanges)
|
|
77
|
-
.map((suggestionsBoxTbody) => Array.from(suggestionsBoxTbody.children).filter((row) => row.getElementsByClassName(providerId).length > 0));
|
|
78
|
-
providedRows.onValue((rows) => {
|
|
79
|
-
if (rows[0] && rows[0].previousElementSibling) {
|
|
80
|
-
const prevFirstChild = rows[0].previousElementSibling.firstElementChild;
|
|
81
|
-
if (prevFirstChild) {
|
|
82
|
-
prevFirstChild.classList.add('inboxsdk__suggestions_separator_before');
|
|
83
|
-
}
|
|
84
|
-
const firstChild = rows[0].firstElementChild;
|
|
85
|
-
if (firstChild) {
|
|
86
|
-
firstChild.classList.add('inboxsdk__suggestions_separator_after');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
const rowSelectionEvents = providedRows.flatMapLatest((rows) => Kefir.merge(rows.map((row) => Kefir.merge([
|
|
91
|
-
fromEventTargetCapture(row, 'click'),
|
|
92
|
-
suggestionsBoxEnterPresses.filter(() => row.classList.contains('gssb_i')),
|
|
93
|
-
]).map((event) => ({ event, row })))));
|
|
94
|
-
const activeSuggestionsStream = Kefir.merge([
|
|
95
|
-
suggestionsStream,
|
|
96
|
-
searchBoxStream
|
|
97
|
-
.flatMapLatest((searchBox) => Kefir.fromEvents(searchBox, 'blur'))
|
|
98
|
-
.map(() => []),
|
|
99
|
-
]).toProperty();
|
|
100
|
-
Kefir.combine([rowSelectionEvents, searchBoxStream], [
|
|
101
|
-
activeSuggestionsStream,
|
|
102
|
-
]).onValue((tuple) => {
|
|
103
|
-
const [{ event, row }, searchBox, suggestions] = tuple;
|
|
104
|
-
const itemDataSpan = row.querySelector('span[data-inboxsdk-suggestion]');
|
|
105
|
-
const itemData = itemDataSpan
|
|
106
|
-
? JSON.parse(itemDataSpan.getAttribute('data-inboxsdk-suggestion') || 'null')
|
|
107
|
-
: null;
|
|
108
|
-
const clearSearch = once(() => {
|
|
109
|
-
event.stopImmediatePropagation();
|
|
110
|
-
event.preventDefault();
|
|
111
|
-
searchBox.blur();
|
|
112
|
-
searchBox.value = '';
|
|
113
|
-
});
|
|
114
|
-
if (itemData) {
|
|
115
|
-
const { id } = itemData;
|
|
116
|
-
const suggestion = find(suggestions, (s) => s.id === id);
|
|
117
|
-
if (!suggestion) {
|
|
118
|
-
// I can imagine this happening if Gmail caches old suggestions
|
|
119
|
-
// results. Unknown if it does that so let's log. If it does, then
|
|
120
|
-
// activeSuggestionsStream should be changed to have more than just
|
|
121
|
-
// the most recent suggestions.
|
|
122
|
-
driver.getLogger().error(new Error('Failed to find suggestion by id'));
|
|
123
|
-
}
|
|
124
|
-
if (suggestion && suggestion.onClick) {
|
|
125
|
-
clearSearch();
|
|
126
|
-
suggestion.onClick.call(null);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (itemData && itemData.routeName) {
|
|
130
|
-
clearSearch();
|
|
131
|
-
driver.goto(itemData.routeName, itemData.routeParams);
|
|
132
|
-
}
|
|
133
|
-
else if (itemData && itemData.externalURL) {
|
|
134
|
-
clearSearch();
|
|
135
|
-
window.open(itemData.externalURL);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import * as Kefir from 'kefir';
|
|
2
|
-
import udKefir from 'ud-kefir';
|
|
3
|
-
import kefirMakeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
|
|
4
|
-
import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
|
|
5
|
-
import elementViewMapper from '../../../lib/dom/element-view-mapper';
|
|
6
|
-
import makeElementStreamMerger from '../../../lib/dom/make-element-stream-merger';
|
|
7
|
-
import GmailElementGetter from '../gmail-element-getter';
|
|
8
|
-
import GmailComposeView from '../views/gmail-compose-view';
|
|
9
|
-
var impStream = udKefir(module, imp);
|
|
10
|
-
export default function setupComposeViewDriverStream(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
|
|
11
|
-
return impStream.flatMapLatest((imp) => imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream));
|
|
12
|
-
}
|
|
13
|
-
function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
|
|
14
|
-
return Kefir.fromPromise(GmailElementGetter.waitForGmailModeToSettle())
|
|
15
|
-
.flatMap(() => {
|
|
16
|
-
var elementStream;
|
|
17
|
-
var isStandalone = false;
|
|
18
|
-
if (GmailElementGetter.isStandaloneComposeWindow()) {
|
|
19
|
-
elementStream = _setupStandaloneComposeElementStream();
|
|
20
|
-
isStandalone = true;
|
|
21
|
-
}
|
|
22
|
-
else if (GmailElementGetter.isStandaloneThreadWindow()) {
|
|
23
|
-
elementStream = Kefir.never();
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
elementStream = _setupStandardComposeElementStream();
|
|
27
|
-
}
|
|
28
|
-
return elementStream.map(elementViewMapper((el) => new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
|
|
29
|
-
isStandalone,
|
|
30
|
-
isInlineReplyForm: false,
|
|
31
|
-
})));
|
|
32
|
-
})
|
|
33
|
-
.merge(messageViewDriverStream.flatMap((gmailMessageView) => gmailMessageView.getReplyElementStream().map(elementViewMapper((el) => new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
|
|
34
|
-
isStandalone: false,
|
|
35
|
-
isInlineReplyForm: true,
|
|
36
|
-
})))))
|
|
37
|
-
.flatMap((composeViewDriver) => composeViewDriver.ready());
|
|
38
|
-
}
|
|
39
|
-
function _setupStandardComposeElementStream() {
|
|
40
|
-
return _waitForContainerAndMonitorChildrenStream(() => GmailElementGetter.getComposeWindowContainer())
|
|
41
|
-
.flatMap((composeGrandParent) => {
|
|
42
|
-
var composeParentEl = composeGrandParent.el.querySelector('div.AD');
|
|
43
|
-
if (composeParentEl) {
|
|
44
|
-
return makeElementChildStream(composeParentEl)
|
|
45
|
-
.takeUntilBy(composeGrandParent.removalStream)
|
|
46
|
-
.map(_informElement('composeFullscreenStateChanged'));
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
return Kefir.never();
|
|
50
|
-
}
|
|
51
|
-
})
|
|
52
|
-
.merge(GmailElementGetter.getFullscreenComposeWindowContainerStream()
|
|
53
|
-
.flatMap(({ el, removalStream }) => makeElementChildStream(el).takeUntilBy(removalStream))
|
|
54
|
-
.map(_informElement('composeFullscreenStateChanged'))
|
|
55
|
-
.map(({ el, removalStream }) => {
|
|
56
|
-
// If you close a fullscreen compose while it's still saving, Gmail never
|
|
57
|
-
// removes it from the DOM, and instead only removes a specific child
|
|
58
|
-
// element. Ugh. Watch for its removal too.
|
|
59
|
-
const targetEl = el.querySelector('[role=dialog] div.aaZ');
|
|
60
|
-
if (!targetEl)
|
|
61
|
-
return null;
|
|
62
|
-
var hiddenStream = kefirMakeMutationObserverChunkedStream(targetEl, {
|
|
63
|
-
childList: true,
|
|
64
|
-
})
|
|
65
|
-
.filter(() => targetEl.childElementCount === 0)
|
|
66
|
-
.map(() => null);
|
|
67
|
-
return {
|
|
68
|
-
el,
|
|
69
|
-
removalStream: removalStream.merge(hiddenStream).take(1),
|
|
70
|
-
};
|
|
71
|
-
})
|
|
72
|
-
.filter(Boolean))
|
|
73
|
-
.flatMap((event) => {
|
|
74
|
-
if (!event)
|
|
75
|
-
throw new Error('Should not happen');
|
|
76
|
-
const el = event.el.querySelector('[role=dialog]');
|
|
77
|
-
if (!el || !el.querySelector('form')) {
|
|
78
|
-
return Kefir.never();
|
|
79
|
-
}
|
|
80
|
-
return Kefir.constant({
|
|
81
|
-
el,
|
|
82
|
-
removalStream: event.removalStream,
|
|
83
|
-
});
|
|
84
|
-
})
|
|
85
|
-
.flatMap(makeElementStreamMerger());
|
|
86
|
-
}
|
|
87
|
-
function _setupStandaloneComposeElementStream() {
|
|
88
|
-
return _waitForContainerAndMonitorChildrenStream(() => GmailElementGetter.StandaloneCompose.getComposeWindowContainer());
|
|
89
|
-
}
|
|
90
|
-
function _waitForContainerAndMonitorChildrenStream(containerFn) {
|
|
91
|
-
return Kefir.interval(2000, undefined) // TODO replace this with page-parser-tree
|
|
92
|
-
.map(containerFn)
|
|
93
|
-
.filter()
|
|
94
|
-
.take(1)
|
|
95
|
-
.flatMap((containerEl) => makeElementChildStream(containerEl));
|
|
96
|
-
}
|
|
97
|
-
function _informElement(eventName) {
|
|
98
|
-
return function (event) {
|
|
99
|
-
const composeEl = event &&
|
|
100
|
-
event.el &&
|
|
101
|
-
event.el.querySelector &&
|
|
102
|
-
event.el.querySelector('[role=dialog]');
|
|
103
|
-
if (composeEl) {
|
|
104
|
-
composeEl.dispatchEvent(new CustomEvent(eventName, {
|
|
105
|
-
bubbles: false,
|
|
106
|
-
cancelable: false,
|
|
107
|
-
detail: null,
|
|
108
|
-
}));
|
|
109
|
-
}
|
|
110
|
-
return event;
|
|
111
|
-
};
|
|
112
|
-
}
|