@inboxsdk/core 0.2.28-alpha.3 → 0.2.28-alpha.5

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.
Files changed (398) hide show
  1. package/inboxsdk.js +1 -1
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +5 -1
  4. package/src/build/exec.js +26 -0
  5. package/src/build/spawn.js +17 -0
  6. package/src/common/ajax.js +90 -0
  7. package/src/common/cachebust-url.js +10 -0
  8. package/src/common/censorHTMLstring.js +37 -0
  9. package/src/common/censorHTMLtree.js +28 -0
  10. package/src/common/censorJSONTree.js +15 -0
  11. package/src/common/connectivity-test.js +21 -0
  12. package/src/common/defer.js +11 -0
  13. package/src/common/find-parent.js +10 -0
  14. package/src/common/get-extension-id.js +7 -0
  15. package/src/common/get-or-fail.js +8 -0
  16. package/src/common/get-session-id.js +14 -0
  17. package/src/common/get-stack-trace.js +6 -0
  18. package/src/common/html-to-text.js +7 -0
  19. package/src/common/isElementVisible.js +6 -0
  20. package/src/common/load-script.js +127 -0
  21. package/src/common/log-error.js +191 -0
  22. package/src/common/quoted-split.js +18 -0
  23. package/src/common/rate-limit-queuer.js +57 -0
  24. package/src/common/rate-limit.js +14 -0
  25. package/src/common/version.js +6 -0
  26. package/src/inboxsdk-js/check-requirements.js +7 -3
  27. package/src/inboxsdk-js/header.js +1 -0
  28. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  30. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  31. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  32. package/src/inboxsdk-js/inboxsdk.js +33 -39
  33. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  34. package/src/inboxsdk-js/loading/platform-implementation-loader.js +27 -0
  35. package/src/injected-js/gmail/constants.js +2 -0
  36. package/src/injected-js/gmail/modify-suggestions.js +106 -0
  37. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  38. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  39. package/src/injected-js/gmail/setup-gmonkey-handler.js +49 -0
  40. package/src/injected-js/gmail/sync-compose-processor-20220909.js +298 -0
  41. package/src/injected-js/gmail/sync-compose-processor.js +55 -0
  42. package/src/injected-js/gmail/sync-compose-request-processor.js +110 -0
  43. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  44. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  45. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  46. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  47. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  48. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  49. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  50. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  51. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  52. package/src/injected-js/injected-logger.js +50 -0
  53. package/src/injected-js/main.js +11 -24
  54. package/src/injected-js/message-metadata-holder.js +52 -82
  55. package/src/injected-js/setup-data-exposer.js +89 -148
  56. package/src/injected-js/setup-error-silencer.js +21 -21
  57. package/src/injected-js/setup-event-reemitter.js +30 -22
  58. package/src/injected-js/setupCustomViewEventAssassin.js +90 -0
  59. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  60. package/src/injected-js/setupPushStateListener.js +18 -11
  61. package/src/injected-js/xhr-helper.js +62 -65
  62. package/src/injected-js/xhr-proxy-factory.js +195 -445
  63. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  64. package/src/platform-implementation-js/constants/nav-item-types.js +19 -0
  65. package/src/platform-implementation-js/constants/router.js +14 -9
  66. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  67. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  68. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  69. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +21 -0
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +28 -0
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +98 -0
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +4 -0
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +8 -0
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +12 -0
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +33 -0
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +4 -0
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +44 -0
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +95 -0
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +38 -0
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +12 -0
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +253 -0
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +200 -0
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +533 -0
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +289 -0
  115. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +21 -0
  116. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  117. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +28 -0
  118. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +19 -0
  119. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +126 -0
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +101 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +38 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +28 -0
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +22 -0
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +233 -0
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +223 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +157 -0
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +109 -0
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +5 -0
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +759 -0
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +84 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +33 -0
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +325 -0
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +58 -0
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +55 -0
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +96 -0
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +30 -0
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +10 -0
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +22 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  209. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  210. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +17 -0
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +33 -0
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +49 -0
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.js +65 -0
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.js +16 -0
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  271. package/src/platform-implementation-js/driver-common/update-icon.js +90 -0
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  273. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  274. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  275. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  276. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  277. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  278. package/src/platform-implementation-js/lib/ErrorCollector.js +47 -0
  279. package/src/platform-implementation-js/lib/Membrane.js +22 -0
  280. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +30 -0
  281. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  283. package/src/platform-implementation-js/lib/attemptWithRetries.js +16 -0
  284. package/src/platform-implementation-js/lib/common-page-communicator.js +137 -0
  285. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  286. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  287. package/src/platform-implementation-js/lib/delay-asap.js +12 -0
  288. package/src/platform-implementation-js/lib/delay-idle.js +16 -0
  289. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +36 -0
  290. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  291. package/src/platform-implementation-js/lib/dom/generic-button-view.js +39 -0
  292. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +39 -0
  293. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  294. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +38 -0
  295. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  296. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  297. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +12 -0
  298. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +79 -0
  299. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +28 -0
  300. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +15 -0
  301. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +15 -0
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +5 -0
  303. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  304. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +39 -0
  305. package/src/platform-implementation-js/lib/dom/parentNodes.js +8 -0
  306. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  307. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +6 -0
  308. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +22 -0
  309. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  310. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  311. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  312. package/src/platform-implementation-js/lib/dom/simulate-key.js +46 -0
  313. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +16 -0
  314. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +7 -0
  315. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +25 -0
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  317. package/src/platform-implementation-js/lib/fake-window-resize.js +5 -0
  318. package/src/platform-implementation-js/lib/from-event-target-capture.js +12 -0
  319. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +10 -0
  320. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  321. package/src/platform-implementation-js/lib/handler-registry.js +67 -0
  322. package/src/platform-implementation-js/lib/idMap.js +45 -0
  323. package/src/platform-implementation-js/lib/imageRequest.js +8 -0
  324. package/src/platform-implementation-js/lib/incrementName.js +7 -0
  325. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +14 -0
  326. package/src/platform-implementation-js/lib/inject-script.js +33 -0
  327. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  328. package/src/platform-implementation-js/lib/is-valid-app-id.js +27 -0
  329. package/src/platform-implementation-js/lib/is-valid-email.js +14 -0
  330. package/src/platform-implementation-js/lib/isNotNil.js +5 -0
  331. package/src/platform-implementation-js/lib/isStreakAppId.js +11 -0
  332. package/src/platform-implementation-js/lib/logger.js +441 -0
  333. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  334. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  335. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  337. package/src/platform-implementation-js/lib/persistent-queue.js +107 -0
  338. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  339. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  340. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  341. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  343. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  345. package/src/platform-implementation-js/lib/safe-event-emitter.js +17 -0
  346. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  347. package/src/platform-implementation-js/lib/stopper-pool.js +41 -0
  348. package/src/platform-implementation-js/lib/stream-wait-for.js +30 -0
  349. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  350. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  351. package/src/platform-implementation-js/lib/wait-for.js +28 -0
  352. package/src/platform-implementation-js/lib/waitForAsync.js +19 -0
  353. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  354. package/src/platform-implementation-js/main.js +9 -24
  355. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -1
  356. package/src/platform-implementation-js/namespaces/app-menu.js +31 -0
  357. package/src/platform-implementation-js/namespaces/butter-bar.js +163 -0
  358. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  359. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  360. package/src/platform-implementation-js/namespaces/global.js +27 -39
  361. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  362. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  363. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  364. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  365. package/src/platform-implementation-js/namespaces/router.js +70 -137
  366. package/src/platform-implementation-js/namespaces/search.js +19 -17
  367. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  368. package/src/platform-implementation-js/namespaces/user.js +36 -37
  369. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  370. package/src/platform-implementation-js/platform-implementation.js +98 -229
  371. package/src/platform-implementation-js/views/SimpleElementView.js +16 -0
  372. package/src/platform-implementation-js/views/app-menu-item-view.js +257 -0
  373. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  374. package/src/platform-implementation-js/views/collapsible-panel-view.js +222 -0
  375. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  376. package/src/platform-implementation-js/views/compose-button-view.js +45 -0
  377. package/src/platform-implementation-js/views/compose-view.js +312 -0
  378. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  379. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  380. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  381. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  382. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  383. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +14 -0
  384. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  385. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  386. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  387. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  388. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  389. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  390. package/src/platform-implementation-js/views/section-view.js +60 -52
  391. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  392. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +39 -0
  393. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +98 -0
  394. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +122 -0
  395. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  396. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  397. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  398. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,44 +1,25 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import asap from 'asap';
4
- import Kefir from 'kefir';
5
- import fromEventTargetCapture from '../../lib/from-event-target-capture';
6
-
7
- const dispatchCancel = (element) =>
8
- asap(() =>
9
- element.dispatchEvent(
10
- new CustomEvent('inboxSDKdiscardCanceled', {
11
- bubbles: false,
12
- cancelable: false,
13
- detail: null,
14
- })
15
- )
16
- );
17
-
18
- export default function getDiscardStream({
19
- element,
20
- discardButton,
21
- }: {
22
- element: HTMLElement,
23
- discardButton: HTMLElement,
24
- }): Kefir.Observable<Object> {
25
- const domEventStream = Kefir.merge([
26
- fromEventTargetCapture(element, 'keydown')
27
- .filter(
28
- (domEvent) =>
29
- [13, 32].indexOf(domEvent.which) > -1 ||
30
- [13, 32].indexOf(domEvent.keyCode) > -1
31
- )
32
- .filter(
33
- (domEvent) => discardButton && discardButton.contains(domEvent.target)
34
- ),
35
-
36
- fromEventTargetCapture(element, 'click').filter(
37
- (domEvent) => discardButton && discardButton.contains(domEvent.target)
38
- ),
39
- ]);
40
-
41
- return domEventStream.map((domEvent) => ({
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = getDiscardStream;
8
+ var _asap = _interopRequireDefault(require("asap"));
9
+ var _kefir = _interopRequireDefault(require("kefir"));
10
+ var _fromEventTargetCapture = _interopRequireDefault(require("../../lib/from-event-target-capture"));
11
+ const dispatchCancel = element => (0, _asap.default)(() => element.dispatchEvent(new CustomEvent('inboxSDKdiscardCanceled', {
12
+ bubbles: false,
13
+ cancelable: false,
14
+ detail: null
15
+ })));
16
+ function getDiscardStream(_ref) {
17
+ let {
18
+ element,
19
+ discardButton
20
+ } = _ref;
21
+ const domEventStream = _kefir.default.merge([(0, _fromEventTargetCapture.default)(element, 'keydown').filter(domEvent => [13, 32].indexOf(domEvent.which) > -1 || [13, 32].indexOf(domEvent.keyCode) > -1).filter(domEvent => discardButton && discardButton.contains(domEvent.target)), (0, _fromEventTargetCapture.default)(element, 'click').filter(domEvent => discardButton && discardButton.contains(domEvent.target))]);
22
+ return domEventStream.map(domEvent => ({
42
23
  eventName: 'discard',
43
24
  data: {
44
25
  cancel() {
@@ -46,7 +27,7 @@ export default function getDiscardStream({
46
27
  domEvent.stopPropagation();
47
28
  domEvent.stopImmediatePropagation();
48
29
  dispatchCancel(element);
49
- },
50
- },
30
+ }
31
+ }
51
32
  }));
52
- }
33
+ }
@@ -1,73 +1,44 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import asap from 'asap';
4
- import Kefir from 'kefir';
5
- import fromEventTargetCapture from '../../lib/from-event-target-capture';
6
-
7
- const dispatchCancel = (element) =>
8
- // asap necessary so we don't emit this event during the click/keydown event dispatch
9
- asap(() =>
10
- element.dispatchEvent(
11
- new CustomEvent('inboxSDKsendCanceled', {
12
- bubbles: false,
13
- cancelable: false,
14
- detail: null,
15
- })
16
- )
17
- );
18
-
19
- export default function ({
20
- element,
21
- sendButton,
22
- sendAndArchive,
23
- }: {
24
- element: HTMLElement,
25
- sendButton: HTMLElement,
26
- sendAndArchive?: ?HTMLElement,
27
- }): Kefir.Observable<Object> {
28
- const domEventStream = Kefir.merge([
29
- fromEventTargetCapture(element, 'keydown')
30
- .filter((domEvent) => domEvent.ctrlKey || domEvent.metaKey)
31
- .filter((domEvent) => domEvent.which === 13 || domEvent.keyCode === 13),
32
-
33
- fromEventTargetCapture(element, 'keydown')
34
- .filter(
35
- (domEvent) =>
36
- [13, 32].indexOf(domEvent.which) > -1 ||
37
- [13, 32].indexOf(domEvent.keyCode) > -1
38
- )
39
- .filter(
40
- (domEvent) =>
41
- (sendButton && sendButton.contains(domEvent.target)) ||
42
- (sendAndArchive && sendAndArchive.contains(domEvent.target))
43
- ),
44
-
45
- fromEventTargetCapture(element, 'click').filter(
46
- (domEvent) =>
47
- (sendButton && sendButton.contains(domEvent.target)) ||
48
- (sendAndArchive && sendAndArchive.contains(domEvent.target))
49
- ),
50
- ]);
51
-
52
- return domEventStream
53
- .filter((domEvent) => {
54
- if (element.hasAttribute('data-inboxsdk-send-replaced')) {
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = _default;
8
+ var _asap = _interopRequireDefault(require("asap"));
9
+ var _kefir = _interopRequireDefault(require("kefir"));
10
+ var _fromEventTargetCapture = _interopRequireDefault(require("../../lib/from-event-target-capture"));
11
+ const dispatchCancel = element =>
12
+ // asap necessary so we don't emit this event during the click/keydown event dispatch
13
+ (0, _asap.default)(() => element.dispatchEvent(new CustomEvent('inboxSDKsendCanceled', {
14
+ bubbles: false,
15
+ cancelable: false,
16
+ detail: null
17
+ })));
18
+ function _default(_ref) {
19
+ let {
20
+ element,
21
+ sendButton,
22
+ sendAndArchive
23
+ } = _ref;
24
+ const domEventStream = _kefir.default.merge([(0, _fromEventTargetCapture.default)(element, 'keydown').filter(domEvent => domEvent.ctrlKey || domEvent.metaKey).filter(domEvent => domEvent.which === 13 || domEvent.keyCode === 13), (0, _fromEventTargetCapture.default)(element, 'keydown').filter(domEvent => [13, 32].indexOf(domEvent.which) > -1 || [13, 32].indexOf(domEvent.keyCode) > -1).filter(domEvent => sendButton && sendButton.contains(domEvent.target) || sendAndArchive && sendAndArchive.contains(domEvent.target)), (0, _fromEventTargetCapture.default)(element, 'click').filter(domEvent => sendButton && sendButton.contains(domEvent.target) || sendAndArchive && sendAndArchive.contains(domEvent.target))]);
25
+ return domEventStream.filter(domEvent => {
26
+ if (element.hasAttribute('data-inboxsdk-send-replaced')) {
27
+ domEvent.preventDefault();
28
+ domEvent.stopPropagation();
29
+ domEvent.stopImmediatePropagation();
30
+ return false;
31
+ }
32
+ return true;
33
+ }).map(domEvent => ({
34
+ eventName: 'presending',
35
+ data: {
36
+ cancel() {
55
37
  domEvent.preventDefault();
56
38
  domEvent.stopPropagation();
57
39
  domEvent.stopImmediatePropagation();
58
- return false;
40
+ dispatchCancel(element);
59
41
  }
60
- return true;
61
- })
62
- .map((domEvent) => ({
63
- eventName: 'presending',
64
- data: {
65
- cancel() {
66
- domEvent.preventDefault();
67
- domEvent.stopPropagation();
68
- domEvent.stopImmediatePropagation();
69
- dispatchCancel(element);
70
- },
71
- },
72
- }));
73
- }
42
+ }
43
+ }));
44
+ }
@@ -0,0 +1,17 @@
1
+ /*
2
+ returns "/u/NUMBER" or "/u/NUMBER/d/DELEGATE_ID" for delegated accounts
3
+ */
4
+ export default function getAccountUrlPart() {
5
+ const delegatedAccountMatch = document.location.pathname.match(/\/b\/(.+?)\/u\/(\d+)/);
6
+ if (delegatedAccountMatch) {
7
+ const delegatedAccountId = delegatedAccountMatch[1];
8
+ const delegatedAccountNumber = delegatedAccountMatch[2];
9
+ return `/u/${delegatedAccountNumber}/d/${delegatedAccountId}`;
10
+ }
11
+ else {
12
+ const accountParamMatch = document.location.pathname.match(/(\/u\/\d+)\//i);
13
+ //no match happens in inbox when user only has one account
14
+ const accountParam = accountParamMatch ? accountParamMatch[1] : '/u/0';
15
+ return accountParam;
16
+ }
17
+ }
@@ -1,30 +1,25 @@
1
- /* @flow */
2
-
3
- import { defn } from 'ud';
4
-
5
- import getOriginalMessagePage from './getOriginalMessagePage';
6
-
7
- import type { Driver } from '../driver-interfaces/driver';
1
+ "use strict";
8
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _ud = require("ud");
9
+ var _getOriginalMessagePage = _interopRequireDefault(require("./getOriginalMessagePage"));
9
10
  // Messages sent from the local user in Inbox have a fake ID in the DOM (with
10
11
  // the "msg-a:r" prefix) that doesn't match up with anything in the Gmail API.
11
12
  // This function translates the Inbox ID into the real ID that can be found in
12
13
  // the Gmail API.
13
- async function getGmailMessageIdForSyncMessageId(
14
- driver: Driver,
15
- syncMessageID: string
16
- ): Promise<string> {
17
- const text = await getOriginalMessagePage(driver, {
18
- syncMessageID: syncMessageID,
14
+ async function getGmailMessageIdForSyncMessageId(driver, syncMessageID) {
15
+ const text = await (0, _getOriginalMessagePage.default)(driver, {
16
+ syncMessageID: syncMessageID
19
17
  });
20
-
21
- const messageIdMatch = text.match(
22
- /<a\b[^<>]+\bhref="\/mail[^"]*(?:\?|&(?:amp;)?)view=att&(?:amp;)?th=([a-f0-9]+)&/i
23
- );
18
+ const messageIdMatch = text.match(/<a\b[^<>]+\bhref="\/mail[^"]*(?:\?|&(?:amp;)?)view=att&(?:amp;)?th=([a-f0-9]+)&/i);
24
19
  if (!messageIdMatch) {
25
20
  throw new Error('Failed to find gmail message id for inbox message id');
26
21
  }
27
22
  return messageIdMatch[1];
28
23
  }
29
-
30
- export default defn(module, getGmailMessageIdForSyncMessageId);
24
+ var _default = (0, _ud.defn)(module, getGmailMessageIdForSyncMessageId);
25
+ exports.default = _default;
@@ -1,34 +1,29 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import { defn } from 'ud';
4
- import { extractThreads } from '../dom-driver/gmail/gmail-response-processor';
5
- import getSyncThreadsForSearch from './getSyncThreadsForSearch';
6
- import gmailAjax from './gmailAjax';
7
- import getAccountUrlPart from './getAccountUrlPart';
8
- import type { Driver } from '../driver-interfaces/driver';
9
-
10
- async function getGmailThreadIdForRfcMessageId(
11
- driver: Driver,
12
- rfcMessageId: string
13
- ): Promise<string> {
14
- if ((driver: any).isUsingSyncAPI && (driver: any).isUsingSyncAPI()) {
15
- const { threads: threadDescriptors } = await getSyncThreadsForSearch(
16
- driver,
17
- 'rfc822msgid:' + rfcMessageId
18
- );
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _ud = require("ud");
9
+ var _gmailResponseProcessor = require("../dom-driver/gmail/gmail-response-processor");
10
+ var _getSyncThreadsForSearch = _interopRequireDefault(require("./getSyncThreadsForSearch"));
11
+ var _gmailAjax = _interopRequireDefault(require("./gmailAjax"));
12
+ var _getAccountUrlPart = _interopRequireDefault(require("./getAccountUrlPart"));
13
+ async function getGmailThreadIdForRfcMessageId(driver, rfcMessageId) {
14
+ if (driver.isUsingSyncAPI && driver.isUsingSyncAPI()) {
15
+ const {
16
+ threads: threadDescriptors
17
+ } = await (0, _getSyncThreadsForSearch.default)(driver, 'rfc822msgid:' + rfcMessageId);
19
18
  return threadDescriptors[0].oldGmailThreadID;
20
19
  } else {
21
20
  return forOldAPI(driver, rfcMessageId);
22
21
  }
23
22
  }
24
-
25
- async function forOldAPI(
26
- driver: Driver,
27
- rfcMessageId: string
28
- ): Promise<string> {
29
- const response = await gmailAjax({
23
+ async function forOldAPI(driver, rfcMessageId) {
24
+ const response = await (0, _gmailAjax.default)({
30
25
  method: 'POST',
31
- url: `https://mail.google.com/mail${getAccountUrlPart()}/`,
26
+ url: `https://mail.google.com/mail${(0, _getAccountUrlPart.default)()}/`,
32
27
  data: {
33
28
  ik: driver.getPageCommunicator().getIkValue(),
34
29
  at: await driver.getGmailActionToken(),
@@ -38,24 +33,21 @@ async function forOldAPI(
38
33
  num: '1',
39
34
  rt: 'c',
40
35
  search: 'query',
41
- q: `rfc822msgid:${rfcMessageId}`,
36
+ q: `rfc822msgid:${rfcMessageId}`
42
37
  },
43
38
  xhrFields: {
44
- withCredentials: true,
39
+ withCredentials: true
45
40
  },
46
41
  canRetry: true,
47
42
  headers: {
48
- 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
49
- },
43
+ 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
44
+ }
50
45
  });
51
-
52
- const threads = extractThreads(response.text);
46
+ const threads = (0, _gmailResponseProcessor.extractThreads)(response.text);
53
47
  if (threads.length !== 1) {
54
- throw new Error(
55
- "Failed to find gmail thread id for rfc message id. Message may not exist in user's account."
56
- );
48
+ throw new Error("Failed to find gmail thread id for rfc message id. Message may not exist in user's account.");
57
49
  }
58
50
  return threads[0].gmailThreadId;
59
51
  }
60
-
61
- export default defn(module, getGmailThreadIdForRfcMessageId);
52
+ var _default = (0, _ud.defn)(module, getGmailThreadIdForRfcMessageId);
53
+ exports.default = _default;
@@ -0,0 +1,33 @@
1
+ import { defn } from 'ud';
2
+ import gmailAjax from './gmailAjax';
3
+ async function getOriginalMessagePage(driver, options) {
4
+ const data = {
5
+ ik: driver.getPageCommunicator().getIkValue(),
6
+ view: 'om',
7
+ };
8
+ if (options.oldGmailMessageID) {
9
+ data.th = options.oldGmailMessageID;
10
+ }
11
+ else if (options.syncMessageID) {
12
+ data.permmsgid = options.syncMessageID;
13
+ }
14
+ let url;
15
+ const delegatedAccountMatch = document.location.pathname.match(/\/b\/(.+?)\/u\/(\d+)/);
16
+ if (delegatedAccountMatch) {
17
+ url = document.location.origin + document.location.pathname;
18
+ }
19
+ else {
20
+ const accountParamMatch = document.location.pathname.match(/(\/u\/\d+)\//i);
21
+ //no match happens in inbox when user only has one account
22
+ const accountParam = accountParamMatch ? accountParamMatch[1] : '/u/0';
23
+ url = `https://mail.google.com/mail${accountParam}`;
24
+ }
25
+ const { text } = await gmailAjax({
26
+ url,
27
+ method: 'GET',
28
+ canRetry: true,
29
+ data,
30
+ });
31
+ return text;
32
+ }
33
+ export default defn(module, getOriginalMessagePage);
@@ -1,32 +1,26 @@
1
- /* @flow */
2
-
3
- import { defn } from 'ud';
4
-
5
- import getOriginalMessagePage from './getOriginalMessagePage';
6
-
7
- import htmlToText from '../../common/html-to-text';
8
-
9
- import type { Driver } from '../driver-interfaces/driver';
1
+ "use strict";
10
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _ud = require("ud");
9
+ var _getOriginalMessagePage = _interopRequireDefault(require("./getOriginalMessagePage"));
10
+ var _htmlToText = _interopRequireDefault(require("../../common/html-to-text"));
11
11
  // Messages sent from the local user in Inbox have a fake ID in the DOM (with
12
12
  // the "msg-a:r" prefix) that doesn't match up with anything in the Gmail API.
13
13
  // This function translates the Inbox ID into the real ID that can be found in
14
14
  // the Gmail API.
15
- async function getRfcMessageIdForSyncMessageId(
16
- driver: Driver,
17
- syncMessageID: string
18
- ): Promise<string> {
19
- const text = await getOriginalMessagePage(driver, {
20
- syncMessageID: syncMessageID,
15
+ async function getRfcMessageIdForSyncMessageId(driver, syncMessageID) {
16
+ const text = await (0, _getOriginalMessagePage.default)(driver, {
17
+ syncMessageID: syncMessageID
21
18
  });
22
-
23
19
  const match = text.match(/^Message-ID:\s+(\S+)\s*$/im);
24
20
  if (!match) {
25
- throw new Error(
26
- "Failed to find rfc id for gmail thread id. Message may not exist in user's account."
27
- );
21
+ throw new Error("Failed to find rfc id for gmail thread id. Message may not exist in user's account.");
28
22
  }
29
- return htmlToText(match[1]);
23
+ return (0, _htmlToText.default)(match[1]);
30
24
  }
31
-
32
- export default defn(module, getRfcMessageIdForSyncMessageId);
25
+ var _default = (0, _ud.defn)(module, getRfcMessageIdForSyncMessageId);
26
+ exports.default = _default;
@@ -0,0 +1,49 @@
1
+ import { defn } from 'ud';
2
+ import { extractThreadsFromSearchResponse } from '../dom-driver/gmail/gmail-sync-response-processor';
3
+ import gmailAjax from './gmailAjax';
4
+ import getAccountUrlPart from './getAccountUrlPart';
5
+ async function getSyncThreadsForSearch(driver, searchTerm) {
6
+ let responseText = null;
7
+ try {
8
+ const { text } = await gmailAjax({
9
+ method: 'POST',
10
+ url: `https://mail.google.com/sync${getAccountUrlPart()}/i/bv`,
11
+ headers: {
12
+ 'Content-Type': 'application/json',
13
+ 'X-Framework-Xsrf-Token': await driver
14
+ .getPageCommunicator()
15
+ .getXsrfToken(),
16
+ 'X-Gmail-BTAI': await driver.getPageCommunicator().getBtaiHeader(),
17
+ 'X-Google-BTD': '1',
18
+ },
19
+ data: JSON.stringify({
20
+ '1': {
21
+ '2': 1,
22
+ '4': searchTerm,
23
+ },
24
+ }),
25
+ });
26
+ responseText = text;
27
+ }
28
+ catch (err) {
29
+ const { text } = await gmailAjax({
30
+ method: 'POST',
31
+ url: `https://mail.google.com/sync${getAccountUrlPart()}/i/bv?rt=r&pt=ji`,
32
+ headers: {
33
+ 'Content-Type': 'application/json',
34
+ 'X-Framework-Xsrf-Token': await driver
35
+ .getPageCommunicator()
36
+ .getXsrfToken(),
37
+ 'X-Gmail-BTAI': await driver.getPageCommunicator().getBtaiHeader(),
38
+ 'X-Google-BTD': '1',
39
+ },
40
+ data: JSON.stringify([[null, 51, null, searchTerm]]),
41
+ });
42
+ responseText = text;
43
+ }
44
+ return {
45
+ threads: extractThreadsFromSearchResponse(responseText),
46
+ _text: responseText,
47
+ };
48
+ }
49
+ export default defn(module, getSyncThreadsForSearch);
@@ -1,21 +1,21 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import { defn } from 'ud';
4
- import requestGmailThread from './requestGmailThread';
5
- import { extractGmailThreadIdFromMessageIdSearch } from '../dom-driver/gmail/gmail-response-processor';
6
- import type { Driver } from '../driver-interfaces/driver';
7
-
8
- async function getThreadIdFromMessageId(
9
- driver: Driver,
10
- messageId: string
11
- ): Promise<string> {
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _ud = require("ud");
9
+ var _requestGmailThread = _interopRequireDefault(require("./requestGmailThread"));
10
+ var _gmailResponseProcessor = require("../dom-driver/gmail/gmail-response-processor");
11
+ async function getThreadIdFromMessageId(driver, messageId) {
12
12
  const ikValue = driver.getPageCommunicator().getIkValue();
13
- const text = await requestGmailThread(ikValue, messageId);
14
- const threadId = extractGmailThreadIdFromMessageIdSearch(text);
13
+ const text = await (0, _requestGmailThread.default)(ikValue, messageId);
14
+ const threadId = (0, _gmailResponseProcessor.extractGmailThreadIdFromMessageIdSearch)(text);
15
15
  if (!threadId) {
16
16
  throw new Error('Failed to find thread id for given message id');
17
17
  }
18
18
  return threadId;
19
19
  }
20
-
21
- export default defn(module, getThreadIdFromMessageId);
20
+ var _default = (0, _ud.defn)(module, getThreadIdFromMessageId);
21
+ exports.default = _default;
@@ -0,0 +1,65 @@
1
+ import { defn } from 'ud';
2
+ import Kefir from 'kefir';
3
+ import imageRequest from '../lib/imageRequest';
4
+ import rateLimitQueuer from '../../common/rate-limit-queuer';
5
+ import ajax from '../../common/ajax';
6
+ const IMAGE_REQUEST_TIMEOUT = 1000 * 60; // one minute
7
+ const limitedAjax = rateLimitQueuer(rateLimitQueuer(ajax, 1000, 7), 10 * 1000, 50);
8
+ // Tool for making ajax requests to Gmail endpoints. When used in Inbox, this
9
+ // function is able to handle the issue that happens when the user has no Gmail
10
+ // cookies.
11
+ async function gmailAjax(opts) {
12
+ if (!/^https:\/\/mail\.google\.com(?:$|\/)/.test(opts.url)) {
13
+ throw new Error('Should not happen: gmailAjax called with non-gmail url');
14
+ }
15
+ if (document.location.origin === 'https://mail.google.com') {
16
+ return await limitedAjax(opts);
17
+ }
18
+ try {
19
+ return await limitedAjax({ ...opts, canRetry: false });
20
+ }
21
+ catch (e) {
22
+ if (e && e.status === 0) {
23
+ // The connection failed for an unspecified reason. One possible reason
24
+ // is that we have no Gmail cookies, and the connection tried to redirect
25
+ // to an accounts.google.com URL so the Gmail cookies could be set, but
26
+ // then this connection failed because we don't have ajax permission to
27
+ // accounts.google.com. We can work around this by trying an image
28
+ // request (which doesn't have cross-domain restrictions) so the Gmail
29
+ // cookies get set, and then retrying the original ajax request.
30
+ try {
31
+ await Kefir.fromPromise(imageRequest('https://mail.google.com/mail/u/0/'))
32
+ .merge(Kefir.later(IMAGE_REQUEST_TIMEOUT, undefined))
33
+ .take(1)
34
+ .takeErrors(1)
35
+ .toPromise();
36
+ }
37
+ catch (e) {
38
+ // ignore. If we got an error here, there are several possible causes:
39
+ // 1. The user has Gmail cookies, but the first connection attempt
40
+ // failed for another reason. In this case, we don't care about how
41
+ // this image request turned out.
42
+ // 2. The user did not have Gmail cookies, and the image's original
43
+ // request and its first few redirects succeeded, setting the
44
+ // cookies, but the final request, after the cookies were set,
45
+ // failed. We don't care about the image's final request.
46
+ // 3. The user did not have Gmail cookies, and the image request didn't
47
+ // work at all.
48
+ // In the final case, ideally we would retry the image request, but we
49
+ // can't distinguish that case from the other cases and doing retries
50
+ // of the image request would slow down the other cases. The first case
51
+ // is expected to be significantly more common -- the second two cases
52
+ // where the user has no Gmail cookies is expected to happen maybe once
53
+ // in total to an individual user.
54
+ }
55
+ return await limitedAjax(opts);
56
+ }
57
+ else if (e && typeof e.status === 'number' && e.status >= 500) {
58
+ return await limitedAjax(opts);
59
+ }
60
+ else {
61
+ throw e;
62
+ }
63
+ }
64
+ }
65
+ export default defn(module, gmailAjax);
@@ -1,8 +1,13 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import { defn } from 'ud';
4
- import rateLimitQueuer from '../../common/rate-limit-queuer';
5
- import ajax from '../../common/ajax';
6
-
7
- const inboxAjax = defn(module, rateLimitQueuer(ajax, 1000, 7));
8
- export default inboxAjax;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _ud = require("ud");
9
+ var _rateLimitQueuer = _interopRequireDefault(require("../../common/rate-limit-queuer"));
10
+ var _ajax = _interopRequireDefault(require("../../common/ajax"));
11
+ const inboxAjax = (0, _ud.defn)(module, (0, _rateLimitQueuer.default)(_ajax.default, 1000, 7));
12
+ var _default = inboxAjax;
13
+ exports.default = _default;
@@ -0,0 +1,16 @@
1
+ export default function renderCustomIcon(containerElement, customIconElement, append, insertBeforeEl) {
2
+ // Check if icon wrapper exist or not
3
+ // when renderCustomIcon gets called for updating navItemDescriptor
4
+ let iconElementWrapper = containerElement.querySelector('.inboxsdk__button_icon');
5
+ if (!iconElementWrapper) {
6
+ iconElementWrapper = document.createElement('div');
7
+ iconElementWrapper.classList.add('inboxsdk__button_icon');
8
+ iconElementWrapper.appendChild(customIconElement);
9
+ }
10
+ if (append) {
11
+ containerElement.appendChild(iconElementWrapper);
12
+ }
13
+ else {
14
+ containerElement.insertBefore(containerElement, insertBeforeEl || containerElement.firstElementChild);
15
+ }
16
+ }