@inboxsdk/core 1.2.4 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/inboxsdk.js +4474 -463
- package/inboxsdk.js.map +1 -1
- package/package.json +1 -1
- package/pageWorld.js +1 -1
- package/pageWorld.js.map +1 -1
- package/src/common/load-script.d.ts +0 -6
- package/src/common/load-script.d.ts.map +1 -1
- package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -1
- package/src/inboxsdk.d.ts +29 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
- package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
- package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
- package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
- package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
- package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
- package/src/build/exec.js +0 -26
- package/src/build/spawn.js +0 -17
- package/src/common/ajax.js +0 -90
- package/src/common/cachebust-url.js +0 -10
- package/src/common/censorHTMLstring.js +0 -37
- package/src/common/censorHTMLtree.js +0 -28
- package/src/common/censorJSONTree.js +0 -15
- package/src/common/connectivity-test.js +0 -21
- package/src/common/defer.js +0 -11
- package/src/common/find-parent.js +0 -10
- package/src/common/get-extension-id.js +0 -7
- package/src/common/get-or-fail.js +0 -8
- package/src/common/get-session-id.js +0 -14
- package/src/common/get-stack-trace.js +0 -6
- package/src/common/html-to-text.js +0 -7
- package/src/common/isElementVisible.js +0 -6
- package/src/common/load-script.js +0 -128
- package/src/common/log-error.js +0 -185
- package/src/common/quoted-split.js +0 -18
- package/src/common/rate-limit-queuer.js +0 -57
- package/src/common/rate-limit.js +0 -14
- package/src/common/version.js +0 -8
- package/src/inboxsdk-js/header.js +0 -19
- package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
- package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
- package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
- package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
- package/src/inboxsdk-js/inboxsdk.js +0 -23
- package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
- package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -31
- package/src/injected-js/gmail/constants.js +0 -2
- package/src/injected-js/gmail/modify-suggestions.js +0 -106
- package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
- package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
- package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
- package/src/injected-js/gmail/sync-compose-processor.js +0 -55
- package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
- package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
- package/src/injected-js/gmail/thread-identifier/index.js +0 -133
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
- package/src/injected-js/injected-logger.js +0 -50
- package/src/injected-js/main.js +0 -49
- package/src/injected-js/message-metadata-holder.js +0 -103
- package/src/injected-js/setup-data-exposer.js +0 -135
- package/src/injected-js/setup-error-silencer.js +0 -15
- package/src/injected-js/setup-event-reemitter.js +0 -47
- package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
- package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
- package/src/injected-js/setupPushStateListener.js +0 -14
- package/src/injected-js/xhr-helper.js +0 -43
- package/src/injected-js/xhr-proxy-factory.js +0 -537
- package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
- package/src/platform-implementation-js/constants/router.js +0 -60
- package/src/platform-implementation-js/constants/toolbars.js +0 -5
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
- package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
- package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
- package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
- package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
- package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
- package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -328
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
- package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
- package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
- package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
- package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
- package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
- package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
- package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
- package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
- package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
- package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
- package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
- package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
- package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
- package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
- package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
- package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
- package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
- package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
- package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
- package/src/platform-implementation-js/lib/Membrane.js +0 -22
- package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
- package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
- package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
- package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
- package/src/platform-implementation-js/lib/delay-asap.js +0 -10
- package/src/platform-implementation-js/lib/delay-idle.js +0 -16
- package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
- package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
- package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
- package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
- package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
- package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
- package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
- package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
- package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
- package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
- package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
- package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
- package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
- package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
- package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
- package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
- package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
- package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
- package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
- package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
- package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
- package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
- package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
- package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
- package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
- package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
- package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
- package/src/platform-implementation-js/lib/handler-registry.js +0 -67
- package/src/platform-implementation-js/lib/idMap.js +0 -40
- package/src/platform-implementation-js/lib/imageRequest.js +0 -8
- package/src/platform-implementation-js/lib/incrementName.js +0 -7
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -8
- package/src/platform-implementation-js/lib/inject-script.js +0 -33
- package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
- package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
- package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
- package/src/platform-implementation-js/lib/isNotNil.js +0 -5
- package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
- package/src/platform-implementation-js/lib/logger.js +0 -439
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
- package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
- package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
- package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
- package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
- package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
- package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
- package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
- package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
- package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
- package/src/platform-implementation-js/lib/wait-for.js +0 -38
- package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
- package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
- package/src/platform-implementation-js/main.js +0 -42
- package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
- package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
- package/src/platform-implementation-js/namespaces/compose.js +0 -59
- package/src/platform-implementation-js/namespaces/conversations.js +0 -83
- package/src/platform-implementation-js/namespaces/global.js +0 -30
- package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
- package/src/platform-implementation-js/namespaces/lists.js +0 -40
- package/src/platform-implementation-js/namespaces/modal.js +0 -43
- package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
- package/src/platform-implementation-js/namespaces/router.js +0 -139
- package/src/platform-implementation-js/namespaces/search.js +0 -29
- package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
- package/src/platform-implementation-js/namespaces/user.js +0 -57
- package/src/platform-implementation-js/namespaces/widgets.js +0 -73
- package/src/platform-implementation-js/platform-implementation.js +0 -178
- package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
- package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
- package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
- package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
- package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
- package/src/platform-implementation-js/views/compose-button-view.js +0 -45
- package/src/platform-implementation-js/views/compose-view.js +0 -310
- package/src/platform-implementation-js/views/content-panel-view.js +0 -36
- package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
- package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
- package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
- package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
- package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
- package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
- package/src/platform-implementation-js/views/nav-item-view.js +0 -130
- package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
- package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
- package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
- package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
- package/src/platform-implementation-js/views/section-view.js +0 -60
- package/src/platform-implementation-js/views/thread-row-view.js +0 -90
- package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
- package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
- package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
- package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
- package/src/platform-implementation-js/widgets/modal-view.js +0 -108
- package/src/platform-implementation-js/widgets/mole-view.js +0 -38
- package/src/platform-implementation-js/widgets/top-message-bar-view.js +0 -15
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import find from 'lodash/find';
|
|
2
|
-
import * as GmailResponseProcessor from '../../../platform-implementation-js/dom-driver/gmail/gmail-response-processor';
|
|
3
|
-
import { parse } from 'querystring';
|
|
4
|
-
import * as logger from '../../injected-logger';
|
|
5
|
-
import * as threadRowParser from './thread-row-parser';
|
|
6
|
-
import clickAndGetPopupUrl from './click-and-get-popup-url';
|
|
7
|
-
import findParent from '../../../common/find-parent';
|
|
8
|
-
import { CustomDomEvent } from '../../../platform-implementation-js/lib/dom/custom-events';
|
|
9
|
-
export function setup() {
|
|
10
|
-
try {
|
|
11
|
-
processPreloadedThreads();
|
|
12
|
-
}
|
|
13
|
-
catch (err) {
|
|
14
|
-
logger.error(err, 'Failed to process preloaded thread identifiers');
|
|
15
|
-
}
|
|
16
|
-
document.addEventListener(CustomDomEvent.tellMeThisThreadIdByDatabase, function (event) {
|
|
17
|
-
try {
|
|
18
|
-
if (!(event.target instanceof HTMLElement)) {
|
|
19
|
-
throw new Error('event.target is not an HTMLElement');
|
|
20
|
-
}
|
|
21
|
-
const threadId = getGmailThreadIdForThreadRowByDatabase(event.target);
|
|
22
|
-
if (threadId) {
|
|
23
|
-
event.target.setAttribute('data-inboxsdk-threadid', threadId);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
logger.error(err, 'Error in inboxSDKtellMeThisThreadIdByDatabase');
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
document.addEventListener(CustomDomEvent.tellMeThisThreadIdByClick, function (event) {
|
|
31
|
-
try {
|
|
32
|
-
if (!(event.target instanceof HTMLElement)) {
|
|
33
|
-
throw new Error('event.target is not an HTMLElement');
|
|
34
|
-
}
|
|
35
|
-
const threadId = getGmailThreadIdForThreadRowByClick(event.target);
|
|
36
|
-
if (threadId) {
|
|
37
|
-
event.target.setAttribute('data-inboxsdk-threadid', threadId);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
logger.error(err, 'Error in inboxSDKtellMeThisThreadIdByClick');
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
export function processThreadListResponse(threadListResponse) {
|
|
46
|
-
processThreads(GmailResponseProcessor.extractThreads(threadListResponse));
|
|
47
|
-
}
|
|
48
|
-
function processThreads(threads) {
|
|
49
|
-
threads.forEach(storeThreadMetadata);
|
|
50
|
-
}
|
|
51
|
-
const AMBIGUOUS = {
|
|
52
|
-
name: 'AMBIGUOUS',
|
|
53
|
-
};
|
|
54
|
-
const threadIdsByKey = new Map();
|
|
55
|
-
function storeThreadMetadata(threadMetadata) {
|
|
56
|
-
var key = threadMetadataKey(threadMetadata);
|
|
57
|
-
if (threadIdsByKey.has(key)) {
|
|
58
|
-
if (threadIdsByKey.get(key) !== threadMetadata.gmailThreadId) {
|
|
59
|
-
threadIdsByKey.set(key, AMBIGUOUS);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
threadIdsByKey.set(key, threadMetadata.gmailThreadId);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function threadMetadataKey(threadRowMetadata) {
|
|
67
|
-
return (threadRowMetadata.subject.trim() +
|
|
68
|
-
':' +
|
|
69
|
-
threadRowMetadata.timeString.trim() +
|
|
70
|
-
':' +
|
|
71
|
-
threadRowMetadata.peopleHtml.trim());
|
|
72
|
-
}
|
|
73
|
-
function processPreloadedThreads() {
|
|
74
|
-
const preloadScript = find(document.querySelectorAll('script:not([src])'), (script) => script.text && script.text.slice(0, 500).indexOf('var VIEW_DATA=[[') > -1);
|
|
75
|
-
if (!preloadScript) {
|
|
76
|
-
// preloadScript is not available in gmail v2, so let's stop logging an error
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
const firstBracket = preloadScript.text.indexOf('[');
|
|
81
|
-
const lastBracket = preloadScript.text.lastIndexOf(']');
|
|
82
|
-
const viewDataString = preloadScript.text.slice(firstBracket, lastBracket + 1);
|
|
83
|
-
processThreads(GmailResponseProcessor.extractThreadsFromDeserialized([
|
|
84
|
-
GmailResponseProcessor.deserializeArray(viewDataString),
|
|
85
|
-
]));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
function getThreadIdFromUrl(url) {
|
|
89
|
-
var tid = parse(url).th;
|
|
90
|
-
if (!tid) {
|
|
91
|
-
// drafts in sync world can have weird urls that kind of
|
|
92
|
-
// look like old style urls, and get handled properly here
|
|
93
|
-
var urlHashMatch = url.match(/#(.*)/);
|
|
94
|
-
if (urlHashMatch) {
|
|
95
|
-
// drafts have the hash in them without the th=
|
|
96
|
-
url = decodeURIComponent(decodeURIComponent(urlHashMatch[1]));
|
|
97
|
-
tid = parse(url).th;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
// if we're in sync world and it's a
|
|
101
|
-
// draft then a hash can come through in the beginning
|
|
102
|
-
return tid.replace('#', '');
|
|
103
|
-
}
|
|
104
|
-
function getGmailThreadIdForThreadRowByDatabase(threadRow) {
|
|
105
|
-
const domRowMetadata = threadRowParser.extractMetadataFromThreadRow(threadRow);
|
|
106
|
-
if (domRowMetadata === threadRowParser.ThreadRowAd) {
|
|
107
|
-
// TODO do we want to do anything here?
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const key = threadMetadataKey(domRowMetadata);
|
|
111
|
-
const value = threadIdsByKey.get(key);
|
|
112
|
-
if (typeof value === 'string') {
|
|
113
|
-
return value;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
function getGmailThreadIdForThreadRowByClick(threadRow) {
|
|
117
|
-
// Simulate a ctrl-click on the thread row to get the thread id, then
|
|
118
|
-
// simulate a ctrl-click on the previously selected thread row (or the
|
|
119
|
-
// first thread row) to put the cursor back where it was.
|
|
120
|
-
threadRowParser.extractMetadataFromThreadRow(threadRow);
|
|
121
|
-
const parent = findParent(threadRow, (el) => el.nodeName === 'DIV' && el.getAttribute('role') === 'main');
|
|
122
|
-
if (!parent) {
|
|
123
|
-
throw new Error("Can't operate on disconnected thread row");
|
|
124
|
-
}
|
|
125
|
-
const currentRowSelection = parent.querySelector('td.PE') ||
|
|
126
|
-
parent.querySelector('tr');
|
|
127
|
-
const url = clickAndGetPopupUrl(threadRow);
|
|
128
|
-
const threadId = url && getThreadIdFromUrl(url);
|
|
129
|
-
if (currentRowSelection) {
|
|
130
|
-
clickAndGetPopupUrl(currentRowSelection);
|
|
131
|
-
}
|
|
132
|
-
return threadId;
|
|
133
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import intersection from 'lodash/intersection';
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import * as logger from '../../injected-logger';
|
|
4
|
-
import { cleanupPeopleLine } from '../../../platform-implementation-js/dom-driver/gmail/gmail-response-processor';
|
|
5
|
-
/**
|
|
6
|
-
* Ads in the Promotions tab aren't included with other thread row data.
|
|
7
|
-
*/
|
|
8
|
-
export const ThreadRowAd = Symbol(`ThreadRowAd`);
|
|
9
|
-
export function extractMetadataFromThreadRow(threadRow) {
|
|
10
|
-
var timeSpan, subjectSpan, peopleDiv;
|
|
11
|
-
assert(threadRow.hasAttribute('id'), 'check element is main thread row');
|
|
12
|
-
var errors = [];
|
|
13
|
-
var threadRowIsVertical = intersection(Array.from(threadRow.classList), ['zA', 'apv']).length === 2;
|
|
14
|
-
const isThreadRowAd = threadRow.querySelector('.am0');
|
|
15
|
-
if (isThreadRowAd) {
|
|
16
|
-
return ThreadRowAd;
|
|
17
|
-
}
|
|
18
|
-
else if (threadRowIsVertical) {
|
|
19
|
-
var threadRow2 = threadRow.nextElementSibling;
|
|
20
|
-
if (!threadRow2) {
|
|
21
|
-
errors.push('failed to find threadRow2');
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
var threadRow3 = threadRow2.nextElementSibling;
|
|
25
|
-
if (!threadRow3 || !threadRow3.classList.contains('apw')) {
|
|
26
|
-
threadRow3 = null;
|
|
27
|
-
}
|
|
28
|
-
timeSpan = threadRow.querySelector('td.apt > div.apm > span[title]');
|
|
29
|
-
subjectSpan = threadRow2.querySelector('td div.xS div.xT div.y6 > span');
|
|
30
|
-
peopleDiv = threadRow.querySelector('td.apy > div.yW, td.apx > div.yW');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
timeSpan = threadRow.querySelector('td.xW > span[title]');
|
|
35
|
-
var subjectAreaDiv = threadRow.querySelector('td.a4W div[role=link] div.y6');
|
|
36
|
-
if (subjectAreaDiv && subjectAreaDiv.children.length >= 1) {
|
|
37
|
-
subjectSpan = subjectAreaDiv.children[0]; // body snippet is not always present.
|
|
38
|
-
//var bodySnippetSpan = subjectAreaDiv.children[1];
|
|
39
|
-
}
|
|
40
|
-
peopleDiv = threadRow.querySelector('td.yX > div.yW');
|
|
41
|
-
}
|
|
42
|
-
if (!timeSpan) {
|
|
43
|
-
errors.push('failed to find timeSpan');
|
|
44
|
-
}
|
|
45
|
-
if (!subjectSpan) {
|
|
46
|
-
errors.push('failed to find subjectSpan');
|
|
47
|
-
}
|
|
48
|
-
if (!peopleDiv) {
|
|
49
|
-
errors.push('failed to find peopleDiv');
|
|
50
|
-
}
|
|
51
|
-
if (errors.length) {
|
|
52
|
-
logger.error(new Error('Errors in thread row parsing'), {
|
|
53
|
-
errors,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
timeString: timeSpan ? timeSpan.getAttribute('title') || '' : '',
|
|
58
|
-
subject: subjectSpan ? subjectSpan.textContent : '',
|
|
59
|
-
peopleHtml: peopleDiv ? cleanupPeopleLine(peopleDiv.innerHTML) : '',
|
|
60
|
-
};
|
|
61
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
export function error(err, details) {
|
|
2
|
-
if (!err) {
|
|
3
|
-
err = new Error('No error given');
|
|
4
|
-
}
|
|
5
|
-
console.error('Error in injected script', err, details);
|
|
6
|
-
try {
|
|
7
|
-
JSON.stringify(details);
|
|
8
|
-
}
|
|
9
|
-
catch (e) {
|
|
10
|
-
details = '<failed to jsonify>';
|
|
11
|
-
}
|
|
12
|
-
const errorProperties = {};
|
|
13
|
-
for (const name in err) {
|
|
14
|
-
if (Object.prototype.hasOwnProperty.call(err, name)) {
|
|
15
|
-
try {
|
|
16
|
-
const value = err[name];
|
|
17
|
-
JSON.stringify(value);
|
|
18
|
-
errorProperties[name] = value;
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
// ignore
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (Object.keys(errorProperties).length > 0) {
|
|
26
|
-
details = { errorProperties, details };
|
|
27
|
-
}
|
|
28
|
-
document.dispatchEvent(new CustomEvent('inboxSDKinjectedError', {
|
|
29
|
-
bubbles: false,
|
|
30
|
-
cancelable: false,
|
|
31
|
-
detail: {
|
|
32
|
-
message: err && err.message,
|
|
33
|
-
stack: err && err.stack,
|
|
34
|
-
details,
|
|
35
|
-
},
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
|
-
export function eventSdkPassive(name, details, sensitive) {
|
|
39
|
-
try {
|
|
40
|
-
JSON.stringify(details);
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
details = '<failed to jsonify>';
|
|
44
|
-
}
|
|
45
|
-
document.dispatchEvent(new CustomEvent('inboxSDKinjectedEventSdkPassive', {
|
|
46
|
-
bubbles: false,
|
|
47
|
-
cancelable: false,
|
|
48
|
-
detail: { name, details, sensitive },
|
|
49
|
-
}));
|
|
50
|
-
}
|
package/src/injected-js/main.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
if (!global.__InboxSDKInjected) {
|
|
3
|
-
global.__InboxSDKInjected = true;
|
|
4
|
-
const logger = require('./injected-logger');
|
|
5
|
-
let oldDefine;
|
|
6
|
-
try {
|
|
7
|
-
if (typeof define !== 'undefined' && define && define.amd) {
|
|
8
|
-
// work around amd compatibility issue
|
|
9
|
-
// https://groups.google.com/forum/#!msg/inboxsdk/U_bq82Exmwc/I3iIinxxCAAJ
|
|
10
|
-
oldDefine = define;
|
|
11
|
-
define = null;
|
|
12
|
-
}
|
|
13
|
-
const extCorbWorkaroundPageWorld = require('ext-corb-workaround/dist/src/pageWorld');
|
|
14
|
-
const xhrHelper = require('./xhr-helper').default;
|
|
15
|
-
const setupDataExposer = require('./setup-data-exposer').default;
|
|
16
|
-
const setupEventReemitter = require('./setup-event-reemitter').default;
|
|
17
|
-
const setupErrorSilencer = require('./setup-error-silencer').default;
|
|
18
|
-
const setupCustomViewEventAssassin = require('./setupCustomViewEventAssassin').default;
|
|
19
|
-
const setupPushStateListener = require('./setupPushStateListener').default;
|
|
20
|
-
const setupInboxCustomViewLinkFixer = require('./setupInboxCustomViewLinkFixer').default;
|
|
21
|
-
const gmailInterceptor = require('./gmail/setup-gmail-interceptor').default;
|
|
22
|
-
const setupGmonkeyHandler = require('./gmail/setup-gmonkey-handler').default;
|
|
23
|
-
const pageOrigin = (process.env.NODE_ENV === 'test' && global.__test_origin) ||
|
|
24
|
-
document.location.origin;
|
|
25
|
-
if (pageOrigin === 'https://mail.google.com') {
|
|
26
|
-
gmailInterceptor();
|
|
27
|
-
setupGmonkeyHandler();
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
throw new Error('Should not happen');
|
|
31
|
-
}
|
|
32
|
-
extCorbWorkaroundPageWorld.init();
|
|
33
|
-
xhrHelper();
|
|
34
|
-
setupDataExposer();
|
|
35
|
-
setupEventReemitter();
|
|
36
|
-
setupErrorSilencer();
|
|
37
|
-
setupCustomViewEventAssassin();
|
|
38
|
-
setupPushStateListener();
|
|
39
|
-
setupInboxCustomViewLinkFixer();
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
logger.error(err);
|
|
43
|
-
}
|
|
44
|
-
finally {
|
|
45
|
-
if (oldDefine) {
|
|
46
|
-
define = oldDefine;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import startsWith from 'lodash/startsWith';
|
|
2
|
-
import { extractMessages } from '../platform-implementation-js/dom-driver/gmail/gmail-response-processor';
|
|
3
|
-
import { getThreadFromSyncThreadIdUsingHeaders } from '../platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId';
|
|
4
|
-
import * as logger from './injected-logger';
|
|
5
|
-
import requestGmailThread from '../platform-implementation-js/driver-common/requestGmailThread';
|
|
6
|
-
const threadIdToMessages = new Map();
|
|
7
|
-
export function setup() {
|
|
8
|
-
document.addEventListener('inboxSDKtellMeThisMessageDate', function (event) {
|
|
9
|
-
exposeMetadata(event, 'data-inboxsdk-sortdate', (m) => m.date);
|
|
10
|
-
});
|
|
11
|
-
document.addEventListener('inboxSDKtellMeThisMessageRecipients', function (event) {
|
|
12
|
-
exposeMetadata(event, 'data-inboxsdk-recipients', (m) => {
|
|
13
|
-
if (m.recipients)
|
|
14
|
-
return m.recipients;
|
|
15
|
-
else
|
|
16
|
-
return null;
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
function exposeMetadata(event, attribute, processor) {
|
|
21
|
-
const { target, detail: { threadId, ikValue, btaiHeader, xsrfToken }, } = event;
|
|
22
|
-
(async () => {
|
|
23
|
-
const messageIndex = Array.from(target.parentElement.children)
|
|
24
|
-
.filter((el) => !el.classList.contains('inboxsdk__custom_message_view'))
|
|
25
|
-
.indexOf(target);
|
|
26
|
-
if (messageIndex < 0) {
|
|
27
|
-
throw new Error('Should not happen');
|
|
28
|
-
}
|
|
29
|
-
let message = getMessage(threadId, messageIndex);
|
|
30
|
-
if (message == null || !message.recipients) {
|
|
31
|
-
try {
|
|
32
|
-
await addDataForThread(threadId, ikValue, btaiHeader, xsrfToken);
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
logger.error(err);
|
|
36
|
-
}
|
|
37
|
-
message = getMessage(threadId, messageIndex);
|
|
38
|
-
if (message == null) {
|
|
39
|
-
throw new Error('Failed to find message date after re-requesting thread');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
target.setAttribute(attribute, JSON.stringify(processor(message)));
|
|
43
|
-
})().catch((err) => {
|
|
44
|
-
target.setAttribute(attribute, 'error');
|
|
45
|
-
logger.error(err);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
function getMessage(threadId, messageIndex) {
|
|
49
|
-
const messages = threadIdToMessages.get(threadId);
|
|
50
|
-
if (messages) {
|
|
51
|
-
const message = messages[messageIndex];
|
|
52
|
-
if (message) {
|
|
53
|
-
return message;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
export function add(groupedMessages) {
|
|
58
|
-
groupedMessages.forEach((group) => {
|
|
59
|
-
threadIdToMessages.set(group.threadID, group.messages);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
const activeThreadRequestPromises = new Map();
|
|
63
|
-
function addDataForThread(threadId, ikValue, btaiHeader, xsrfToken) {
|
|
64
|
-
const existingRequestPromise = activeThreadRequestPromises.get(threadId);
|
|
65
|
-
if (existingRequestPromise) {
|
|
66
|
-
return existingRequestPromise;
|
|
67
|
-
}
|
|
68
|
-
const newPromise = (async () => {
|
|
69
|
-
try {
|
|
70
|
-
if (startsWith(threadId, 'thread')) {
|
|
71
|
-
// new data layer
|
|
72
|
-
if (!btaiHeader || !xsrfToken) {
|
|
73
|
-
throw new Error('Need btaiHeader and xsrfToken when in new data layer');
|
|
74
|
-
}
|
|
75
|
-
const syncThread = await getThreadFromSyncThreadIdUsingHeaders(threadId, btaiHeader, xsrfToken);
|
|
76
|
-
if (syncThread) {
|
|
77
|
-
add([
|
|
78
|
-
{
|
|
79
|
-
threadID: syncThread.syncThreadID,
|
|
80
|
-
messages: syncThread.extraMetaData.syncMessageData.map((syncMessage) => ({
|
|
81
|
-
date: syncMessage.date,
|
|
82
|
-
recipients: syncMessage.recipients,
|
|
83
|
-
})),
|
|
84
|
-
},
|
|
85
|
-
]);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
// legacy gmail
|
|
90
|
-
const text = await requestGmailThread(ikValue, threadId);
|
|
91
|
-
add(extractMessages(text));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch (err) {
|
|
95
|
-
logger.error(err);
|
|
96
|
-
}
|
|
97
|
-
finally {
|
|
98
|
-
activeThreadRequestPromises.delete(threadId);
|
|
99
|
-
}
|
|
100
|
-
})();
|
|
101
|
-
activeThreadRequestPromises.set(threadId, newPromise);
|
|
102
|
-
return newPromise;
|
|
103
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import find from 'lodash/find';
|
|
2
|
-
import * as logger from './injected-logger';
|
|
3
|
-
import waitFor from '../platform-implementation-js/lib/wait-for';
|
|
4
|
-
function stupidToBool(stupid) {
|
|
5
|
-
switch ('' + stupid) {
|
|
6
|
-
case '1':
|
|
7
|
-
case 't':
|
|
8
|
-
case 'true':
|
|
9
|
-
return true;
|
|
10
|
-
default:
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
function getSettingValue(settings, name) {
|
|
15
|
-
var entry = find(settings, (setting) => setting[0] === name);
|
|
16
|
-
return entry ? stupidToBool(entry[1]) : false;
|
|
17
|
-
}
|
|
18
|
-
function getContext() {
|
|
19
|
-
let context = global;
|
|
20
|
-
try {
|
|
21
|
-
// our current tab has globals defined
|
|
22
|
-
if (context.GLOBALS)
|
|
23
|
-
return context;
|
|
24
|
-
// we don't, let's see if we have access to opener (i.e. we are a new compose/thread view)
|
|
25
|
-
if (global.opener && global.opener.top) {
|
|
26
|
-
// try to get href
|
|
27
|
-
// if the opener is not gmail (i.e. you clicked on a mailto link on craigslist) then this will throw an error
|
|
28
|
-
global.opener.top.location.href;
|
|
29
|
-
context = global.opener.top;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
context = global; //we got an error from requesting global.opener.top.location.href;
|
|
34
|
-
}
|
|
35
|
-
return context;
|
|
36
|
-
}
|
|
37
|
-
export default function setupDataExposer() {
|
|
38
|
-
let context;
|
|
39
|
-
waitFor(() => {
|
|
40
|
-
context = getContext();
|
|
41
|
-
return context && (context.GLOBALS || context.gbar);
|
|
42
|
-
})
|
|
43
|
-
.then(() => {
|
|
44
|
-
if (!context)
|
|
45
|
-
return;
|
|
46
|
-
var userEmail = context.GLOBALS
|
|
47
|
-
? context.GLOBALS[10]
|
|
48
|
-
: context.gbar._CONFIG[0][10][5];
|
|
49
|
-
document.head.setAttribute('data-inboxsdk-user-email-address', userEmail);
|
|
50
|
-
var userLanguage = context.GLOBALS
|
|
51
|
-
? context.GLOBALS[4].split('.')[1]
|
|
52
|
-
: context.gbar._CONFIG[0][0][4];
|
|
53
|
-
document.head.setAttribute('data-inboxsdk-user-language', userLanguage);
|
|
54
|
-
document.head.setAttribute('data-inboxsdk-using-sync-api', context.GM_SPT_ENABLED);
|
|
55
|
-
if (context.GLOBALS) {
|
|
56
|
-
// Gmail
|
|
57
|
-
document.head.setAttribute('data-inboxsdk-ik-value', context.GLOBALS[9]);
|
|
58
|
-
document.head.setAttribute('data-inboxsdk-action-token-value', context.GM_ACTION_TOKEN);
|
|
59
|
-
var globalSettingsHolder = find(context.GLOBALS[17], (item) => item[0] === 'p');
|
|
60
|
-
if (!globalSettingsHolder) {
|
|
61
|
-
// global settings doesn't exist on gmail v2, so we don't need to log this anymore
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
var globalSettings = globalSettingsHolder[1];
|
|
66
|
-
{
|
|
67
|
-
var previewPaneLabEnabled = getSettingValue(globalSettings, 'bx_lab_1252');
|
|
68
|
-
var previewPaneEnabled = getSettingValue(globalSettings, 'bx_spa');
|
|
69
|
-
var previewPaneVertical = getSettingValue(globalSettings, 'bx_spo');
|
|
70
|
-
var previewPaneMode = previewPaneLabEnabled && previewPaneEnabled
|
|
71
|
-
? previewPaneVertical
|
|
72
|
-
? 'vertical'
|
|
73
|
-
: 'horizontal'
|
|
74
|
-
: 'none';
|
|
75
|
-
document.head.setAttribute('data-inboxsdk-user-preview-pane-mode', previewPaneMode);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
// Inbox
|
|
81
|
-
const preloadDataSearchString = 'window.BT_EmbeddedAppData=[';
|
|
82
|
-
const preloadScript = find(document.querySelectorAll('script:not([src])'), (script) => script.text &&
|
|
83
|
-
script.text.slice(0, 500).indexOf(preloadDataSearchString) > -1);
|
|
84
|
-
if (!preloadScript) {
|
|
85
|
-
logger.error(new Error('Could not read preloaded BT_EmbeddedAppData'));
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
const { text } = preloadScript;
|
|
89
|
-
const firstBracket = text.indexOf('window.BT_EmbeddedAppData=[');
|
|
90
|
-
let lastBracket = text.indexOf(']\n;', firstBracket);
|
|
91
|
-
if (lastBracket === -1) {
|
|
92
|
-
// I have only seen the case where there is a new line between the
|
|
93
|
-
// closing bracket and the semicolon, but want to be defensive in
|
|
94
|
-
// case that changes.
|
|
95
|
-
lastBracket = text.indexOf('];', firstBracket);
|
|
96
|
-
}
|
|
97
|
-
const preloadData = JSON.parse(text.slice(firstBracket + preloadDataSearchString.length - 1, lastBracket + 1));
|
|
98
|
-
const ikValue = preloadData[11];
|
|
99
|
-
if (typeof ikValue !== 'string') {
|
|
100
|
-
logger.error(new Error('Could not find valid ikValue'));
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
document.head.setAttribute('data-inboxsdk-ik-value', ikValue);
|
|
104
|
-
}
|
|
105
|
-
const xsrfToken = preloadData[12];
|
|
106
|
-
if (typeof xsrfToken !== 'string') {
|
|
107
|
-
logger.error(new Error('Could not find valid xsrfToken'));
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
document.head.setAttribute('data-inboxsdk-xsrf-token', xsrfToken);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
})
|
|
115
|
-
.catch((err) => {
|
|
116
|
-
function getStatus() {
|
|
117
|
-
return {
|
|
118
|
-
hasGLOBALS: !!context.GLOBALS,
|
|
119
|
-
hasGbar: !!context.gbar,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
var startStatus = getStatus();
|
|
123
|
-
var waitTime = 180 * 1000;
|
|
124
|
-
setTimeout(() => {
|
|
125
|
-
var laterStatus = getStatus();
|
|
126
|
-
logger.eventSdkPassive('waitfor global data', {
|
|
127
|
-
startStatus,
|
|
128
|
-
waitTime,
|
|
129
|
-
laterStatus,
|
|
130
|
-
});
|
|
131
|
-
}, waitTime);
|
|
132
|
-
throw err;
|
|
133
|
-
})
|
|
134
|
-
.catch(logger.error);
|
|
135
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export default function setupErrorSilencer() {
|
|
2
|
-
var oldErrorHandlers = [];
|
|
3
|
-
document.addEventListener('inboxSDKsilencePageErrors', function () {
|
|
4
|
-
oldErrorHandlers.push(window.onerror);
|
|
5
|
-
window.onerror = function (...args) {
|
|
6
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
7
|
-
console.error('(Silenced in production) Page error:', ...args);
|
|
8
|
-
}
|
|
9
|
-
return true;
|
|
10
|
-
};
|
|
11
|
-
});
|
|
12
|
-
document.addEventListener('inboxSDKunsilencePageErrors', function () {
|
|
13
|
-
window.onerror = oldErrorHandlers.pop();
|
|
14
|
-
});
|
|
15
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
2
|
-
export default function setupEventReemitter() {
|
|
3
|
-
// Webkit has bugs that stop certain types of events from being created. We
|
|
4
|
-
// can manually fake creation of those events, but we have to do it from
|
|
5
|
-
// inside the page's script if we want the page's script to see the modified
|
|
6
|
-
// properties.
|
|
7
|
-
// https://bugs.webkit.org/show_bug.cgi?id=16735
|
|
8
|
-
// https://code.google.com/p/chromium/issues/detail?id=327853
|
|
9
|
-
document.addEventListener('inboxsdk_event_relay', function (event) {
|
|
10
|
-
const newEvent = document.createEvent('Events');
|
|
11
|
-
newEvent.initEvent(event.detail.type, event.detail.bubbles, event.detail.cancelable);
|
|
12
|
-
Object.assign(newEvent, event.detail.props);
|
|
13
|
-
if (event.detail.dataTransfer) {
|
|
14
|
-
const { files, fileNames } = event.detail.dataTransfer;
|
|
15
|
-
if (fileNames) {
|
|
16
|
-
fileNames.forEach((fileName, i) => {
|
|
17
|
-
const file = files[i];
|
|
18
|
-
if (typeof file.name !== 'string') {
|
|
19
|
-
file.name = fileName;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
newEvent.dataTransfer = {
|
|
24
|
-
dropEffect: 'none',
|
|
25
|
-
effectAllowed: 'all',
|
|
26
|
-
files,
|
|
27
|
-
items: files.map(({ type }, i) => ({
|
|
28
|
-
kind: 'file',
|
|
29
|
-
type,
|
|
30
|
-
getAsFile() {
|
|
31
|
-
return files[i];
|
|
32
|
-
},
|
|
33
|
-
getAsString() {
|
|
34
|
-
throw new Error('getAsString not supported');
|
|
35
|
-
},
|
|
36
|
-
})),
|
|
37
|
-
types: ['Files'],
|
|
38
|
-
getData() {
|
|
39
|
-
return '';
|
|
40
|
-
},
|
|
41
|
-
setData() { },
|
|
42
|
-
setDragImage() { },
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
event.target.dispatchEvent(newEvent);
|
|
46
|
-
});
|
|
47
|
-
}
|