@inboxsdk/core 0.2.28-alpha.5 → 0.2.28
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 +28 -62
- package/inboxsdk.js.map +1 -1
- package/package.json +1 -5
- package/pageWorld.js.map +1 -1
- package/src/build/exec.d.ts +0 -1
- package/src/build/spawn.d.ts +0 -1
- package/src/common/ajax.d.ts +0 -1
- package/src/common/cachebust-url.d.ts +0 -1
- package/src/common/censorHTMLstring.d.ts +0 -1
- package/src/common/censorHTMLtree.d.ts +0 -1
- package/src/common/censorJSONTree.d.ts +0 -1
- package/src/common/connectivity-test.d.ts +0 -1
- package/src/common/defer.d.ts +0 -1
- package/src/common/find-parent.d.ts +0 -1
- package/src/common/get-extension-id.d.ts +0 -1
- package/src/common/get-or-fail.d.ts +0 -1
- package/src/common/get-session-id.d.ts +0 -1
- package/src/common/get-stack-trace.d.ts +0 -1
- package/src/common/html-to-text.d.ts +0 -1
- package/src/common/isElementVisible.d.ts +0 -1
- package/src/common/load-script.d.ts +0 -1
- package/src/common/log-error.d.ts +0 -1
- package/src/common/quoted-split.d.ts +0 -1
- package/src/common/rate-limit-queuer.d.ts +0 -1
- package/src/common/rate-limit.d.ts +0 -1
- package/src/common/version.d.ts +0 -1
- package/src/inboxsdk-js/check-requirements.js +3 -7
- package/src/inboxsdk-js/header.js +0 -1
- package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +6 -5
- package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +3 -4
- package/src/inboxsdk-js/inboxsdk-REMOTE.js +1 -3
- package/src/inboxsdk-js/inboxsdk-TEST.js +3 -4
- package/src/inboxsdk-js/inboxsdk.js +39 -33
- package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +18 -15
- package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts +0 -1
- package/src/inboxsdk.d.ts +27 -10
- package/src/injected-js/gmail/constants.d.ts +0 -1
- package/src/injected-js/gmail/modify-suggestions.d.ts +0 -1
- package/src/injected-js/gmail/modify-suggestions.test.js +9 -8
- package/src/injected-js/gmail/setup-gmail-interceptor.js +579 -340
- package/src/injected-js/gmail/setup-gmonkey-handler.d.ts +0 -1
- package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts +0 -1
- package/src/injected-js/gmail/sync-compose-processor.d.ts +0 -1
- package/src/injected-js/gmail/sync-compose-request-processor.d.ts +0 -1
- package/src/injected-js/gmail/sync-compose-request-processor.test.js +49 -39
- package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +33 -20
- package/src/injected-js/gmail/thread-identifier/index.js +93 -57
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +31 -22
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +28 -12
- package/src/injected-js/inbox/setupAjaxInterceptor.js +121 -64
- package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +66 -53
- package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +36 -20
- package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
- package/src/injected-js/injected-logger.d.ts +0 -1
- package/src/injected-js/main.js +24 -11
- package/src/injected-js/message-metadata-holder.js +82 -52
- package/src/injected-js/setup-data-exposer.js +148 -89
- package/src/injected-js/setup-error-silencer.js +21 -21
- package/src/injected-js/setup-event-reemitter.js +22 -30
- package/src/injected-js/setupCustomViewEventAssassin.d.ts +0 -1
- package/src/injected-js/setupInboxCustomViewLinkFixer.js +29 -24
- package/src/injected-js/setupPushStateListener.js +11 -18
- package/src/injected-js/xhr-helper.js +65 -62
- package/src/injected-js/xhr-proxy-factory.js +445 -195
- package/src/injected-js/xhr-proxy-factory.test.js +991 -824
- package/src/platform-implementation-js/constants/nav-item-types.d.ts +0 -1
- package/src/platform-implementation-js/constants/router.js +9 -17
- package/src/platform-implementation-js/constants/toolbars.js +3 -8
- package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +136 -115
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -3
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +14 -13
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +48 -27
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +42 -31
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +40 -30
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +18 -10
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +28 -21
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +45 -33
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +49 -31
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +65 -58
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +124 -40
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +22 -17
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +11 -10
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +80 -44
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +26 -19
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +147 -71
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +148 -91
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +166 -150
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +120 -70
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +67 -44
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +379 -230
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +307 -121
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +24 -17
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +49 -41
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +40 -30
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +60 -28
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +133 -61
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +110 -83
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +42 -30
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +46 -52
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +3 -13
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +683 -355
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +0 -4
- package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +93 -77
- package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +82 -35
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +94 -44
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +19 -12
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +29 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +797 -391
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +9 -7
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +109 -60
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +135 -95
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +211 -103
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +541 -188
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +135 -67
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +49 -27
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +13 -7
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +22 -9
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +63 -36
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +113 -38
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +16 -11
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +17 -11
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +11 -8
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +47 -27
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +24 -11
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +111 -59
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +14 -15
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +17 -11
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +24 -18
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +23 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +19 -11
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +376 -141
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +28 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +70 -34
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +17 -10
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +137 -83
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +19 -10
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +1190 -632
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +38 -29
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +617 -327
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -34
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +48 -29
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +380 -188
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +194 -104
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +811 -382
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +58 -34
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +581 -330
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +277 -123
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +35 -15
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +571 -216
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +336 -152
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +211 -87
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +11 -10
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +29 -20
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.d.ts +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +76 -41
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +99 -45
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +128 -76
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +319 -128
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +78 -45
- package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +4 -8
- package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +54 -36
- package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +53 -35
- package/src/platform-implementation-js/dom-driver/inbox/createLink.js +15 -13
- package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +18 -15
- package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +13 -14
- package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +20 -14
- package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +13 -14
- package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +67 -35
- package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +18 -16
- package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +185 -68
- package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +56 -28
- package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +10 -12
- package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
- package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +35 -24
- package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +89 -37
- package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +78 -56
- package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +32 -26
- package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +109 -52
- package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +8 -7
- package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +20 -16
- package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +16 -15
- package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +83 -75
- package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +823 -531
- package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +61 -48
- package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +12 -9
- package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +19 -12
- package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +33 -24
- package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +388 -201
- package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +265 -249
- package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +152 -84
- package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +67 -55
- package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +65 -43
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +56 -31
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +294 -191
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +45 -32
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +39 -21
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +240 -153
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +150 -75
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +37 -20
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +114 -60
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +65 -47
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +52 -41
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +36 -27
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +80 -52
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +649 -465
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +58 -37
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +26 -14
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +235 -118
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +11 -10
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +46 -28
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +202 -131
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +80 -40
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +61 -35
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +221 -124
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +213 -125
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +126 -104
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +51 -36
- package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +297 -158
- package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +35 -21
- package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +43 -24
- package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +68 -39
- package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts +0 -1
- package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +19 -14
- package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +35 -27
- package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts +0 -1
- package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +22 -16
- package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts +0 -1
- package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
- package/src/platform-implementation-js/driver-common/gmailAjax.d.ts +0 -1
- package/src/platform-implementation-js/driver-common/inboxAjax.js +7 -12
- package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts +0 -1
- package/src/platform-implementation-js/driver-common/requestGmailThread.js +20 -19
- package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +306 -197
- package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +161 -113
- package/src/platform-implementation-js/driver-common/update-icon.d.ts +0 -1
- package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +114 -1
- package/src/platform-implementation-js/driver-interfaces/driver.d.ts +0 -5
- package/src/platform-implementation-js/driver-interfaces/driver.js +126 -1
- package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +48 -4
- package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +29 -1
- package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +32 -1
- package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +11 -1
- package/src/platform-implementation-js/lib/ErrorCollector.d.ts +0 -1
- package/src/platform-implementation-js/lib/Membrane.d.ts +0 -1
- package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts +0 -1
- package/src/platform-implementation-js/lib/array-to-lifetimes.js +41 -43
- package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +155 -139
- package/src/platform-implementation-js/lib/attemptWithRetries.d.ts +0 -1
- package/src/platform-implementation-js/lib/common-page-communicator.d.ts +0 -1
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +38 -19
- package/src/platform-implementation-js/lib/css-selector-escape.js +3 -7
- package/src/platform-implementation-js/lib/delay-asap.d.ts +0 -1
- package/src/platform-implementation-js/lib/delay-idle.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/element-view-mapper.js +11 -8
- package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/get-selection.js +52 -23
- package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +101 -69
- package/src/platform-implementation-js/lib/dom/is-node-in-range.js +10 -8
- package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/make-element-stream-merger.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +17 -15
- package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/parentNodes.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/querySelectorOne.js +11 -8
- package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/set-css.js +3 -7
- package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +11 -9
- package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +33 -32
- package/src/platform-implementation-js/lib/dom/simulate-key.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts +0 -1
- package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts +0 -1
- package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.d.ts +0 -1
- package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +26 -23
- package/src/platform-implementation-js/lib/fake-window-resize.d.ts +0 -1
- package/src/platform-implementation-js/lib/from-event-target-capture.d.ts +0 -1
- package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts +0 -1
- package/src/platform-implementation-js/lib/handle-compose-link-chips.js +149 -86
- package/src/platform-implementation-js/lib/handler-registry.d.ts +0 -1
- package/src/platform-implementation-js/lib/idMap.d.ts +0 -1
- package/src/platform-implementation-js/lib/imageRequest.d.ts +0 -1
- package/src/platform-implementation-js/lib/incrementName.d.ts +0 -1
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts +0 -1
- package/src/platform-implementation-js/lib/inject-script.d.ts +0 -1
- package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +57 -42
- package/src/platform-implementation-js/lib/is-valid-app-id.d.ts +0 -1
- package/src/platform-implementation-js/lib/is-valid-email.d.ts +0 -1
- package/src/platform-implementation-js/lib/isNotNil.d.ts +0 -1
- package/src/platform-implementation-js/lib/isStreakAppId.d.ts +0 -1
- package/src/platform-implementation-js/lib/logger.d.ts +0 -1
- package/src/platform-implementation-js/lib/make-revocable-function.js +21 -19
- package/src/platform-implementation-js/lib/make-revocable-function.test.js +22 -20
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +17 -15
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +18 -9
- package/src/platform-implementation-js/lib/persistent-queue.d.ts +0 -1
- package/src/platform-implementation-js/lib/populateRouteID.js +9 -8
- package/src/platform-implementation-js/lib/populateRouteID.test.js +19 -20
- package/src/platform-implementation-js/lib/react/ElementContainer.js +20 -23
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +9 -10
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +20 -13
- package/src/platform-implementation-js/lib/routeIDmatchesHash.js +18 -13
- package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +17 -11
- package/src/platform-implementation-js/lib/safe-event-emitter.d.ts +0 -1
- package/src/platform-implementation-js/lib/shared-style.js +13 -14
- package/src/platform-implementation-js/lib/stopper-pool.d.ts +0 -1
- package/src/platform-implementation-js/lib/stream-wait-for.d.ts +0 -1
- package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +17 -18
- package/src/platform-implementation-js/lib/toLiveSet.js +15 -17
- package/src/platform-implementation-js/lib/wait-for.d.ts +1 -2
- package/src/platform-implementation-js/lib/waitForAsync.d.ts +0 -1
- package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +5 -6
- package/src/platform-implementation-js/main.js +24 -9
- package/src/platform-implementation-js/namespaces/butter-bar.d.ts +0 -1
- package/src/platform-implementation-js/namespaces/compose.js +60 -37
- package/src/platform-implementation-js/namespaces/conversations.js +124 -52
- package/src/platform-implementation-js/namespaces/global.js +39 -27
- package/src/platform-implementation-js/namespaces/keyboard.js +33 -29
- package/src/platform-implementation-js/namespaces/lists.js +31 -25
- package/src/platform-implementation-js/namespaces/modal.js +28 -34
- package/src/platform-implementation-js/namespaces/nav-menu.js +45 -30
- package/src/platform-implementation-js/namespaces/router.js +137 -70
- package/src/platform-implementation-js/namespaces/search.js +17 -19
- package/src/platform-implementation-js/namespaces/toolbars.js +117 -71
- package/src/platform-implementation-js/namespaces/user.js +37 -36
- package/src/platform-implementation-js/namespaces/widgets.js +61 -54
- package/src/platform-implementation-js/platform-implementation.d.ts +0 -2
- package/src/platform-implementation-js/platform-implementation.js +226 -98
- package/src/platform-implementation-js/views/SimpleElementView.d.ts +0 -1
- package/src/platform-implementation-js/views/app-toolbar-button-view.js +47 -26
- package/src/platform-implementation-js/views/collapsible-section-view.js +63 -66
- package/src/platform-implementation-js/views/compose-button-view.d.ts +0 -1
- package/src/platform-implementation-js/views/compose-view.d.ts +0 -1
- package/src/platform-implementation-js/views/content-panel-view.js +30 -28
- package/src/platform-implementation-js/views/conversations/attachment-card-view.js +44 -21
- package/src/platform-implementation-js/views/conversations/custom-message-view.js +104 -44
- package/src/platform-implementation-js/views/conversations/message-view.js +202 -131
- package/src/platform-implementation-js/views/conversations/thread-view.js +127 -75
- package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts +0 -1
- package/src/platform-implementation-js/views/native-nav-item-view.js +65 -32
- package/src/platform-implementation-js/views/nav-item-view.js +115 -51
- package/src/platform-implementation-js/views/route-view/custom-route-view.js +20 -25
- package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
- package/src/platform-implementation-js/views/route-view/list-route-view.js +52 -30
- package/src/platform-implementation-js/views/route-view/route-view.js +35 -24
- package/src/platform-implementation-js/views/section-view.js +52 -60
- package/src/platform-implementation-js/views/thread-row-view.js +74 -49
- package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts +0 -1
- package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.d.ts +0 -1
- package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts +0 -1
- package/src/platform-implementation-js/widgets/drawer-view.js +36 -29
- package/src/platform-implementation-js/widgets/modal-view.js +68 -39
- package/src/platform-implementation-js/widgets/mole-view.js +22 -22
- package/src/platform-implementation-js/widgets/top-message-bar-view.js +10 -13
- package/src/build/exec.d.ts.map +0 -1
- package/src/build/exec.js +0 -26
- package/src/build/spawn.d.ts.map +0 -1
- package/src/build/spawn.js +0 -17
- package/src/common/ajax.d.ts.map +0 -1
- package/src/common/ajax.js +0 -90
- package/src/common/cachebust-url.d.ts.map +0 -1
- package/src/common/cachebust-url.js +0 -10
- package/src/common/censorHTMLstring.d.ts.map +0 -1
- package/src/common/censorHTMLstring.js +0 -37
- package/src/common/censorHTMLtree.d.ts.map +0 -1
- package/src/common/censorHTMLtree.js +0 -28
- package/src/common/censorJSONTree.d.ts.map +0 -1
- package/src/common/censorJSONTree.js +0 -15
- package/src/common/connectivity-test.d.ts.map +0 -1
- package/src/common/connectivity-test.js +0 -21
- package/src/common/defer.d.ts.map +0 -1
- package/src/common/defer.js +0 -11
- package/src/common/find-parent.d.ts.map +0 -1
- package/src/common/find-parent.js +0 -10
- package/src/common/get-extension-id.d.ts.map +0 -1
- package/src/common/get-extension-id.js +0 -7
- package/src/common/get-or-fail.d.ts.map +0 -1
- package/src/common/get-or-fail.js +0 -8
- package/src/common/get-session-id.d.ts.map +0 -1
- package/src/common/get-session-id.js +0 -14
- package/src/common/get-stack-trace.d.ts.map +0 -1
- package/src/common/get-stack-trace.js +0 -6
- package/src/common/html-to-text.d.ts.map +0 -1
- package/src/common/html-to-text.js +0 -7
- package/src/common/isElementVisible.d.ts.map +0 -1
- package/src/common/isElementVisible.js +0 -6
- package/src/common/load-script.d.ts.map +0 -1
- package/src/common/load-script.js +0 -127
- package/src/common/log-error.d.ts.map +0 -1
- package/src/common/log-error.js +0 -191
- package/src/common/quoted-split.d.ts.map +0 -1
- package/src/common/quoted-split.js +0 -18
- package/src/common/rate-limit-queuer.d.ts.map +0 -1
- package/src/common/rate-limit-queuer.js +0 -57
- package/src/common/rate-limit.d.ts.map +0 -1
- package/src/common/rate-limit.js +0 -14
- package/src/common/version.d.ts.map +0 -1
- package/src/common/version.js +0 -6
- package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +0 -1
- package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -27
- package/src/injected-js/gmail/constants.d.ts.map +0 -1
- package/src/injected-js/gmail/constants.js +0 -2
- package/src/injected-js/gmail/modify-suggestions.d.ts.map +0 -1
- package/src/injected-js/gmail/modify-suggestions.js +0 -106
- package/src/injected-js/gmail/setup-gmonkey-handler.d.ts.map +0 -1
- package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
- package/src/injected-js/gmail/sync-compose-processor-20220909.d.ts.map +0 -1
- package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
- package/src/injected-js/gmail/sync-compose-processor.d.ts.map +0 -1
- package/src/injected-js/gmail/sync-compose-processor.js +0 -55
- package/src/injected-js/gmail/sync-compose-request-processor.d.ts.map +0 -1
- package/src/injected-js/gmail/sync-compose-request-processor.js +0 -110
- package/src/injected-js/injected-logger.d.ts.map +0 -1
- package/src/injected-js/injected-logger.js +0 -50
- package/src/injected-js/setupCustomViewEventAssassin.d.ts.map +0 -1
- package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
- package/src/platform-implementation-js/constants/nav-item-types.d.ts.map +0 -1
- package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts +0 -5
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts +0 -5
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -28
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- 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/encodeDraftUrlId.d.ts.map +0 -1
- 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-rfc-message-id-for-gmail-message-id.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- 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/isIntegratedViewGmail.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -4
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.d.ts.map +0 -1
- 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/track-gmail-styles.d.ts +0 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -253
- package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -200
- package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -533
- package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -289
- package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
- package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.d.ts.map +0 -1
- 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.d.ts +0 -43
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -126
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.d.ts.map +0 -1
- 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/detectClassicRecipientsArea.d.ts.map +0 -1
- 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/get-address-information-extractor.d.ts.map +0 -1
- 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-recipients.d.ts.map +0 -1
- 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/gmail-compose-button-view.d.ts.map +0 -1
- 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/page-parser.d.ts.map +0 -1
- 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/set-recipients.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- 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-message-view/attachment-icon.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -5
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -759
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -58
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -55
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -96
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- 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-dropdown-view.d.ts.map +0 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
- package/src/platform-implementation-js/driver-common/getAccountUrlPart.d.ts.map +0 -1
- package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
- package/src/platform-implementation-js/driver-common/getOriginalMessagePage.d.ts.map +0 -1
- package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
- package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.d.ts.map +0 -1
- package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
- package/src/platform-implementation-js/driver-common/gmailAjax.d.ts.map +0 -1
- package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
- package/src/platform-implementation-js/driver-common/render-custom-icon.d.ts.map +0 -1
- package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
- package/src/platform-implementation-js/driver-common/update-icon.d.ts.map +0 -1
- package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
- package/src/platform-implementation-js/lib/ErrorCollector.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
- package/src/platform-implementation-js/lib/Membrane.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/Membrane.js +0 -22
- package/src/platform-implementation-js/lib/ScrollableContainByScreen.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
- package/src/platform-implementation-js/lib/attemptWithRetries.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
- package/src/platform-implementation-js/lib/common-page-communicator.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
- package/src/platform-implementation-js/lib/delay-asap.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/delay-asap.js +0 -12
- package/src/platform-implementation-js/lib/delay-idle.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/delay-idle.js +0 -16
- package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
- package/src/platform-implementation-js/lib/dom/generic-button-view.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
- package/src/platform-implementation-js/lib/dom/get-insert-before-element.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
- package/src/platform-implementation-js/lib/dom/insert-element-in-order.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
- package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
- package/src/platform-implementation-js/lib/dom/make-element-child-stream.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -28
- package/src/platform-implementation-js/lib/dom/make-element-view-stream.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
- package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -39
- package/src/platform-implementation-js/lib/dom/parentNodes.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
- package/src/platform-implementation-js/lib/dom/querySelectorOrFail.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
- package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
- package/src/platform-implementation-js/lib/dom/simulate-key.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
- package/src/platform-implementation-js/lib/dom/simulate-mouse-event.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
- package/src/platform-implementation-js/lib/dom/trigger-relay-event.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
- package/src/platform-implementation-js/lib/fake-window-resize.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
- package/src/platform-implementation-js/lib/from-event-target-capture.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
- package/src/platform-implementation-js/lib/fromEventsWithOptions.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
- package/src/platform-implementation-js/lib/handler-registry.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/handler-registry.js +0 -67
- package/src/platform-implementation-js/lib/idMap.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/idMap.js +0 -45
- package/src/platform-implementation-js/lib/imageRequest.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/imageRequest.js +0 -8
- package/src/platform-implementation-js/lib/incrementName.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/incrementName.js +0 -7
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -14
- package/src/platform-implementation-js/lib/inject-script.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/inject-script.js +0 -33
- package/src/platform-implementation-js/lib/is-valid-app-id.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
- package/src/platform-implementation-js/lib/is-valid-email.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
- package/src/platform-implementation-js/lib/isNotNil.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/isNotNil.js +0 -5
- package/src/platform-implementation-js/lib/isStreakAppId.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
- package/src/platform-implementation-js/lib/logger.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/logger.js +0 -441
- package/src/platform-implementation-js/lib/persistent-queue.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
- package/src/platform-implementation-js/lib/safe-event-emitter.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -17
- package/src/platform-implementation-js/lib/stopper-pool.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
- package/src/platform-implementation-js/lib/stream-wait-for.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
- package/src/platform-implementation-js/lib/wait-for.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/wait-for.js +0 -28
- package/src/platform-implementation-js/lib/waitForAsync.d.ts.map +0 -1
- package/src/platform-implementation-js/lib/waitForAsync.js +0 -19
- package/src/platform-implementation-js/namespaces/app-menu.d.ts +0 -38
- package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +0 -1
- package/src/platform-implementation-js/namespaces/app-menu.js +0 -31
- package/src/platform-implementation-js/namespaces/butter-bar.d.ts.map +0 -1
- package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
- package/src/platform-implementation-js/views/SimpleElementView.d.ts.map +0 -1
- package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
- package/src/platform-implementation-js/views/app-menu-item-view.d.ts +0 -23
- package/src/platform-implementation-js/views/app-menu-item-view.d.ts.map +0 -1
- package/src/platform-implementation-js/views/app-menu-item-view.js +0 -257
- package/src/platform-implementation-js/views/collapsible-panel-view.d.ts +0 -50
- package/src/platform-implementation-js/views/collapsible-panel-view.d.ts.map +0 -1
- package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -222
- package/src/platform-implementation-js/views/compose-button-view.d.ts.map +0 -1
- package/src/platform-implementation-js/views/compose-button-view.js +0 -45
- package/src/platform-implementation-js/views/compose-view.d.ts.map +0 -1
- package/src/platform-implementation-js/views/compose-view.js +0 -312
- package/src/platform-implementation-js/views/keyboard-shortcut-handle.d.ts.map +0 -1
- package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
- package/src/platform-implementation-js/views/nav-item-view.d.ts +0 -24
- package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.d.ts.map +0 -1
- 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.d.ts.map +0 -1
- package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
- package/src/platform-implementation-js/widgets/buttons/dropdown-view.d.ts.map +0 -1
- package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -122
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
/* @flow */
|
|
2
|
+
|
|
3
|
+
import clone from 'lodash/clone';
|
|
4
|
+
import flatten from 'lodash/flatten';
|
|
5
|
+
import find from 'lodash/find';
|
|
6
|
+
import intersection from 'lodash/intersection';
|
|
7
|
+
import includes from 'lodash/includes';
|
|
8
|
+
import BigNumber from 'bignumber.js';
|
|
9
|
+
|
|
10
|
+
import Kefir from 'kefir';
|
|
11
|
+
import * as logger from '../injected-logger';
|
|
12
|
+
import XHRProxyFactory from '../xhr-proxy-factory';
|
|
13
|
+
import querystring, { stringify } from 'querystring';
|
|
14
|
+
import * as threadIdentifier from './thread-identifier';
|
|
15
|
+
import * as messageMetadataHolder from '../message-metadata-holder';
|
|
16
|
+
import * as GmailResponseProcessor from '../../platform-implementation-js/dom-driver/gmail/gmail-response-processor';
|
|
17
|
+
import * as GmailSyncResponseProcessor from '../../platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor';
|
|
18
|
+
import quotedSplit from '../../common/quoted-split';
|
|
19
|
+
import defer from '../../common/defer';
|
|
20
|
+
import modifySuggestions from './modify-suggestions';
|
|
21
|
+
|
|
22
|
+
import {
|
|
23
|
+
parseComposeRequestBody,
|
|
24
|
+
parseComposeResponseBody,
|
|
25
|
+
replaceBodyContentInComposeSendRequestBody,
|
|
26
|
+
} from './sync-compose-processor';
|
|
27
|
+
|
|
28
|
+
import type { XHRProxyConnectionDetails } from '../xhr-proxy-factory';
|
|
29
|
+
|
|
29
30
|
function logErrorExceptEventListeners(err, details) {
|
|
30
31
|
// Don't log Gmail's errors
|
|
31
32
|
if (details !== 'XMLHttpRequest event listener error') {
|
|
@@ -37,62 +38,78 @@ function logErrorExceptEventListeners(err, details) {
|
|
|
37
38
|
}, 1);
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
|
|
42
|
+
export default function setupGmailInterceptor() {
|
|
43
|
+
let jsFrame: ?WindowProxy = null;
|
|
44
|
+
|
|
42
45
|
const js_frame_element = top.document.getElementById('js_frame');
|
|
43
46
|
if (js_frame_element) {
|
|
44
47
|
jsFrame = js_frame_element.contentDocument.defaultView;
|
|
45
48
|
} else {
|
|
46
49
|
logger.eventSdkPassive('noJSFrameElementFound');
|
|
47
50
|
}
|
|
51
|
+
|
|
48
52
|
setupGmailInterceptorOnFrames(window, jsFrame);
|
|
49
53
|
}
|
|
50
54
|
|
|
51
55
|
// Split into a separate step to make it easy for tests to use.
|
|
52
|
-
function setupGmailInterceptorOnFrames(
|
|
56
|
+
export function setupGmailInterceptorOnFrames(
|
|
57
|
+
mainFrame: WindowProxy,
|
|
58
|
+
jsFrame: ?WindowProxy
|
|
59
|
+
) {
|
|
53
60
|
const main_wrappers = [],
|
|
54
61
|
js_frame_wrappers = [];
|
|
62
|
+
|
|
55
63
|
{
|
|
56
64
|
const main_originalXHR = mainFrame.XMLHttpRequest;
|
|
57
|
-
mainFrame.XMLHttpRequest = (
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
mainFrame.XMLHttpRequest = XHRProxyFactory(
|
|
66
|
+
main_originalXHR,
|
|
67
|
+
main_wrappers,
|
|
68
|
+
{
|
|
69
|
+
logError: logErrorExceptEventListeners,
|
|
70
|
+
}
|
|
71
|
+
);
|
|
60
72
|
}
|
|
73
|
+
|
|
61
74
|
if (jsFrame) {
|
|
62
75
|
const js_frame_originalXHR = jsFrame.XMLHttpRequest;
|
|
63
|
-
jsFrame.XMLHttpRequest = (
|
|
64
|
-
|
|
65
|
-
|
|
76
|
+
jsFrame.XMLHttpRequest = XHRProxyFactory(
|
|
77
|
+
js_frame_originalXHR,
|
|
78
|
+
js_frame_wrappers,
|
|
79
|
+
{ logError: logErrorExceptEventListeners }
|
|
80
|
+
);
|
|
66
81
|
}
|
|
82
|
+
|
|
67
83
|
threadIdentifier.setup();
|
|
68
84
|
messageMetadataHolder.setup();
|
|
69
85
|
|
|
70
86
|
//email sending modifier/notifier
|
|
71
87
|
{
|
|
72
|
-
let modifiers = {};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
88
|
+
let modifiers: { [key: string]: Array<string> } = {};
|
|
89
|
+
|
|
90
|
+
Kefir.fromEvents(
|
|
91
|
+
document,
|
|
92
|
+
'inboxSDKregisterComposeRequestModifier'
|
|
93
|
+
).onValue(({ detail }) => {
|
|
77
94
|
const keyId = detail.composeid || detail.draftID;
|
|
78
95
|
if (!modifiers[keyId]) {
|
|
79
96
|
modifiers[keyId] = [];
|
|
80
97
|
}
|
|
98
|
+
|
|
81
99
|
modifiers[keyId].push(detail.modifierId);
|
|
82
100
|
});
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
} = detail;
|
|
91
|
-
modifiers[keyId] = modifiers[keyId].filter(item => item !== modifierId);
|
|
101
|
+
|
|
102
|
+
Kefir.fromEvents(
|
|
103
|
+
document,
|
|
104
|
+
'inboxSDKunregisterComposeRequestModifier'
|
|
105
|
+
).onValue(({ detail }) => {
|
|
106
|
+
const { keyId, modifierId } = detail;
|
|
107
|
+
modifiers[keyId] = modifiers[keyId].filter((item) => item !== modifierId);
|
|
92
108
|
if (modifiers[keyId].length === 0) {
|
|
93
109
|
delete modifiers[keyId];
|
|
94
110
|
}
|
|
95
111
|
});
|
|
112
|
+
|
|
96
113
|
js_frame_wrappers.push({
|
|
97
114
|
isRelevantTo: function (connection) {
|
|
98
115
|
return connection.params.act === 'sm';
|
|
@@ -100,43 +117,50 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
100
117
|
originalSendBodyLogger: function (connection, body) {
|
|
101
118
|
triggerEvent({
|
|
102
119
|
type: 'emailSending',
|
|
103
|
-
body: body
|
|
120
|
+
body: body,
|
|
104
121
|
});
|
|
105
122
|
},
|
|
106
123
|
requestChanger: async function (connection, request) {
|
|
107
|
-
let composeParams =
|
|
124
|
+
let composeParams = querystring.parse(request.body);
|
|
108
125
|
const composeid = composeParams.composeid;
|
|
109
126
|
const composeModifierIds = modifiers[composeParams.composeid];
|
|
127
|
+
|
|
110
128
|
if (!composeModifierIds || composeModifierIds.length === 0) {
|
|
111
129
|
return request;
|
|
112
130
|
}
|
|
131
|
+
|
|
113
132
|
for (let ii = 0; ii < composeModifierIds.length; ii++) {
|
|
114
133
|
const modifierId = composeModifierIds[ii];
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
134
|
+
|
|
135
|
+
const modificationPromise = Kefir.fromEvents(
|
|
136
|
+
document,
|
|
137
|
+
'inboxSDKcomposeRequestModified'
|
|
138
|
+
)
|
|
139
|
+
.filter(
|
|
140
|
+
({ detail }) =>
|
|
141
|
+
detail.composeid === composeid &&
|
|
142
|
+
detail.modifierId === modifierId
|
|
143
|
+
)
|
|
144
|
+
.take(1)
|
|
145
|
+
.map(({ detail }) => detail.composeParams)
|
|
146
|
+
.toPromise(Promise);
|
|
147
|
+
|
|
126
148
|
triggerEvent({
|
|
127
149
|
type: 'inboxSDKmodifyComposeRequest',
|
|
128
150
|
composeid,
|
|
129
151
|
modifierId,
|
|
130
152
|
composeParams: {
|
|
131
153
|
body: composeParams.body,
|
|
132
|
-
isPlainText: composeParams.ishtml !== '1'
|
|
133
|
-
}
|
|
154
|
+
isPlainText: composeParams.ishtml !== '1',
|
|
155
|
+
},
|
|
134
156
|
});
|
|
157
|
+
|
|
135
158
|
let newComposeParams = await modificationPromise;
|
|
136
159
|
composeParams = Object.assign({}, composeParams, newComposeParams);
|
|
137
160
|
}
|
|
161
|
+
|
|
138
162
|
return Object.assign({}, request, {
|
|
139
|
-
body: stringifyComposeParams(composeParams)
|
|
163
|
+
body: stringifyComposeParams(composeParams),
|
|
140
164
|
});
|
|
141
165
|
},
|
|
142
166
|
afterListeners: function (connection) {
|
|
@@ -144,15 +168,19 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
144
168
|
triggerEvent({
|
|
145
169
|
type: 'emailSent',
|
|
146
170
|
responseText: connection.originalResponseText,
|
|
147
|
-
originalSendBody: connection.originalSendBody
|
|
171
|
+
originalSendBody: connection.originalSendBody,
|
|
148
172
|
});
|
|
173
|
+
|
|
149
174
|
if (connection.originalSendBody) {
|
|
150
|
-
const composeParams =
|
|
175
|
+
const composeParams = querystring.parse(
|
|
176
|
+
connection.originalSendBody
|
|
177
|
+
);
|
|
151
178
|
delete modifiers[composeParams.composeid];
|
|
152
179
|
}
|
|
153
180
|
}
|
|
154
|
-
}
|
|
181
|
+
},
|
|
155
182
|
});
|
|
183
|
+
|
|
156
184
|
js_frame_wrappers.push({
|
|
157
185
|
isRelevantTo: function (connection) {
|
|
158
186
|
return connection.params.act === 'sd';
|
|
@@ -160,7 +188,7 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
160
188
|
originalSendBodyLogger: function (connection, body) {
|
|
161
189
|
triggerEvent({
|
|
162
190
|
type: 'emailDraftSaveSending',
|
|
163
|
-
body: body
|
|
191
|
+
body: body,
|
|
164
192
|
});
|
|
165
193
|
},
|
|
166
194
|
afterListeners: function (connection) {
|
|
@@ -173,30 +201,43 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
173
201
|
method: connection.method,
|
|
174
202
|
url: connection.url,
|
|
175
203
|
params: connection.params,
|
|
176
|
-
responseType: connection.responseType
|
|
177
|
-
}
|
|
204
|
+
responseType: connection.responseType,
|
|
205
|
+
},
|
|
178
206
|
});
|
|
179
207
|
}
|
|
180
|
-
}
|
|
208
|
+
},
|
|
181
209
|
});
|
|
210
|
+
|
|
182
211
|
{
|
|
183
212
|
// Sync API-based compose sending intercept
|
|
184
|
-
const currentSendConnectionIDs
|
|
185
|
-
|
|
186
|
-
|
|
213
|
+
const currentSendConnectionIDs: WeakMap<
|
|
214
|
+
XHRProxyConnectionDetails,
|
|
215
|
+
string
|
|
216
|
+
> = new WeakMap();
|
|
217
|
+
const currentDraftSaveConnectionIDs: WeakMap<
|
|
218
|
+
XHRProxyConnectionDetails,
|
|
219
|
+
string
|
|
220
|
+
> = new WeakMap();
|
|
221
|
+
const currentFirstDraftSaveConnectionIDs: WeakMap<
|
|
222
|
+
XHRProxyConnectionDetails,
|
|
223
|
+
string
|
|
224
|
+
> = new WeakMap();
|
|
187
225
|
main_wrappers.push({
|
|
188
226
|
isRelevantTo(connection) {
|
|
189
227
|
return /sync(?:\/u\/\d+)?\/i\/s/.test(connection.url);
|
|
190
228
|
},
|
|
191
229
|
originalSendBodyLogger(connection) {
|
|
192
230
|
if (connection.originalSendBody) {
|
|
193
|
-
const composeRequestDetails =
|
|
231
|
+
const composeRequestDetails = parseComposeRequestBody(
|
|
232
|
+
connection.originalSendBody
|
|
233
|
+
);
|
|
234
|
+
|
|
194
235
|
if (!composeRequestDetails) {
|
|
195
236
|
return;
|
|
196
237
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
238
|
+
|
|
239
|
+
const { draftID } = composeRequestDetails;
|
|
240
|
+
|
|
200
241
|
switch (composeRequestDetails.type) {
|
|
201
242
|
case 'FIRST_DRAFT_SAVE':
|
|
202
243
|
currentFirstDraftSaveConnectionIDs.set(connection, draftID);
|
|
@@ -206,76 +247,94 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
206
247
|
break;
|
|
207
248
|
case 'SEND':
|
|
208
249
|
currentSendConnectionIDs.set(connection, draftID);
|
|
209
|
-
triggerEvent({
|
|
210
|
-
type: 'emailSending',
|
|
211
|
-
draftID
|
|
212
|
-
});
|
|
250
|
+
triggerEvent({ type: 'emailSending', draftID });
|
|
213
251
|
break;
|
|
214
252
|
}
|
|
215
253
|
}
|
|
216
254
|
},
|
|
217
255
|
requestChanger: async function (connection, request) {
|
|
218
|
-
const composeRequestDetails =
|
|
219
|
-
if (!composeRequestDetails || composeRequestDetails.type !== 'SEND')
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
} = composeRequestDetails;
|
|
256
|
+
const composeRequestDetails = parseComposeRequestBody(request.body);
|
|
257
|
+
if (!composeRequestDetails || composeRequestDetails.type !== 'SEND')
|
|
258
|
+
return request;
|
|
259
|
+
|
|
260
|
+
const { draftID, body, type } = composeRequestDetails;
|
|
261
|
+
|
|
225
262
|
const composeModifierIds = modifiers[draftID];
|
|
226
|
-
if (!composeModifierIds || composeModifierIds.length === 0)
|
|
263
|
+
if (!composeModifierIds || composeModifierIds.length === 0)
|
|
264
|
+
return request;
|
|
265
|
+
|
|
227
266
|
let newEmailBody = composeRequestDetails.body;
|
|
228
267
|
for (let ii = 0; ii < composeModifierIds.length; ii++) {
|
|
229
268
|
const modifierId = composeModifierIds[ii];
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
269
|
+
|
|
270
|
+
const modificationPromise = Kefir.fromEvents(
|
|
271
|
+
document,
|
|
272
|
+
'inboxSDKcomposeRequestModified'
|
|
273
|
+
)
|
|
274
|
+
.filter(
|
|
275
|
+
({ detail }) =>
|
|
276
|
+
detail.draftID === draftID && detail.modifierId === modifierId
|
|
277
|
+
)
|
|
278
|
+
.take(1)
|
|
279
|
+
.map(({ detail }) => detail.composeParams)
|
|
280
|
+
.toPromise(Promise);
|
|
281
|
+
|
|
241
282
|
triggerEvent({
|
|
242
283
|
type: 'inboxSDKmodifyComposeRequest',
|
|
243
284
|
draftID,
|
|
244
285
|
modifierId,
|
|
245
286
|
composeParams: {
|
|
246
287
|
body: newEmailBody,
|
|
247
|
-
isPlainText: false
|
|
248
|
-
}
|
|
288
|
+
isPlainText: false,
|
|
289
|
+
},
|
|
249
290
|
});
|
|
291
|
+
|
|
250
292
|
const newComposeParams = await modificationPromise;
|
|
251
293
|
newEmailBody = newComposeParams.body;
|
|
252
294
|
}
|
|
295
|
+
|
|
253
296
|
return Object.assign({}, request, {
|
|
254
|
-
body:
|
|
297
|
+
body: replaceBodyContentInComposeSendRequestBody(
|
|
298
|
+
request.body,
|
|
299
|
+
newEmailBody
|
|
300
|
+
),
|
|
255
301
|
});
|
|
256
302
|
},
|
|
257
303
|
afterListeners(connection) {
|
|
258
|
-
if (
|
|
304
|
+
if (
|
|
305
|
+
currentSendConnectionIDs.has(connection) ||
|
|
306
|
+
currentDraftSaveConnectionIDs.has(connection) ||
|
|
307
|
+
currentFirstDraftSaveConnectionIDs.has(connection)
|
|
308
|
+
) {
|
|
259
309
|
const sendFailed = () => {
|
|
260
|
-
triggerEvent({
|
|
261
|
-
type: 'emailSendFailed',
|
|
262
|
-
draftID
|
|
263
|
-
});
|
|
310
|
+
triggerEvent({ type: 'emailSendFailed', draftID });
|
|
264
311
|
currentSendConnectionIDs.delete(connection);
|
|
265
312
|
};
|
|
266
|
-
|
|
313
|
+
|
|
314
|
+
const draftID =
|
|
315
|
+
currentSendConnectionIDs.get(connection) ||
|
|
316
|
+
currentDraftSaveConnectionIDs.get(connection) ||
|
|
317
|
+
currentFirstDraftSaveConnectionIDs.get(connection);
|
|
318
|
+
|
|
267
319
|
if (connection.status !== 200 || !connection.originalResponseText) {
|
|
268
320
|
sendFailed();
|
|
269
321
|
return;
|
|
270
322
|
}
|
|
323
|
+
|
|
271
324
|
try {
|
|
272
|
-
const responsesParsed =
|
|
325
|
+
const responsesParsed = parseComposeResponseBody(
|
|
326
|
+
connection.originalResponseText
|
|
327
|
+
);
|
|
328
|
+
|
|
273
329
|
for (const responseParsed of responsesParsed) {
|
|
274
330
|
// If we're sending a draft, we only care about the response related to the draft we're sending.
|
|
275
331
|
if (draftID && !responseParsed.messageId.endsWith(draftID)) {
|
|
276
332
|
continue;
|
|
277
333
|
}
|
|
278
|
-
if (
|
|
334
|
+
if (
|
|
335
|
+
responseParsed.type === 'FIRST_DRAFT_SAVE' ||
|
|
336
|
+
responseParsed.type === 'DRAFT_SAVE'
|
|
337
|
+
) {
|
|
279
338
|
triggerEvent({
|
|
280
339
|
draftID: draftID,
|
|
281
340
|
type: 'emailDraftReceived',
|
|
@@ -283,11 +342,13 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
283
342
|
threadID: responseParsed.threadId,
|
|
284
343
|
messageID: responseParsed.messageId,
|
|
285
344
|
oldMessageID: responseParsed.oldMessageId,
|
|
286
|
-
oldThreadID: responseParsed.oldThreadId
|
|
345
|
+
oldThreadID: responseParsed.oldThreadId,
|
|
287
346
|
});
|
|
347
|
+
|
|
288
348
|
currentSendConnectionIDs.delete(connection);
|
|
289
349
|
currentDraftSaveConnectionIDs.delete(connection);
|
|
290
350
|
currentFirstDraftSaveConnectionIDs.delete(connection);
|
|
351
|
+
|
|
291
352
|
return;
|
|
292
353
|
} else if (responseParsed.type === 'SEND') {
|
|
293
354
|
triggerEvent({
|
|
@@ -297,28 +358,44 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
297
358
|
threadID: responseParsed.threadId,
|
|
298
359
|
messageID: responseParsed.messageId,
|
|
299
360
|
oldMessageID: responseParsed.oldMessageId,
|
|
300
|
-
oldThreadID: responseParsed.oldThreadId
|
|
361
|
+
oldThreadID: responseParsed.oldThreadId,
|
|
301
362
|
});
|
|
363
|
+
|
|
302
364
|
currentSendConnectionIDs.delete(connection);
|
|
303
365
|
currentDraftSaveConnectionIDs.delete(connection);
|
|
304
366
|
currentFirstDraftSaveConnectionIDs.delete(connection);
|
|
367
|
+
|
|
305
368
|
return;
|
|
306
369
|
}
|
|
307
370
|
}
|
|
308
371
|
} catch (err) {
|
|
309
|
-
logger.eventSdkPassive(
|
|
310
|
-
|
|
311
|
-
|
|
372
|
+
logger.eventSdkPassive(
|
|
373
|
+
'connection.requestResponseParsingFailed',
|
|
374
|
+
{
|
|
375
|
+
responseParseError: err,
|
|
376
|
+
}
|
|
377
|
+
);
|
|
312
378
|
}
|
|
313
|
-
|
|
379
|
+
|
|
380
|
+
const originalResponse = JSON.parse(
|
|
381
|
+
connection.originalResponseText
|
|
382
|
+
);
|
|
314
383
|
|
|
315
384
|
// TODO this function silently fails way too easily. Need to add better logging for it!
|
|
316
385
|
|
|
317
386
|
if (currentFirstDraftSaveConnectionIDs.has(connection)) {
|
|
318
|
-
const wrapper =
|
|
387
|
+
const wrapper =
|
|
388
|
+
originalResponse[2] &&
|
|
389
|
+
originalResponse[2][6] &&
|
|
390
|
+
originalResponse[2][6][0] &&
|
|
391
|
+
originalResponse[2][6][0][1];
|
|
392
|
+
|
|
319
393
|
if (wrapper) {
|
|
320
|
-
const threadUpdate =
|
|
321
|
-
|
|
394
|
+
const threadUpdate =
|
|
395
|
+
wrapper[3] && wrapper[3][7] && wrapper[3][7][1];
|
|
396
|
+
|
|
397
|
+
const messageUpdate =
|
|
398
|
+
threadUpdate && threadUpdate[5] && threadUpdate[5][0];
|
|
322
399
|
if (threadUpdate && messageUpdate) {
|
|
323
400
|
triggerEvent({
|
|
324
401
|
draftID: draftID,
|
|
@@ -327,7 +404,7 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
327
404
|
threadID: threadUpdate[4].split('|')[0],
|
|
328
405
|
messageID: messageUpdate[1],
|
|
329
406
|
oldMessageID: messageUpdate[56],
|
|
330
|
-
oldThreadID: threadUpdate[20]
|
|
407
|
+
oldThreadID: threadUpdate[20],
|
|
331
408
|
});
|
|
332
409
|
} else {
|
|
333
410
|
logger.error(new Error('Could not parse draft save'));
|
|
@@ -335,49 +412,63 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
335
412
|
} else {
|
|
336
413
|
// pre-2019-05-29 handling
|
|
337
414
|
logger.eventSdkPassive('old compose draft id handling hit');
|
|
338
|
-
const oldWrapper =
|
|
415
|
+
const oldWrapper =
|
|
416
|
+
originalResponse[2] &&
|
|
417
|
+
originalResponse[2][6] &&
|
|
418
|
+
originalResponse[2][6][1] &&
|
|
419
|
+
originalResponse[2][6][1][1];
|
|
420
|
+
|
|
339
421
|
if (oldWrapper) {
|
|
340
|
-
const saveUpdate =
|
|
422
|
+
const saveUpdate =
|
|
423
|
+
oldWrapper[3] && oldWrapper[3][1] && oldWrapper[3][1][1];
|
|
424
|
+
|
|
341
425
|
if (saveUpdate) {
|
|
342
426
|
triggerEvent({
|
|
343
427
|
draftID: draftID,
|
|
344
428
|
type: 'emailDraftReceived',
|
|
345
429
|
rfcID: saveUpdate[14],
|
|
346
430
|
messageID: saveUpdate[1],
|
|
347
|
-
oldMessageID: saveUpdate[48]
|
|
348
|
-
|
|
431
|
+
oldMessageID: saveUpdate[48]
|
|
432
|
+
? new BigNumber(saveUpdate[48]).toString(16)
|
|
433
|
+
: saveUpdate[56],
|
|
434
|
+
syncThreadID: oldWrapper[1],
|
|
349
435
|
});
|
|
350
436
|
}
|
|
351
437
|
}
|
|
352
438
|
}
|
|
353
439
|
} else {
|
|
354
|
-
|
|
355
|
-
const updateList = (_originalResponse$ = originalResponse[2]) === null || _originalResponse$ === void 0 ? void 0 : _originalResponse$[6];
|
|
440
|
+
const updateList = originalResponse[2]?.[6];
|
|
356
441
|
if (!updateList) {
|
|
357
442
|
sendFailed();
|
|
358
443
|
return;
|
|
359
444
|
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
445
|
+
|
|
446
|
+
const sendUpdateMatch = updateList.find(
|
|
447
|
+
(update) =>
|
|
448
|
+
update[1]?.[3]?.[7]?.[1]?.[5]?.[0]?.[14] &&
|
|
449
|
+
update[1][3][7][1][5].find((message) =>
|
|
450
|
+
includes(message[1], draftID)
|
|
451
|
+
)
|
|
452
|
+
);
|
|
453
|
+
|
|
364
454
|
if (!sendUpdateMatch) {
|
|
365
455
|
if (currentSendConnectionIDs.has(connection)) {
|
|
366
|
-
const minimalSendUpdates = updateList.filter(
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
456
|
+
const minimalSendUpdates = updateList.filter(
|
|
457
|
+
(update) => update[1]?.[3]?.[5]?.[3]
|
|
458
|
+
);
|
|
459
|
+
|
|
370
460
|
if (minimalSendUpdates.length > 0) {
|
|
371
|
-
|
|
372
|
-
|
|
461
|
+
const threadID = minimalSendUpdates[0][1][1]
|
|
462
|
+
? minimalSendUpdates[0][1][1].replace(/\|.*$/, '')
|
|
463
|
+
: undefined;
|
|
373
464
|
triggerEvent({
|
|
374
465
|
draftID,
|
|
375
466
|
type: 'emailSent',
|
|
376
467
|
threadID,
|
|
377
468
|
messageID:
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
469
|
+
//new compose
|
|
470
|
+
minimalSendUpdates[0][1][3]?.[5]?.[5]?.[0] || //replies
|
|
471
|
+
minimalSendUpdates[0][1][3][5][3]?.[0],
|
|
381
472
|
});
|
|
382
473
|
} else {
|
|
383
474
|
sendFailed();
|
|
@@ -385,49 +476,72 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
385
476
|
} else {
|
|
386
477
|
sendFailed();
|
|
387
478
|
}
|
|
479
|
+
|
|
388
480
|
return;
|
|
389
481
|
}
|
|
390
|
-
|
|
391
|
-
const
|
|
482
|
+
|
|
483
|
+
const sendUpdateWrapper = sendUpdateMatch[1]?.[3]?.[7]?.[1];
|
|
484
|
+
|
|
485
|
+
const sendUpdate = sendUpdateWrapper[5].find((message) =>
|
|
486
|
+
message[1].includes(draftID)
|
|
487
|
+
);
|
|
488
|
+
|
|
392
489
|
if (!sendUpdate) {
|
|
393
490
|
sendFailed();
|
|
394
491
|
return;
|
|
395
492
|
}
|
|
396
|
-
|
|
493
|
+
|
|
494
|
+
const isEmailSentResponse =
|
|
495
|
+
currentSendConnectionIDs.has(connection);
|
|
496
|
+
|
|
397
497
|
if (!Array.isArray(sendUpdate[11])) {
|
|
398
498
|
logger.error(new Error('sendUpdate[11] was not an array'));
|
|
399
499
|
} else {
|
|
400
500
|
if (isEmailSentResponse) {
|
|
401
501
|
if (sendUpdate[11].indexOf('^r') >= 0) {
|
|
402
|
-
logger.error(
|
|
502
|
+
logger.error(
|
|
503
|
+
new Error('sendUpdate[11] unexpectedly contained "^r"')
|
|
504
|
+
);
|
|
403
505
|
}
|
|
404
506
|
}
|
|
405
507
|
}
|
|
508
|
+
|
|
406
509
|
if (isEmailSentResponse) {
|
|
407
510
|
if (sendUpdate[22] !== undefined && sendUpdate[22] !== 3) {
|
|
408
|
-
logger.error(
|
|
409
|
-
|
|
410
|
-
|
|
511
|
+
logger.error(
|
|
512
|
+
new Error('sendUpdate[22] was not expected value'),
|
|
513
|
+
{ value: sendUpdate[22] }
|
|
514
|
+
);
|
|
411
515
|
}
|
|
412
516
|
}
|
|
413
|
-
|
|
517
|
+
|
|
518
|
+
const threadID = sendUpdateWrapper[4]
|
|
519
|
+
? sendUpdateWrapper[4].replace(/\|.*$/, '')
|
|
520
|
+
: undefined;
|
|
521
|
+
|
|
414
522
|
triggerEvent({
|
|
415
523
|
draftID: draftID,
|
|
416
524
|
type: isEmailSentResponse ? 'emailSent' : 'emailDraftReceived',
|
|
417
525
|
rfcID: sendUpdate[14],
|
|
418
526
|
messageID: sendUpdate[1],
|
|
419
|
-
oldMessageID: sendUpdate[48]
|
|
527
|
+
oldMessageID: sendUpdate[48]
|
|
528
|
+
? new BigNumber(sendUpdate[48]).toString(16)
|
|
529
|
+
: sendUpdate[56],
|
|
420
530
|
threadID,
|
|
421
531
|
// It seems Gmail is A/B testing including gmailThreadID in response[20] and not including
|
|
422
532
|
// the encoded version of it in response[18], so pull it from [20] if [18] is not set.
|
|
423
|
-
oldThreadID:
|
|
533
|
+
oldThreadID:
|
|
534
|
+
sendUpdateWrapper[18] != null
|
|
535
|
+
? new BigNumber(sendUpdateWrapper[18]).toString(16)
|
|
536
|
+
: sendUpdateWrapper[20],
|
|
424
537
|
});
|
|
425
538
|
}
|
|
539
|
+
|
|
426
540
|
currentSendConnectionIDs.delete(connection);
|
|
427
541
|
currentDraftSaveConnectionIDs.delete(connection);
|
|
428
542
|
currentFirstDraftSaveConnectionIDs.delete(connection);
|
|
429
543
|
}
|
|
430
|
-
}
|
|
544
|
+
},
|
|
431
545
|
});
|
|
432
546
|
}
|
|
433
547
|
}
|
|
@@ -448,9 +562,10 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
448
562
|
if (connection.status === 200) {
|
|
449
563
|
const search = connection.params.search;
|
|
450
564
|
const responseText = connection.originalResponseText;
|
|
565
|
+
|
|
451
566
|
threadIdentifier.processThreadListResponse(responseText);
|
|
452
567
|
}
|
|
453
|
-
}
|
|
568
|
+
},
|
|
454
569
|
});
|
|
455
570
|
}
|
|
456
571
|
|
|
@@ -462,12 +577,15 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
462
577
|
isRelevantTo(connection) {
|
|
463
578
|
return connection.params.view === 'cv';
|
|
464
579
|
},
|
|
580
|
+
|
|
465
581
|
originalResponseTextLogger(connection) {
|
|
466
582
|
if (connection.status === 200) {
|
|
467
|
-
const groupedMessages = GmailResponseProcessor.extractMessages(
|
|
583
|
+
const groupedMessages = GmailResponseProcessor.extractMessages(
|
|
584
|
+
connection.originalResponseText
|
|
585
|
+
);
|
|
468
586
|
messageMetadataHolder.add(groupedMessages);
|
|
469
587
|
}
|
|
470
|
-
}
|
|
588
|
+
},
|
|
471
589
|
});
|
|
472
590
|
}
|
|
473
591
|
|
|
@@ -478,18 +596,26 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
478
596
|
isRelevantTo: function (connection) {
|
|
479
597
|
return /sync(?:\/u\/\d+)?\/i\/bv/.test(connection.url);
|
|
480
598
|
},
|
|
599
|
+
|
|
481
600
|
originalResponseTextLogger(connection) {
|
|
482
601
|
if (connection.status === 200) {
|
|
483
|
-
const threads =
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
602
|
+
const threads =
|
|
603
|
+
GmailSyncResponseProcessor.extractThreadsFromSearchResponse(
|
|
604
|
+
connection.originalResponseText
|
|
605
|
+
);
|
|
606
|
+
messageMetadataHolder.add(
|
|
607
|
+
threads.map((syncThread) => ({
|
|
608
|
+
threadID: syncThread.syncThreadID,
|
|
609
|
+
messages: syncThread.extraMetaData.syncMessageData.map(
|
|
610
|
+
(syncMessage) => ({
|
|
611
|
+
date: syncMessage.date,
|
|
612
|
+
recipients: syncMessage.recipients,
|
|
613
|
+
})
|
|
614
|
+
),
|
|
489
615
|
}))
|
|
490
|
-
|
|
616
|
+
);
|
|
491
617
|
}
|
|
492
|
-
}
|
|
618
|
+
},
|
|
493
619
|
});
|
|
494
620
|
|
|
495
621
|
// thread response
|
|
@@ -497,18 +623,26 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
497
623
|
isRelevantTo: function (connection) {
|
|
498
624
|
return /sync(?:\/u\/\d+)?\/i\/fd/.test(connection.url);
|
|
499
625
|
},
|
|
626
|
+
|
|
500
627
|
originalResponseTextLogger(connection) {
|
|
501
628
|
if (connection.status === 200) {
|
|
502
|
-
const threads =
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
629
|
+
const threads =
|
|
630
|
+
GmailSyncResponseProcessor.extractThreadsFromThreadResponse(
|
|
631
|
+
connection.originalResponseText
|
|
632
|
+
);
|
|
633
|
+
messageMetadataHolder.add(
|
|
634
|
+
threads.map((syncThread) => ({
|
|
635
|
+
threadID: syncThread.syncThreadID,
|
|
636
|
+
messages: syncThread.extraMetaData.syncMessageData.map(
|
|
637
|
+
(syncMessage) => ({
|
|
638
|
+
date: syncMessage.date,
|
|
639
|
+
recipients: syncMessage.recipients,
|
|
640
|
+
})
|
|
641
|
+
),
|
|
508
642
|
}))
|
|
509
|
-
|
|
643
|
+
);
|
|
510
644
|
}
|
|
511
|
-
}
|
|
645
|
+
},
|
|
512
646
|
});
|
|
513
647
|
}
|
|
514
648
|
}
|
|
@@ -524,42 +658,55 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
524
658
|
let currentQuery;
|
|
525
659
|
let suggestionModifications;
|
|
526
660
|
let currentQueryDefer;
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
661
|
+
|
|
662
|
+
document.addEventListener(
|
|
663
|
+
'inboxSDKregisterSuggestionsModifier',
|
|
664
|
+
function ({ detail }: any) {
|
|
665
|
+
providers[detail.providerID] = {
|
|
666
|
+
position: Object.keys(providers).length,
|
|
667
|
+
};
|
|
668
|
+
}
|
|
669
|
+
);
|
|
670
|
+
|
|
671
|
+
document.addEventListener(
|
|
672
|
+
'inboxSDKprovideSuggestions',
|
|
673
|
+
function ({ detail }: any) {
|
|
674
|
+
if (detail.query === currentQuery) {
|
|
675
|
+
const provider = providers[detail.providerID];
|
|
676
|
+
if (!provider) {
|
|
677
|
+
throw new Error('provider does not exist for providerID');
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
if (suggestionModifications == null) {
|
|
681
|
+
throw new Error('tried to modified a null suggestionModifications');
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
suggestionModifications[provider.position] = detail.suggestions;
|
|
685
|
+
if (
|
|
686
|
+
suggestionModifications.filter(Boolean).length ===
|
|
687
|
+
Object.keys(providers).length
|
|
688
|
+
) {
|
|
689
|
+
if (currentQueryDefer == null) {
|
|
690
|
+
throw new Error('tried to resolve a null currentQueryDefer');
|
|
691
|
+
}
|
|
692
|
+
currentQueryDefer.resolve(flatten(suggestionModifications));
|
|
693
|
+
currentQueryDefer = currentQuery = suggestionModifications = null;
|
|
551
694
|
}
|
|
552
|
-
currentQueryDefer.resolve((0, _flatten.default)(suggestionModifications));
|
|
553
|
-
currentQueryDefer = currentQuery = suggestionModifications = null;
|
|
554
695
|
}
|
|
555
696
|
}
|
|
556
|
-
|
|
697
|
+
);
|
|
698
|
+
|
|
557
699
|
main_wrappers.push({
|
|
558
700
|
isRelevantTo(connection) {
|
|
559
|
-
return
|
|
701
|
+
return (
|
|
702
|
+
Object.keys(providers).length > 0 &&
|
|
703
|
+
!!connection.url.match(/^\/cloudsearch\/request\?/) &&
|
|
704
|
+
connection.params.client == 'gmail' &&
|
|
705
|
+
connection.params.gs_ri == 'gmail'
|
|
706
|
+
);
|
|
560
707
|
},
|
|
561
708
|
originalSendBodyLogger(connection, body) {
|
|
562
|
-
const parsedBody =
|
|
709
|
+
const parsedBody = querystring.parse(body);
|
|
563
710
|
if (!parsedBody.request) {
|
|
564
711
|
return;
|
|
565
712
|
}
|
|
@@ -569,24 +716,25 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
569
716
|
}
|
|
570
717
|
currentQuery = query;
|
|
571
718
|
if (currentQueryDefer) currentQueryDefer.resolve();
|
|
572
|
-
currentQueryDefer = connection._defer = (
|
|
719
|
+
currentQueryDefer = (connection: any)._defer = defer();
|
|
573
720
|
suggestionModifications = [];
|
|
574
721
|
triggerEvent({
|
|
575
722
|
type: 'suggestionsRequest',
|
|
576
|
-
query: currentQuery
|
|
723
|
+
query: currentQuery,
|
|
577
724
|
});
|
|
578
725
|
},
|
|
579
726
|
async responseTextChanger(connection, responseText) {
|
|
580
|
-
if (connection._defer && connection.status === 200) {
|
|
581
|
-
const modifications = await connection._defer.promise;
|
|
727
|
+
if ((connection: any)._defer && connection.status === 200) {
|
|
728
|
+
const modifications = await (connection: any)._defer.promise;
|
|
582
729
|
if (modifications) {
|
|
583
|
-
return (
|
|
730
|
+
return modifySuggestions(responseText, modifications);
|
|
584
731
|
}
|
|
585
732
|
}
|
|
586
733
|
return responseText;
|
|
587
|
-
}
|
|
734
|
+
},
|
|
588
735
|
});
|
|
589
736
|
}
|
|
737
|
+
|
|
590
738
|
{
|
|
591
739
|
// TODO: simplify this code
|
|
592
740
|
// the triggerEvent call should happen in the requestChanger callback
|
|
@@ -599,27 +747,49 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
599
747
|
// content script that contains a new query to substitute in.
|
|
600
748
|
const customSearchTerms = [];
|
|
601
749
|
let queryReplacement;
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
queryReplacement.newQuery.resolve(event.detail.newQuery);
|
|
750
|
+
|
|
751
|
+
document.addEventListener(
|
|
752
|
+
'inboxSDKcreateCustomSearchTerm',
|
|
753
|
+
function (event: any) {
|
|
754
|
+
customSearchTerms.push(event.detail.term);
|
|
608
755
|
}
|
|
609
|
-
|
|
756
|
+
);
|
|
757
|
+
|
|
758
|
+
document.addEventListener(
|
|
759
|
+
'inboxSDKsearchReplacementReady',
|
|
760
|
+
function (event: any) {
|
|
761
|
+
if (queryReplacement.query === event.detail.query) {
|
|
762
|
+
queryReplacement.newQuery.resolve(event.detail.newQuery);
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
);
|
|
610
766
|
|
|
611
767
|
// classic Gmail API intercept
|
|
612
768
|
js_frame_wrappers.push({
|
|
613
769
|
isRelevantTo: function (connection) {
|
|
614
770
|
let customSearchTerm;
|
|
615
771
|
const params = connection.params;
|
|
616
|
-
if (
|
|
617
|
-
|
|
772
|
+
if (
|
|
773
|
+
connection.method === 'POST' &&
|
|
774
|
+
params.search &&
|
|
775
|
+
params.view === 'tl' &&
|
|
776
|
+
connection.url.match(/^\?/) &&
|
|
777
|
+
params.q &&
|
|
778
|
+
(customSearchTerm = intersection(
|
|
779
|
+
customSearchTerms,
|
|
780
|
+
quotedSplit(params.q)
|
|
781
|
+
)[0])
|
|
782
|
+
) {
|
|
783
|
+
if (
|
|
784
|
+
queryReplacement &&
|
|
785
|
+
queryReplacement.query === params.q &&
|
|
786
|
+
queryReplacement.start != params.start
|
|
787
|
+
) {
|
|
618
788
|
// If this is the same query that was made last, but just for a
|
|
619
789
|
// different page, then re-use the replacement query we got last time.
|
|
620
790
|
// Don't wait on the extension to come up with it again (and risk it
|
|
621
791
|
// giving an inconsistent answer between pages).
|
|
622
|
-
connection._queryReplacement = queryReplacement;
|
|
792
|
+
(connection: any)._queryReplacement = queryReplacement;
|
|
623
793
|
// Mark the old queryReplacement with this page now so we can tell on
|
|
624
794
|
// a later request whether the page was changed or the list refresh
|
|
625
795
|
// button was hit.
|
|
@@ -630,16 +800,17 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
630
800
|
// to after it's replaced in a moment.
|
|
631
801
|
queryReplacement.newQuery.resolve(queryReplacement.query);
|
|
632
802
|
}
|
|
633
|
-
queryReplacement = connection._queryReplacement = {
|
|
803
|
+
queryReplacement = (connection: any)._queryReplacement = {
|
|
634
804
|
term: customSearchTerm,
|
|
635
805
|
query: params.q,
|
|
636
806
|
start: params.start,
|
|
637
|
-
newQuery: (
|
|
807
|
+
newQuery: defer(),
|
|
638
808
|
};
|
|
809
|
+
|
|
639
810
|
triggerEvent({
|
|
640
811
|
type: 'searchQueryForReplacement',
|
|
641
812
|
term: customSearchTerm,
|
|
642
|
-
query: params.q
|
|
813
|
+
query: params.q,
|
|
643
814
|
});
|
|
644
815
|
}
|
|
645
816
|
return true;
|
|
@@ -647,30 +818,38 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
647
818
|
return false;
|
|
648
819
|
},
|
|
649
820
|
requestChanger: function (connection, request) {
|
|
650
|
-
return connection._queryReplacement.newQuery.promise.then(
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
821
|
+
return (connection: any)._queryReplacement.newQuery.promise.then(
|
|
822
|
+
function (newQuery) {
|
|
823
|
+
let newParams = clone(connection.params);
|
|
824
|
+
newParams.q = newQuery;
|
|
825
|
+
return {
|
|
826
|
+
method: request.method,
|
|
827
|
+
url: '?' + stringify(newParams),
|
|
828
|
+
body: request.body,
|
|
829
|
+
};
|
|
830
|
+
}
|
|
831
|
+
);
|
|
832
|
+
},
|
|
660
833
|
});
|
|
661
834
|
|
|
662
835
|
// newer, sync API based request intercept
|
|
663
836
|
main_wrappers.push({
|
|
664
837
|
isRelevantTo: function (connection) {
|
|
665
|
-
return
|
|
838
|
+
return (
|
|
839
|
+
connection.method === 'POST' &&
|
|
840
|
+
/sync(?:\/u\/\d+)?\/i\/bv/.test(connection.url)
|
|
841
|
+
);
|
|
666
842
|
},
|
|
667
843
|
requestChanger: function (connection, request) {
|
|
668
844
|
let customSearchTerm;
|
|
669
845
|
const body = JSON.parse(request.body);
|
|
846
|
+
|
|
670
847
|
let newFormat = false;
|
|
671
848
|
let payload, searchString, pageOffset;
|
|
849
|
+
|
|
672
850
|
if (Array.isArray(body)) {
|
|
673
851
|
newFormat = true;
|
|
852
|
+
|
|
674
853
|
payload = body[0];
|
|
675
854
|
searchString = payload[3];
|
|
676
855
|
pageOffset = payload[9];
|
|
@@ -679,14 +858,26 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
679
858
|
searchString = payload[4];
|
|
680
859
|
pageOffset = payload[10];
|
|
681
860
|
}
|
|
682
|
-
|
|
861
|
+
|
|
862
|
+
const isSyncAPISearchWithCustomTerm =
|
|
863
|
+
payload[newFormat ? 0 : 1] === 79 &&
|
|
864
|
+
typeof searchString === 'string' &&
|
|
865
|
+
(customSearchTerm = intersection(
|
|
866
|
+
customSearchTerms,
|
|
867
|
+
quotedSplit(searchString)
|
|
868
|
+
)[0]);
|
|
683
869
|
if (!isSyncAPISearchWithCustomTerm) return Promise.resolve(request);
|
|
684
|
-
|
|
870
|
+
|
|
871
|
+
if (
|
|
872
|
+
queryReplacement &&
|
|
873
|
+
queryReplacement.query === searchString &&
|
|
874
|
+
queryReplacement.start != pageOffset
|
|
875
|
+
) {
|
|
685
876
|
// If this is the same query that was made last, but just for a
|
|
686
877
|
// different page, then re-use the replacement query we got last time.
|
|
687
878
|
// Don't wait on the extension to come up with it again (and risk it
|
|
688
879
|
// giving an inconsistent answer between pages).
|
|
689
|
-
connection._queryReplacement = queryReplacement;
|
|
880
|
+
(connection: any)._queryReplacement = queryReplacement;
|
|
690
881
|
// Mark the old queryReplacement with this page now so we can tell on
|
|
691
882
|
// a later request whether the page was changed or the list refresh
|
|
692
883
|
// button was hit.
|
|
@@ -697,33 +888,38 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
697
888
|
// to after it's replaced in a moment.
|
|
698
889
|
queryReplacement.newQuery.resolve(queryReplacement.query);
|
|
699
890
|
}
|
|
700
|
-
queryReplacement = connection._queryReplacement = {
|
|
891
|
+
queryReplacement = (connection: any)._queryReplacement = {
|
|
701
892
|
term: customSearchTerm,
|
|
702
893
|
query: searchString,
|
|
703
894
|
start: pageOffset,
|
|
704
|
-
newQuery: (
|
|
895
|
+
newQuery: defer(),
|
|
705
896
|
};
|
|
897
|
+
|
|
706
898
|
triggerEvent({
|
|
707
899
|
type: 'searchQueryForReplacement',
|
|
708
900
|
term: customSearchTerm,
|
|
709
|
-
query: searchString
|
|
901
|
+
query: searchString,
|
|
710
902
|
});
|
|
711
903
|
}
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
904
|
+
|
|
905
|
+
return (connection: any)._queryReplacement.newQuery.promise.then(
|
|
906
|
+
function (newQuery) {
|
|
907
|
+
if (newFormat) {
|
|
908
|
+
body[0][3] = newQuery;
|
|
909
|
+
} else {
|
|
910
|
+
body[1][4] = newQuery;
|
|
911
|
+
}
|
|
912
|
+
return {
|
|
913
|
+
method: request.method,
|
|
914
|
+
url: request.url,
|
|
915
|
+
body: JSON.stringify(body),
|
|
916
|
+
};
|
|
717
917
|
}
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
url: request.url,
|
|
721
|
-
body: JSON.stringify(body)
|
|
722
|
-
};
|
|
723
|
-
});
|
|
724
|
-
}
|
|
918
|
+
);
|
|
919
|
+
},
|
|
725
920
|
});
|
|
726
921
|
}
|
|
922
|
+
|
|
727
923
|
{
|
|
728
924
|
// Search results replacer.
|
|
729
925
|
// The content script tells us a search query to watch for. Whenever we see
|
|
@@ -732,80 +928,96 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
732
928
|
// the content script that contains new results to substitute in.
|
|
733
929
|
const customSearchQueries = [];
|
|
734
930
|
let customListJob;
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
931
|
+
|
|
932
|
+
document.addEventListener(
|
|
933
|
+
'inboxSDKcustomListRegisterQuery',
|
|
934
|
+
(event: any) => {
|
|
935
|
+
customSearchQueries.push(event.detail.query);
|
|
936
|
+
}
|
|
937
|
+
);
|
|
938
|
+
|
|
939
|
+
document.addEventListener('inboxSDKcustomListNewQuery', (event: any) => {
|
|
940
|
+
if (
|
|
941
|
+
customListJob.query === event.detail.query &&
|
|
942
|
+
customListJob.start === event.detail.start
|
|
943
|
+
) {
|
|
944
|
+
const { newQuery, newStart } = event.detail;
|
|
945
|
+
|
|
744
946
|
customListJob.newRequestParams.resolve({
|
|
745
947
|
query: newQuery,
|
|
746
|
-
start: newStart
|
|
948
|
+
start: newStart,
|
|
747
949
|
});
|
|
748
950
|
}
|
|
749
951
|
});
|
|
750
|
-
|
|
952
|
+
|
|
953
|
+
document.addEventListener('inboxSDKcustomListResults', (event: any) => {
|
|
751
954
|
if (customListJob.query === event.detail.query) {
|
|
752
955
|
customListJob.newResults.resolve(event.detail.newResults);
|
|
753
956
|
}
|
|
754
957
|
});
|
|
958
|
+
|
|
755
959
|
js_frame_wrappers.push({
|
|
756
960
|
isRelevantTo: function (connection) {
|
|
757
961
|
let customSearchQuery;
|
|
758
962
|
const params = connection.params;
|
|
759
|
-
if (
|
|
963
|
+
if (
|
|
964
|
+
connection.method === 'POST' &&
|
|
965
|
+
params.search &&
|
|
966
|
+
params.view === 'tl' &&
|
|
967
|
+
connection.url.match(/^\?/) &&
|
|
968
|
+
params.q &&
|
|
969
|
+
!params.act &&
|
|
970
|
+
(customSearchQuery = find(customSearchQueries, (x) => x === params.q))
|
|
971
|
+
) {
|
|
760
972
|
if (customListJob) {
|
|
761
973
|
// Resolve the old one with something because no one else is going
|
|
762
974
|
// to after it's replaced in a moment.
|
|
763
975
|
customListJob.newRequestParams.resolve({
|
|
764
976
|
query: customListJob.query,
|
|
765
|
-
start: customListJob.start
|
|
977
|
+
start: customListJob.start,
|
|
766
978
|
});
|
|
767
979
|
customListJob.newResults.resolve(null);
|
|
768
980
|
}
|
|
769
|
-
customListJob = connection._customListJob = {
|
|
981
|
+
customListJob = (connection: any)._customListJob = {
|
|
770
982
|
query: params.q,
|
|
771
983
|
start: +params.start,
|
|
772
|
-
newRequestParams: (
|
|
773
|
-
newResults: (
|
|
984
|
+
newRequestParams: defer(),
|
|
985
|
+
newResults: defer(),
|
|
774
986
|
};
|
|
775
987
|
triggerEvent({
|
|
776
988
|
type: 'searchForReplacement',
|
|
777
989
|
query: customListJob.query,
|
|
778
|
-
start: customListJob.start
|
|
990
|
+
start: customListJob.start,
|
|
779
991
|
});
|
|
780
992
|
return true;
|
|
781
993
|
}
|
|
782
994
|
return false;
|
|
783
995
|
},
|
|
784
996
|
requestChanger: function (connection, request) {
|
|
785
|
-
return connection._customListJob.newRequestParams.promise.then(
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
};
|
|
798
|
-
});
|
|
997
|
+
return (connection: any)._customListJob.newRequestParams.promise.then(
|
|
998
|
+
({ query, start }) => {
|
|
999
|
+
const newParams = clone(connection.params);
|
|
1000
|
+
newParams.q = query;
|
|
1001
|
+
newParams.start = start;
|
|
1002
|
+
return {
|
|
1003
|
+
method: request.method,
|
|
1004
|
+
url: '?' + stringify(newParams),
|
|
1005
|
+
body: request.body,
|
|
1006
|
+
};
|
|
1007
|
+
}
|
|
1008
|
+
);
|
|
799
1009
|
},
|
|
800
1010
|
responseTextChanger: function (connection, response) {
|
|
801
1011
|
triggerEvent({
|
|
802
1012
|
type: 'searchResultsResponse',
|
|
803
|
-
query: connection._customListJob.query,
|
|
804
|
-
start: connection._customListJob.start,
|
|
805
|
-
response
|
|
1013
|
+
query: (connection: any)._customListJob.query,
|
|
1014
|
+
start: (connection: any)._customListJob.start,
|
|
1015
|
+
response,
|
|
806
1016
|
});
|
|
807
|
-
return connection._customListJob.newResults.promise.then(
|
|
808
|
-
|
|
1017
|
+
return (connection: any)._customListJob.newResults.promise.then(
|
|
1018
|
+
(newResults) => (newResults === null ? response : newResults)
|
|
1019
|
+
);
|
|
1020
|
+
},
|
|
809
1021
|
});
|
|
810
1022
|
|
|
811
1023
|
// Sync API-based custom thread list interception
|
|
@@ -817,7 +1029,7 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
817
1029
|
// to after it's replaced in a moment.
|
|
818
1030
|
customListJob.newRequestParams.resolve({
|
|
819
1031
|
query: customListJob.query,
|
|
820
|
-
start: customListJob.start
|
|
1032
|
+
start: customListJob.start,
|
|
821
1033
|
});
|
|
822
1034
|
customListJob.newResults.resolve(null);
|
|
823
1035
|
}
|
|
@@ -828,113 +1040,139 @@ function setupGmailInterceptorOnFrames(mainFrame, jsFrame) {
|
|
|
828
1040
|
requestChanger: async function (connection, request) {
|
|
829
1041
|
if (request.body) {
|
|
830
1042
|
const parsedBody = JSON.parse(request.body);
|
|
1043
|
+
|
|
831
1044
|
const newFormat = Array.isArray(parsedBody);
|
|
832
1045
|
|
|
833
1046
|
// we are a search!
|
|
834
|
-
const searchQuery =
|
|
835
|
-
|
|
836
|
-
|
|
1047
|
+
const searchQuery =
|
|
1048
|
+
(newFormat
|
|
1049
|
+
? parsedBody && parsedBody[0] && parsedBody[0][3]
|
|
1050
|
+
: parsedBody && parsedBody[1] && parsedBody[1][4]) || '';
|
|
1051
|
+
|
|
1052
|
+
if (find(customSearchQueries, (x) => x === searchQuery)) {
|
|
1053
|
+
customListJob = (connection: any)._customListJob = {
|
|
837
1054
|
query: searchQuery,
|
|
838
1055
|
start: newFormat ? parsedBody[0][9] : parsedBody[1][10],
|
|
839
|
-
newRequestParams: (
|
|
840
|
-
newResults: (
|
|
1056
|
+
newRequestParams: defer(),
|
|
1057
|
+
newResults: defer(),
|
|
841
1058
|
};
|
|
842
1059
|
triggerEvent({
|
|
843
1060
|
type: 'searchForReplacement',
|
|
844
1061
|
query: customListJob.query,
|
|
845
|
-
start: customListJob.start
|
|
1062
|
+
start: customListJob.start,
|
|
846
1063
|
});
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
1064
|
+
|
|
1065
|
+
return (connection: any)._customListJob.newRequestParams.promise.then(
|
|
1066
|
+
({ query, start }) => {
|
|
1067
|
+
if (newFormat) {
|
|
1068
|
+
parsedBody[0][3] = query;
|
|
1069
|
+
parsedBody[0][9] = start;
|
|
1070
|
+
} else {
|
|
1071
|
+
parsedBody[1][4] = query;
|
|
1072
|
+
parsedBody[1][10] = start;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
return {
|
|
1076
|
+
method: request.method,
|
|
1077
|
+
url: request.url,
|
|
1078
|
+
body: JSON.stringify(parsedBody),
|
|
1079
|
+
};
|
|
858
1080
|
}
|
|
859
|
-
|
|
860
|
-
method: request.method,
|
|
861
|
-
url: request.url,
|
|
862
|
-
body: JSON.stringify(parsedBody)
|
|
863
|
-
};
|
|
864
|
-
});
|
|
1081
|
+
);
|
|
865
1082
|
}
|
|
866
1083
|
}
|
|
1084
|
+
|
|
867
1085
|
return request;
|
|
868
1086
|
},
|
|
869
1087
|
responseTextChanger: async function (connection, response) {
|
|
870
|
-
if (connection._customListJob) {
|
|
1088
|
+
if ((connection: any)._customListJob) {
|
|
871
1089
|
triggerEvent({
|
|
872
1090
|
type: 'searchResultsResponse',
|
|
873
|
-
query: connection._customListJob.query,
|
|
874
|
-
start: connection._customListJob.start,
|
|
875
|
-
response
|
|
1091
|
+
query: (connection: any)._customListJob.query,
|
|
1092
|
+
start: (connection: any)._customListJob.start,
|
|
1093
|
+
response,
|
|
876
1094
|
});
|
|
877
|
-
|
|
1095
|
+
|
|
1096
|
+
return (connection: any)._customListJob.newResults.promise.then(
|
|
1097
|
+
(newResults) => (newResults === null ? response : newResults)
|
|
1098
|
+
);
|
|
878
1099
|
} else {
|
|
879
1100
|
return response;
|
|
880
1101
|
}
|
|
881
|
-
}
|
|
1102
|
+
},
|
|
882
1103
|
});
|
|
883
1104
|
}
|
|
884
1105
|
|
|
885
1106
|
// sync token savers
|
|
886
1107
|
{
|
|
887
|
-
const saveBTAIHeader = header => {
|
|
888
|
-
document.head.setAttribute('data-inboxsdk-btai-header', header);
|
|
889
|
-
triggerEvent({
|
|
890
|
-
type: 'btaiHeaderReceived'
|
|
891
|
-
});
|
|
1108
|
+
const saveBTAIHeader = (header) => {
|
|
1109
|
+
(document.head: any).setAttribute('data-inboxsdk-btai-header', header);
|
|
1110
|
+
triggerEvent({ type: 'btaiHeaderReceived' });
|
|
892
1111
|
};
|
|
893
1112
|
main_wrappers.push({
|
|
894
1113
|
isRelevantTo(connection) {
|
|
895
|
-
return
|
|
1114
|
+
return (
|
|
1115
|
+
/sync(?:\/u\/\d+)?\//.test(connection.url) &&
|
|
1116
|
+
!(document.head: any).hasAttribute('data-inboxsdk-btai-header')
|
|
1117
|
+
);
|
|
896
1118
|
},
|
|
897
1119
|
originalSendBodyLogger(connection) {
|
|
898
1120
|
if (connection.headers['X-Gmail-BTAI']) {
|
|
899
1121
|
saveBTAIHeader(connection.headers['X-Gmail-BTAI']);
|
|
900
1122
|
}
|
|
901
|
-
}
|
|
1123
|
+
},
|
|
902
1124
|
});
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
});
|
|
1125
|
+
|
|
1126
|
+
const saveXsrfTokenHeader = (header) => {
|
|
1127
|
+
(document.head: any).setAttribute('data-inboxsdk-xsrf-token', header);
|
|
1128
|
+
triggerEvent({ type: 'xsrfTokenHeaderReceived' });
|
|
908
1129
|
};
|
|
909
1130
|
main_wrappers.push({
|
|
910
1131
|
isRelevantTo(connection) {
|
|
911
|
-
return
|
|
1132
|
+
return (
|
|
1133
|
+
/sync(?:\/u\/\d+)?\//.test(connection.url) &&
|
|
1134
|
+
!(document.head: any).hasAttribute('data-inboxsdk-xsrf-token')
|
|
1135
|
+
);
|
|
912
1136
|
},
|
|
913
1137
|
originalSendBodyLogger(connection) {
|
|
914
1138
|
if (connection.headers['X-Framework-Xsrf-Token']) {
|
|
915
1139
|
saveXsrfTokenHeader(connection.headers['X-Framework-Xsrf-Token']);
|
|
916
1140
|
}
|
|
917
|
-
}
|
|
1141
|
+
},
|
|
918
1142
|
});
|
|
919
1143
|
}
|
|
920
1144
|
}
|
|
1145
|
+
|
|
921
1146
|
function triggerEvent(detail) {
|
|
922
|
-
document.dispatchEvent(
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
1147
|
+
document.dispatchEvent(
|
|
1148
|
+
new CustomEvent('inboxSDKajaxIntercept', {
|
|
1149
|
+
bubbles: true,
|
|
1150
|
+
cancelable: false,
|
|
1151
|
+
detail,
|
|
1152
|
+
})
|
|
1153
|
+
);
|
|
927
1154
|
}
|
|
1155
|
+
|
|
928
1156
|
function stringifyComposeParams(inComposeParams) {
|
|
929
|
-
const composeParams = (
|
|
930
|
-
const string = `=${stringifyComposeRecipientParam(
|
|
1157
|
+
const composeParams = clone(inComposeParams);
|
|
1158
|
+
const string = `=${stringifyComposeRecipientParam(
|
|
1159
|
+
composeParams.to,
|
|
1160
|
+
'to'
|
|
1161
|
+
)}&=${stringifyComposeRecipientParam(
|
|
1162
|
+
composeParams.cc,
|
|
1163
|
+
'cc'
|
|
1164
|
+
)}&=${stringifyComposeRecipientParam(composeParams.bcc, 'bcc')}`;
|
|
1165
|
+
|
|
931
1166
|
delete composeParams.to;
|
|
932
1167
|
delete composeParams.bcc;
|
|
933
1168
|
delete composeParams.cc;
|
|
934
|
-
|
|
1169
|
+
|
|
1170
|
+
return string + '&' + querystring.stringify(composeParams);
|
|
935
1171
|
}
|
|
1172
|
+
|
|
936
1173
|
function stringifyComposeRecipientParam(value, paramType) {
|
|
937
1174
|
let string = '';
|
|
1175
|
+
|
|
938
1176
|
if (Array.isArray(value)) {
|
|
939
1177
|
for (let ii = 0; ii < value.length; ii++) {
|
|
940
1178
|
string += `&${paramType}=${encodeURIComponent(value[ii])}`;
|
|
@@ -942,5 +1180,6 @@ function stringifyComposeRecipientParam(value, paramType) {
|
|
|
942
1180
|
} else {
|
|
943
1181
|
string += `&${paramType}=${encodeURIComponent(value)}`;
|
|
944
1182
|
}
|
|
1183
|
+
|
|
945
1184
|
return string;
|
|
946
|
-
}
|
|
1185
|
+
}
|