@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,37 +1,20 @@
1
- /* @flow */
2
-
3
- import find from 'lodash/find';
4
- import Kefir from 'kefir';
5
- import GmailElementGetter from '../gmail-element-getter';
6
- import * as GRP from '../gmail-response-processor';
7
- import * as SyncGRP from '../gmail-sync-response-processor';
8
- import type Logger from '../../../lib/logger';
9
- import type GmailDriver from '../gmail-driver';
10
- import isStreakAppId from '../../../lib/isStreakAppId';
11
- import update from 'immutability-helper';
12
-
13
- type ThreadDescriptor =
14
- | string
15
- | {
16
- gmailThreadId?: ?string,
17
- rfcMessageId?: ?string,
18
- };
19
-
20
- type InitialIDPair =
21
- | { rfcId: string }
22
- | { gtid: string }
23
- | { rfcId: string, gtid: string };
24
- type IDPairWithRFC = { rfcId: string, gtid?: string };
25
- type CompletedIDPair = { rfcId: string, gtid: string };
26
-
27
- type HandlerResult = {
28
- total?: number,
29
- hasMore?: boolean,
30
- threads: Array<ThreadDescriptor>,
31
- };
32
-
33
- const threadListHandlersToSearchStrings: Map<Function, string> = new Map();
34
-
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = showCustomThreadList;
8
+ var _find = _interopRequireDefault(require("lodash/find"));
9
+ var _kefir = _interopRequireDefault(require("kefir"));
10
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
11
+ var GRP = _interopRequireWildcard(require("../gmail-response-processor"));
12
+ var SyncGRP = _interopRequireWildcard(require("../gmail-sync-response-processor"));
13
+ var _isStreakAppId = _interopRequireDefault(require("../../../lib/isStreakAppId"));
14
+ var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ const threadListHandlersToSearchStrings = new Map();
35
18
  const MAX_THREADS_PER_PAGE = 50;
36
19
 
37
20
  /*
@@ -81,420 +64,289 @@ for the search>
81
64
 
82
65
  */
83
66
 
84
- function copyAndOmitExcessThreads(
85
- ids: Array<ThreadDescriptor>,
86
- logger: Logger
87
- ): Array<ThreadDescriptor> {
67
+ function copyAndOmitExcessThreads(ids, logger) {
88
68
  if (ids.length > MAX_THREADS_PER_PAGE) {
89
69
  // upgrade to deprecationWarning later
90
- logger.error(
91
- new Error(
92
- 'Received more than the maximum number of threads specified by handler, ' +
93
- 'ignoring additional threads (https://www.inboxsdk.com/docs/#Router).'
94
- )
95
- );
70
+ logger.error(new Error('Received more than the maximum number of threads specified by handler, ' + 'ignoring additional threads (https://www.inboxsdk.com/docs/#Router).'));
96
71
  }
97
72
  return ids.slice(0, MAX_THREADS_PER_PAGE);
98
73
  }
99
-
100
- function _findIdFailure(id: string, err: Error) {
74
+ function _findIdFailure(id, err) {
101
75
  console.log('Failed to find id for thread', id, err); //eslint-disable-line no-console
102
76
  return null;
103
77
  }
104
-
105
- function parseOnActivateResult(
106
- logger: Logger,
107
- start: number,
108
- result: HandlerResult | Array<ThreadDescriptor>
109
- ): { total: number | 'MANY', threads: ThreadDescriptor[] } {
78
+ function parseOnActivateResult(logger, start, result) {
110
79
  if (Array.isArray(result)) {
111
- logger.deprecationWarning(
112
- 'Returning an array from a handleCustomListRoute handler',
113
- 'a CustomListDescriptor object'
114
- );
80
+ logger.deprecationWarning('Returning an array from a handleCustomListRoute handler', 'a CustomListDescriptor object');
115
81
  const threads = copyAndOmitExcessThreads(result, logger);
116
82
  return {
117
83
  // default to one page since arrays can't be paginated
118
84
  total: threads.length,
119
- threads,
85
+ threads
120
86
  };
121
87
  } else if (typeof result === 'object') {
122
- const { total, hasMore, threads } = result;
123
-
88
+ const {
89
+ total,
90
+ hasMore,
91
+ threads
92
+ } = result;
124
93
  if (!Array.isArray(threads)) {
125
- throw new Error(
126
- 'handleCustomListRoute result must contain a "threads" array ' +
127
- '(https://www.inboxsdk.com/docs/#Router).'
128
- );
94
+ throw new Error('handleCustomListRoute result must contain a "threads" array ' + '(https://www.inboxsdk.com/docs/#Router).');
129
95
  }
130
-
131
96
  if (total != null && hasMore != null) {
132
- throw new Error(
133
- 'handleCustomListRoute result must only contain either ' +
134
- 'a "total" or a "hasMore" property, but not both. ' +
135
- '(https://www.inboxsdk.com/docs/#Router).'
136
- );
97
+ throw new Error('handleCustomListRoute result must only contain either ' + 'a "total" or a "hasMore" property, but not both. ' + '(https://www.inboxsdk.com/docs/#Router).');
137
98
  }
138
-
139
99
  if (typeof total === 'number') {
140
100
  return {
141
101
  total,
142
- threads: copyAndOmitExcessThreads(threads, logger),
102
+ threads: copyAndOmitExcessThreads(threads, logger)
143
103
  };
144
104
  } else if (typeof hasMore === 'boolean') {
145
105
  const threadsWithoutExcess = copyAndOmitExcessThreads(threads, logger);
146
106
  return {
147
107
  total: hasMore ? 'MANY' : start + threads.length,
148
- threads: threadsWithoutExcess,
108
+ threads: threadsWithoutExcess
149
109
  };
150
110
  } else {
151
- throw new Error(
152
- 'handleCustomListRoute result must contain either a "total" number ' +
153
- 'or a "hasMore" boolean (https://www.inboxsdk.com/docs/#Router).'
154
- );
111
+ throw new Error('handleCustomListRoute result must contain either a "total" number ' + 'or a "hasMore" boolean (https://www.inboxsdk.com/docs/#Router).');
155
112
  }
156
113
  } else {
157
- throw new Error(
158
- 'handleCustomListRoute result must be an array or an object ' +
159
- '(https://www.inboxsdk.com/docs/#Router).'
160
- );
114
+ throw new Error('handleCustomListRoute result must be an array or an object ' + '(https://www.inboxsdk.com/docs/#Router).');
161
115
  }
162
116
  }
163
-
164
- function threadDescriptorToInitialIDPair(id: ThreadDescriptor): ?InitialIDPair {
117
+ function threadDescriptorToInitialIDPair(id) {
165
118
  if (typeof id === 'string') {
166
119
  if (id[0] == '<') {
167
- return { rfcId: id };
120
+ return {
121
+ rfcId: id
122
+ };
168
123
  } else {
169
- return { gtid: id };
124
+ return {
125
+ gtid: id
126
+ };
170
127
  }
171
128
  } else if (id) {
172
129
  const obj = {
173
130
  gtid: typeof id.gmailThreadId === 'string' && id.gmailThreadId,
174
- rfcId: typeof id.rfcMessageId === 'string' && id.rfcMessageId,
131
+ rfcId: typeof id.rfcMessageId === 'string' && id.rfcMessageId
175
132
  };
176
133
  if (obj.gtid || obj.rfcId) {
177
- return (obj: any);
134
+ return obj;
178
135
  }
179
136
  }
180
137
  }
181
-
182
- function initialIDPairToIDPairWithRFC(
183
- driver: GmailDriver,
184
- pair: InitialIDPair,
185
- findIdFailure
186
- ): Promise<?IDPairWithRFC> {
138
+ function initialIDPairToIDPairWithRFC(driver, pair, findIdFailure) {
187
139
  if (typeof pair.rfcId === 'string') {
188
- return Promise.resolve(((pair: any): IDPairWithRFC));
140
+ return Promise.resolve(pair);
189
141
  } else if (typeof pair.gtid === 'string') {
190
142
  const gtid = pair.gtid;
191
- return driver.getRfcMessageIdForGmailThreadId(gtid).then(
192
- (rfcId) => ({ gtid, rfcId }),
193
- (err) => findIdFailure(gtid, err)
194
- );
143
+ return driver.getRfcMessageIdForGmailThreadId(gtid).then(rfcId => ({
144
+ gtid,
145
+ rfcId
146
+ }), err => findIdFailure(gtid, err));
195
147
  }
196
148
  throw new Error('Should not happen');
197
149
  }
198
-
199
- function idPairWithRFCToCompletedIDPair(
200
- driver: GmailDriver,
201
- pair: IDPairWithRFC,
202
- findIdFailure
203
- ): Promise<?CompletedIDPair> {
204
- return typeof pair.gtid === 'string'
205
- ? Promise.resolve(((pair: any): CompletedIDPair))
206
- : driver.getGmailThreadIdForRfcMessageId(pair.rfcId).then(
207
- (gtid) => ({ gtid, rfcId: pair.rfcId }),
208
- (err) => findIdFailure(pair.rfcId, err)
209
- );
150
+ function idPairWithRFCToCompletedIDPair(driver, pair, findIdFailure) {
151
+ return typeof pair.gtid === 'string' ? Promise.resolve(pair) : driver.getGmailThreadIdForRfcMessageId(pair.rfcId).then(gtid => ({
152
+ gtid,
153
+ rfcId: pair.rfcId
154
+ }), err => findIdFailure(pair.rfcId, err));
210
155
  }
211
156
 
212
157
  // Returns the search string that will trigger the onActivate function.
213
- const setupSearchReplacing = (
214
- driver: GmailDriver,
215
- customRouteID: string,
216
- onActivate: Function,
217
- findIdFailure
218
- ): string => {
158
+ const setupSearchReplacing = (driver, customRouteID, onActivate, findIdFailure) => {
219
159
  const preexistingQuery = threadListHandlersToSearchStrings.get(onActivate);
220
160
  if (preexistingQuery) {
221
161
  return preexistingQuery;
222
162
  }
223
163
  const newQuery = Date.now() + '-' + Math.random();
224
164
  driver.getPageCommunicator().setupCustomListResultsQuery(newQuery);
225
- driver
226
- .getPageCommunicator()
227
- .ajaxInterceptStream.filter(
228
- (e) => e.type === 'searchForReplacement' && e.query === newQuery
229
- )
230
- .onValue(({ start }: { start: number }) => {
231
- (async () => {
232
- driver.signalCustomThreadListActivity(customRouteID);
233
-
234
- let total: number | 'MANY';
235
- let threadDescriptors: ThreadDescriptor[];
236
- try {
237
- const onActivateResult: HandlerResult | Array<ThreadDescriptor> =
238
- await Promise.resolve(onActivate(start, MAX_THREADS_PER_PAGE));
239
- const parsed = parseOnActivateResult(
240
- driver.getLogger(),
165
+ driver.getPageCommunicator().ajaxInterceptStream.filter(e => e.type === 'searchForReplacement' && e.query === newQuery).onValue(_ref => {
166
+ let {
167
+ start
168
+ } = _ref;
169
+ (async () => {
170
+ driver.signalCustomThreadListActivity(customRouteID);
171
+ let total;
172
+ let threadDescriptors;
173
+ try {
174
+ const onActivateResult = await Promise.resolve(onActivate(start, MAX_THREADS_PER_PAGE));
175
+ const parsed = parseOnActivateResult(driver.getLogger(), start, onActivateResult);
176
+ total = parsed.total;
177
+ threadDescriptors = parsed.threads;
178
+ } catch (e) {
179
+ driver.getLogger().error(e);
180
+ total = 0;
181
+ threadDescriptors = [];
182
+ }
183
+ const initialIDPairs = threadDescriptors.map(threadDescriptorToInitialIDPair).filter(Boolean);
184
+ const idPairsWithRFC = (await Promise.all(initialIDPairs.map(pair => initialIDPairToIDPairWithRFC(driver, pair, findIdFailure)))).filter(Boolean);
185
+ const messageIDQuery = idPairsWithRFC.length > 0 ? idPairsWithRFC.map(_ref2 => {
186
+ let {
187
+ rfcId
188
+ } = _ref2;
189
+ return 'rfc822msgid:' + rfcId;
190
+ }).join(' OR ') : '' + Math.random() + Date.now(); // google doesn't like empty searches
191
+
192
+ // Outgoing requests for list queries always need to have a `start` of 0,
193
+ // because we only ever ask for 1 page-worth of threads per query.
194
+ // When the response comes back, we modify it to have a `start` consistent
195
+ // with whatever page was being loaded so Gmail's UI makes sense.
196
+ driver.getPageCommunicator().setCustomListNewQuery({
197
+ newQuery: messageIDQuery,
198
+ newStart: 0,
199
+ query: newQuery,
200
+ start
201
+ });
202
+ const searchResultsResponse_promise = driver.getPageCommunicator().ajaxInterceptStream.filter(e => e.type === 'searchResultsResponse' && e.query === newQuery && e.start === start).map(x => x.response).take(1).toPromise();
203
+
204
+ // Figure out any gmail thread ids we don't know yet.
205
+ const completedIDPairs = (await Promise.all(idPairsWithRFC.map(pair => idPairWithRFCToCompletedIDPair(driver, pair, findIdFailure)))).filter(Boolean);
206
+ const response = await searchResultsResponse_promise;
207
+ driver.signalCustomThreadListActivity(customRouteID);
208
+
209
+ // override thread list response so that we show results in the same
210
+ // order that user passed in
211
+ let newResponse;
212
+ try {
213
+ if (driver.isUsingSyncAPI()) {
214
+ const extractedThreads = SyncGRP.extractThreadsFromSearchResponse(response);
215
+ const extractedThreadsInCompletedIDPairsOrder = completedIDPairs.map(_ref3 => {
216
+ let {
217
+ gtid
218
+ } = _ref3;
219
+ return (0, _find.default)(extractedThreads, t => t.oldGmailThreadID === gtid);
220
+ }).filter(Boolean);
221
+ const doesNeedReorder = extractedThreads.length !== extractedThreadsInCompletedIDPairsOrder.length || extractedThreads.some((extractedThread, index) => extractedThread !== extractedThreadsInCompletedIDPairsOrder[index]);
222
+ let reorderedThreads;
223
+ if (doesNeedReorder) {
224
+ const now = Date.now();
225
+ reorderedThreads = extractedThreadsInCompletedIDPairsOrder.map((extractedThread, index) => {
226
+ const newFormat = Array.isArray(extractedThread.rawResponse);
227
+ const newTime = String(now - index);
228
+ let newThread = (0, _immutabilityHelper.default)(extractedThread, {
229
+ rawResponse: newFormat ? {
230
+ '0': {
231
+ '2': {
232
+ $set: newTime
233
+ },
234
+ '7': {
235
+ $set: newTime
236
+ }
237
+ }
238
+ } : {
239
+ '1': {
240
+ '3': {
241
+ $set: newTime
242
+ },
243
+ '8': {
244
+ $set: newTime
245
+ }
246
+ }
247
+ }
248
+ });
249
+ if (newFormat ? extractedThread.rawResponse[0][4] : extractedThread.rawResponse[1][5]) {
250
+ newThread = (0, _immutabilityHelper.default)(newThread, {
251
+ rawResponse: newFormat ? {
252
+ '0': {
253
+ '4': oldVal => oldVal.map(md => ({
254
+ ...md,
255
+ '6': newTime,
256
+ '17': newTime,
257
+ '30': newTime
258
+ }))
259
+ }
260
+ } : {
261
+ '1': {
262
+ '5': oldVal => oldVal.map(md => ({
263
+ ...md,
264
+ '7': newTime,
265
+ '18': newTime,
266
+ '31': newTime
267
+ }))
268
+ }
269
+ }
270
+ });
271
+ }
272
+ return newThread;
273
+ });
274
+ } else {
275
+ reorderedThreads = extractedThreads;
276
+ }
277
+ newResponse = SyncGRP.replaceThreadsInSearchResponse(response, reorderedThreads, {
241
278
  start,
242
- onActivateResult
243
- );
244
- total = parsed.total;
245
- threadDescriptors = parsed.threads;
246
- } catch (e) {
247
- driver.getLogger().error(e);
248
- total = 0;
249
- threadDescriptors = [];
279
+ total
280
+ });
281
+ } else {
282
+ const extractedThreads = GRP.extractThreads(response);
283
+ const reorderedThreads = completedIDPairs.map(_ref4 => {
284
+ let {
285
+ gtid
286
+ } = _ref4;
287
+ return (0, _find.default)(extractedThreads, t => t.gmailThreadId === gtid);
288
+ }).filter(Boolean);
289
+ newResponse = GRP.replaceThreadsInResponse(response, reorderedThreads, {
290
+ start,
291
+ total
292
+ });
250
293
  }
251
-
252
- const initialIDPairs: InitialIDPair[] = threadDescriptors
253
- .map(threadDescriptorToInitialIDPair)
254
- .filter(Boolean);
255
-
256
- const idPairsWithRFC: IDPairWithRFC[] = (
257
- await Promise.all(
258
- initialIDPairs.map((pair) =>
259
- initialIDPairToIDPairWithRFC(driver, pair, findIdFailure)
260
- )
261
- )
262
- ).filter(Boolean);
263
-
264
- const messageIDQuery: string =
265
- idPairsWithRFC.length > 0
266
- ? idPairsWithRFC
267
- .map(({ rfcId }) => 'rfc822msgid:' + rfcId)
268
- .join(' OR ')
269
- : '' + Math.random() + Date.now(); // google doesn't like empty searches
270
-
271
- // Outgoing requests for list queries always need to have a `start` of 0,
272
- // because we only ever ask for 1 page-worth of threads per query.
273
- // When the response comes back, we modify it to have a `start` consistent
274
- // with whatever page was being loaded so Gmail's UI makes sense.
275
- driver.getPageCommunicator().setCustomListNewQuery({
276
- newQuery: messageIDQuery,
277
- newStart: 0,
278
- query: newQuery,
279
- start,
294
+ driver.getPageCommunicator().setCustomListResults(newQuery, newResponse);
295
+ } catch (e) {
296
+ driver.getLogger().error(e, {
297
+ responseReplacementFailure: true,
298
+ //response: isStreakAppId(driver.getAppId()) ? response : null,
299
+ idPairsLength: completedIDPairs.length
280
300
  });
281
-
282
- const searchResultsResponse_promise = driver
283
- .getPageCommunicator()
284
- .ajaxInterceptStream.filter(
285
- (e) =>
286
- e.type === 'searchResultsResponse' &&
287
- e.query === newQuery &&
288
- e.start === start
289
- )
290
- .map((x) => x.response)
291
- .take(1)
292
- .toPromise();
293
-
294
- // Figure out any gmail thread ids we don't know yet.
295
- const completedIDPairs: Array<CompletedIDPair> = (
296
- await Promise.all(
297
- idPairsWithRFC.map((pair) =>
298
- idPairWithRFCToCompletedIDPair(driver, pair, findIdFailure)
299
- )
300
- )
301
- ).filter(Boolean);
302
-
303
- const response = await searchResultsResponse_promise;
304
-
305
- driver.signalCustomThreadListActivity(customRouteID);
306
-
307
- // override thread list response so that we show results in the same
308
- // order that user passed in
309
- let newResponse;
301
+ const butterBar = driver.getButterBar();
302
+ if (butterBar) {
303
+ butterBar.showError({
304
+ text: 'Failed to load custom thread list'
305
+ });
306
+ }
310
307
  try {
311
308
  if (driver.isUsingSyncAPI()) {
312
- const extractedThreads =
313
- SyncGRP.extractThreadsFromSearchResponse(response);
314
-
315
- const extractedThreadsInCompletedIDPairsOrder = completedIDPairs
316
- .map(({ gtid }) =>
317
- find(extractedThreads, (t) => t.oldGmailThreadID === gtid)
318
- )
319
- .filter(Boolean);
320
-
321
- const doesNeedReorder =
322
- extractedThreads.length !==
323
- extractedThreadsInCompletedIDPairsOrder.length ||
324
- extractedThreads.some(
325
- (extractedThread, index) =>
326
- extractedThread !==
327
- extractedThreadsInCompletedIDPairsOrder[index]
328
- );
329
-
330
- let reorderedThreads: typeof extractedThreads;
331
- if (doesNeedReorder) {
332
- const now = Date.now();
333
- reorderedThreads = extractedThreadsInCompletedIDPairsOrder.map(
334
- (extractedThread, index) => {
335
- const newFormat = Array.isArray(extractedThread.rawResponse);
336
-
337
- const newTime = String(now - index);
338
- let newThread = update(extractedThread, {
339
- rawResponse: newFormat
340
- ? {
341
- '0': {
342
- '2': { $set: newTime },
343
- '7': { $set: newTime },
344
- },
345
- }
346
- : {
347
- '1': {
348
- '3': { $set: newTime },
349
- '8': { $set: newTime },
350
- },
351
- },
352
- });
353
-
354
- if (
355
- newFormat
356
- ? extractedThread.rawResponse[0][4]
357
- : extractedThread.rawResponse[1][5]
358
- ) {
359
- newThread = update(newThread, {
360
- rawResponse: newFormat
361
- ? {
362
- '0': {
363
- '4': (oldVal) =>
364
- oldVal.map((md) => ({
365
- ...md,
366
- '6': newTime,
367
- '17': newTime,
368
- '30': newTime,
369
- })),
370
- },
371
- }
372
- : {
373
- '1': {
374
- '5': (oldVal) =>
375
- oldVal.map((md) => ({
376
- ...md,
377
- '7': newTime,
378
- '18': newTime,
379
- '31': newTime,
380
- })),
381
- },
382
- },
383
- });
384
- }
385
- return newThread;
386
- }
387
- );
388
- } else {
389
- reorderedThreads = extractedThreads;
390
- }
391
-
392
- newResponse = SyncGRP.replaceThreadsInSearchResponse(
393
- response,
394
- reorderedThreads,
395
- { start, total }
396
- );
309
+ driver.getPageCommunicator().setCustomListResults(newQuery, SyncGRP.replaceThreadsInSearchResponse(response, [], {
310
+ start,
311
+ total
312
+ }));
397
313
  } else {
398
- const extractedThreads = GRP.extractThreads(response);
399
-
400
- const reorderedThreads: typeof extractedThreads = completedIDPairs
401
- .map(({ gtid }) =>
402
- find(extractedThreads, (t) => t.gmailThreadId === gtid)
403
- )
404
- .filter(Boolean);
405
-
406
- newResponse = GRP.replaceThreadsInResponse(
407
- response,
408
- reorderedThreads,
409
- { start, total }
410
- );
314
+ driver.getPageCommunicator().setCustomListResults(newQuery, GRP.replaceThreadsInResponse(response, [], {
315
+ start,
316
+ total
317
+ }));
411
318
  }
412
-
413
- driver
414
- .getPageCommunicator()
415
- .setCustomListResults(newQuery, newResponse);
416
- } catch (e) {
417
- driver.getLogger().error(e, {
418
- responseReplacementFailure: true,
419
- //response: isStreakAppId(driver.getAppId()) ? response : null,
420
- idPairsLength: completedIDPairs.length,
319
+ } catch (e2) {
320
+ driver.getLogger().error(e2);
321
+ // The original response will be used.
322
+ driver.getPageCommunicator().setCustomListResults(newQuery, null);
323
+ }
324
+ return;
325
+ }
326
+ setTimeout(() => {
327
+ const errorBar = document.querySelector('.vY .vX.UC');
328
+ if (errorBar && errorBar.style.display !== 'none' && /#\d+/.test(errorBar.textContent)) {
329
+ const isStreak = (0, _isStreakAppId.default)(driver.getAppId());
330
+ driver.getLogger().error(new Error('Gmail error with custom thread list'), {
331
+ message: errorBar.textContent,
332
+ completedIDPairsLength: completedIDPairs.length,
333
+ response: isStreak ? response : null,
334
+ newResponse: isStreak ? newResponse : null
421
335
  });
422
- const butterBar = driver.getButterBar();
423
- if (butterBar) {
424
- butterBar.showError({
425
- text: 'Failed to load custom thread list',
426
- });
427
- }
428
- try {
429
- if (driver.isUsingSyncAPI()) {
430
- driver.getPageCommunicator().setCustomListResults(
431
- newQuery,
432
- SyncGRP.replaceThreadsInSearchResponse(response, [], {
433
- start,
434
- total,
435
- })
436
- );
437
- } else {
438
- driver
439
- .getPageCommunicator()
440
- .setCustomListResults(
441
- newQuery,
442
- GRP.replaceThreadsInResponse(response, [], { start, total })
443
- );
444
- }
445
- } catch (e2) {
446
- driver.getLogger().error(e2);
447
- // The original response will be used.
448
- driver.getPageCommunicator().setCustomListResults(newQuery, null);
449
- }
450
- return;
451
336
  }
452
-
453
- setTimeout(() => {
454
- const errorBar = document.querySelector('.vY .vX.UC');
455
- if (
456
- errorBar &&
457
- errorBar.style.display !== 'none' &&
458
- /#\d+/.test(errorBar.textContent)
459
- ) {
460
- const isStreak = isStreakAppId(driver.getAppId());
461
- driver
462
- .getLogger()
463
- .error(new Error('Gmail error with custom thread list'), {
464
- message: errorBar.textContent,
465
- completedIDPairsLength: completedIDPairs.length,
466
- response: isStreak ? response : null,
467
- newResponse: isStreak ? newResponse : null,
468
- });
469
- }
470
- }, 1000);
471
- })().catch((err) => driver.getLogger().error(err));
472
- });
473
-
337
+ }, 1000);
338
+ })().catch(err => driver.getLogger().error(err));
339
+ });
474
340
  driver.getCustomListSearchStringsToRouteIds().set(newQuery, customRouteID);
475
341
  threadListHandlersToSearchStrings.set(onActivate, newQuery);
476
342
  return newQuery;
477
343
  };
478
-
479
- export default function showCustomThreadList(
480
- driver: GmailDriver,
481
- customRouteID: string,
482
- onActivate: Function,
483
- params: Array<string>,
484
- findIdFailure: typeof _findIdFailure = _findIdFailure
485
- ) {
486
- const uniqueSearch = setupSearchReplacing(
487
- driver,
488
- customRouteID,
489
- onActivate,
490
- findIdFailure
491
- );
344
+ function showCustomThreadList(driver, customRouteID, onActivate, params) {
345
+ let findIdFailure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _findIdFailure;
346
+ const uniqueSearch = setupSearchReplacing(driver, customRouteID, onActivate, findIdFailure);
492
347
  const customHash = document.location.hash;
493
-
494
- const nextMainContentElementChange =
495
- GmailElementGetter.getMainContentElementChangedStream().changes().take(1);
496
-
497
- const searchInput = GmailElementGetter.getSearchInput();
348
+ const nextMainContentElementChange = _gmailElementGetter.default.getMainContentElementChangedStream().changes().take(1);
349
+ const searchInput = _gmailElementGetter.default.getSearchInput();
498
350
  if (!searchInput) throw new Error('could not find search input');
499
351
  searchInput.value = '';
500
352
  searchInput.style.visibility = 'hidden';
@@ -504,13 +356,12 @@ export default function showCustomThreadList(
504
356
  });
505
357
 
506
358
  // Change the hash *without* making a new history entry.
507
- const searchHash =
508
- '#search/' + [uniqueSearch, ...params].map(encodeURIComponent).join('/');
359
+ const searchHash = '#search/' + [uniqueSearch, ...params].map(encodeURIComponent).join('/');
509
360
  window.history.replaceState(null, null, searchHash);
510
361
  // Create a hashchange event so setup-route-view-driver-stream sees this event.
511
- const hce = new (window: any).HashChangeEvent('hashchange', {
362
+ const hce = new window.HashChangeEvent('hashchange', {
512
363
  oldURL: document.location.href.replace(/#.*$/, '') + customHash,
513
- newURL: document.location.href.replace(/#.*$/, '') + searchHash,
364
+ newURL: document.location.href.replace(/#.*$/, '') + searchHash
514
365
  });
515
366
  window.dispatchEvent(hce);
516
- }
367
+ }