@automattic/data-stores 3.1.1 → 3.2.0

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 (318) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.md +10 -9
  3. package/dist/cjs/add-ons/hooks/use-add-on-prices.js +3 -3
  4. package/dist/cjs/add-ons/hooks/use-add-on-prices.js.map +1 -1
  5. package/dist/cjs/add-ons/icons/custom-design.js +1 -1
  6. package/dist/cjs/add-ons/icons/custom-design.js.map +1 -1
  7. package/dist/cjs/add-ons/icons/unlimited-themes.js +1 -1
  8. package/dist/cjs/add-ons/icons/unlimited-themes.js.map +1 -1
  9. package/dist/cjs/contextual-help/admin-sections.js +2 -2
  10. package/dist/cjs/contextual-help/admin-sections.js.map +1 -1
  11. package/dist/cjs/help-center/actions.js +89 -62
  12. package/dist/cjs/help-center/actions.js.map +1 -1
  13. package/dist/cjs/help-center/index.js +13 -12
  14. package/dist/cjs/help-center/index.js.map +1 -1
  15. package/dist/cjs/help-center/reducer.js +32 -16
  16. package/dist/cjs/help-center/reducer.js.map +1 -1
  17. package/dist/cjs/help-center/resolvers.js +6 -1
  18. package/dist/cjs/help-center/resolvers.js.map +1 -1
  19. package/dist/cjs/help-center/selectors.js +11 -7
  20. package/dist/cjs/help-center/selectors.js.map +1 -1
  21. package/dist/cjs/index.js +3 -6
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/onboard/actions.js +10 -10
  24. package/dist/cjs/onboard/actions.js.map +1 -1
  25. package/dist/cjs/onboard/index.js +0 -1
  26. package/dist/cjs/onboard/index.js.map +1 -1
  27. package/dist/cjs/onboard/reducer.js +18 -16
  28. package/dist/cjs/onboard/reducer.js.map +1 -1
  29. package/dist/cjs/onboard/selectors.js +5 -5
  30. package/dist/cjs/onboard/selectors.js.map +1 -1
  31. package/dist/cjs/plans/queries/use-plans.js +20 -1
  32. package/dist/cjs/plans/queries/use-plans.js.map +1 -1
  33. package/dist/cjs/plans/resolvers.js +4 -4
  34. package/dist/cjs/plans/resolvers.js.map +1 -1
  35. package/dist/cjs/purchases/lib/assembler.js +7 -13
  36. package/dist/cjs/purchases/lib/assembler.js.map +1 -1
  37. package/dist/cjs/purchases/queries/lib/use-query-keys-factory.js +1 -0
  38. package/dist/cjs/purchases/queries/lib/use-query-keys-factory.js.map +1 -1
  39. package/dist/cjs/purchases/queries/use-get-jetpack-transferred-license-purchases.js +33 -0
  40. package/dist/cjs/purchases/queries/use-get-jetpack-transferred-license-purchases.js.map +1 -0
  41. package/dist/cjs/queries/use-launchpad.js +3 -2
  42. package/dist/cjs/queries/use-launchpad.js.map +1 -1
  43. package/dist/cjs/queries/use-site-domains-query.js.map +1 -1
  44. package/dist/cjs/queries/use-site-intent.js.map +1 -1
  45. package/dist/cjs/reader/mutations/use-site-subscribe-mutation.js +1 -1
  46. package/dist/cjs/reader/mutations/use-site-subscribe-mutation.js.map +1 -1
  47. package/dist/cjs/reader/mutations/use-site-unsubscribe-mutation.js +4 -0
  48. package/dist/cjs/reader/mutations/use-site-unsubscribe-mutation.js.map +1 -1
  49. package/dist/cjs/site/actions.js +1 -1
  50. package/dist/cjs/site/actions.js.map +1 -1
  51. package/dist/cjs/site/constants.js +2 -1
  52. package/dist/cjs/site/constants.js.map +1 -1
  53. package/dist/cjs/site/types.js.map +1 -1
  54. package/dist/esm/add-ons/hooks/use-add-on-prices.js +1 -1
  55. package/dist/esm/add-ons/hooks/use-add-on-prices.js.map +1 -1
  56. package/dist/esm/add-ons/icons/custom-design.js +2 -2
  57. package/dist/esm/add-ons/icons/custom-design.js.map +1 -1
  58. package/dist/esm/add-ons/icons/unlimited-themes.js +2 -2
  59. package/dist/esm/add-ons/icons/unlimited-themes.js.map +1 -1
  60. package/dist/esm/contextual-help/admin-sections.js +2 -2
  61. package/dist/esm/contextual-help/admin-sections.js.map +1 -1
  62. package/dist/esm/help-center/actions.js +81 -57
  63. package/dist/esm/help-center/actions.js.map +1 -1
  64. package/dist/esm/help-center/index.js +11 -10
  65. package/dist/esm/help-center/index.js.map +1 -1
  66. package/dist/esm/help-center/reducer.js +32 -16
  67. package/dist/esm/help-center/reducer.js.map +1 -1
  68. package/dist/esm/help-center/resolvers.js +6 -1
  69. package/dist/esm/help-center/resolvers.js.map +1 -1
  70. package/dist/esm/help-center/selectors.js +5 -3
  71. package/dist/esm/help-center/selectors.js.map +1 -1
  72. package/dist/esm/index.js +2 -4
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/onboard/actions.js +7 -7
  75. package/dist/esm/onboard/actions.js.map +1 -1
  76. package/dist/esm/onboard/index.js +0 -1
  77. package/dist/esm/onboard/index.js.map +1 -1
  78. package/dist/esm/onboard/reducer.js +15 -15
  79. package/dist/esm/onboard/reducer.js.map +1 -1
  80. package/dist/esm/onboard/selectors.js +2 -2
  81. package/dist/esm/onboard/selectors.js.map +1 -1
  82. package/dist/esm/plans/queries/use-plans.js +20 -1
  83. package/dist/esm/plans/queries/use-plans.js.map +1 -1
  84. package/dist/esm/plans/resolvers.js +1 -1
  85. package/dist/esm/plans/resolvers.js.map +1 -1
  86. package/dist/esm/purchases/lib/assembler.js +7 -13
  87. package/dist/esm/purchases/lib/assembler.js.map +1 -1
  88. package/dist/esm/purchases/queries/lib/use-query-keys-factory.js +1 -0
  89. package/dist/esm/purchases/queries/lib/use-query-keys-factory.js.map +1 -1
  90. package/dist/esm/purchases/queries/use-get-jetpack-transferred-license-purchases.js +29 -0
  91. package/dist/esm/purchases/queries/use-get-jetpack-transferred-license-purchases.js.map +1 -0
  92. package/dist/esm/queries/use-launchpad.js +2 -2
  93. package/dist/esm/queries/use-launchpad.js.map +1 -1
  94. package/dist/esm/queries/use-site-domains-query.js.map +1 -1
  95. package/dist/esm/queries/use-site-intent.js.map +1 -1
  96. package/dist/esm/reader/mutations/use-site-subscribe-mutation.js +1 -1
  97. package/dist/esm/reader/mutations/use-site-subscribe-mutation.js.map +1 -1
  98. package/dist/esm/reader/mutations/use-site-unsubscribe-mutation.js +4 -0
  99. package/dist/esm/reader/mutations/use-site-unsubscribe-mutation.js.map +1 -1
  100. package/dist/esm/site/actions.js +1 -1
  101. package/dist/esm/site/actions.js.map +1 -1
  102. package/dist/esm/site/constants.js +1 -0
  103. package/dist/esm/site/constants.js.map +1 -1
  104. package/dist/esm/site/types.js.map +1 -1
  105. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  106. package/dist/tsconfig.tsbuildinfo +1 -1
  107. package/dist/types/add-ons/icons/custom-design.d.ts.map +1 -1
  108. package/dist/types/add-ons/icons/unlimited-themes.d.ts.map +1 -1
  109. package/dist/types/help-center/actions.d.ts +53 -30
  110. package/dist/types/help-center/actions.d.ts.map +1 -1
  111. package/dist/types/help-center/index.d.ts +1 -1
  112. package/dist/types/help-center/index.d.ts.map +1 -1
  113. package/dist/types/help-center/reducer.d.ts +14 -7
  114. package/dist/types/help-center/reducer.d.ts.map +1 -1
  115. package/dist/types/help-center/resolvers.d.ts +22 -3
  116. package/dist/types/help-center/resolvers.d.ts.map +1 -1
  117. package/dist/types/help-center/selectors.d.ts +8 -3
  118. package/dist/types/help-center/selectors.d.ts.map +1 -1
  119. package/dist/types/help-center/types.d.ts +3 -1
  120. package/dist/types/help-center/types.d.ts.map +1 -1
  121. package/dist/types/index.d.ts +478 -46
  122. package/dist/types/index.d.ts.map +1 -1
  123. package/dist/types/onboard/actions.d.ts +13 -24
  124. package/dist/types/onboard/actions.d.ts.map +1 -1
  125. package/dist/types/onboard/index.d.ts.map +1 -1
  126. package/dist/types/onboard/reducer.d.ts +7 -5
  127. package/dist/types/onboard/reducer.d.ts.map +1 -1
  128. package/dist/types/onboard/selectors.d.ts +6 -6
  129. package/dist/types/onboard/selectors.d.ts.map +1 -1
  130. package/dist/types/onboard/types.d.ts +1 -1
  131. package/dist/types/onboard/types.d.ts.map +1 -1
  132. package/dist/types/plans/queries/use-plans.d.ts.map +1 -1
  133. package/dist/types/purchases/lib/assembler.d.ts +3 -3
  134. package/dist/types/purchases/lib/assembler.d.ts.map +1 -1
  135. package/dist/types/purchases/queries/lib/use-query-keys-factory.d.ts +1 -0
  136. package/dist/types/purchases/queries/lib/use-query-keys-factory.d.ts.map +1 -1
  137. package/dist/types/purchases/queries/use-get-jetpack-transferred-license-purchases.d.ts +18 -0
  138. package/dist/types/purchases/queries/use-get-jetpack-transferred-license-purchases.d.ts.map +1 -0
  139. package/dist/types/purchases/types.d.ts +16 -106
  140. package/dist/types/purchases/types.d.ts.map +1 -1
  141. package/dist/types/queries/use-all-domains-query.d.ts +1 -1
  142. package/dist/types/queries/use-all-domains-query.d.ts.map +1 -1
  143. package/dist/types/queries/use-launchpad.d.ts +1 -0
  144. package/dist/types/queries/use-launchpad.d.ts.map +1 -1
  145. package/dist/types/queries/use-site-domains-query.d.ts +2 -1
  146. package/dist/types/queries/use-site-domains-query.d.ts.map +1 -1
  147. package/dist/types/queries/use-site-intent.d.ts +2 -1
  148. package/dist/types/queries/use-site-intent.d.ts.map +1 -1
  149. package/dist/types/queries/use-site-query.d.ts +1 -1
  150. package/dist/types/queries/use-site-query.d.ts.map +1 -1
  151. package/dist/types/reader/index.d.ts +475 -41
  152. package/dist/types/reader/index.d.ts.map +1 -1
  153. package/dist/types/reader/mutations/use-site-subscribe-mutation.d.ts +1 -1
  154. package/dist/types/reader/mutations/use-site-subscribe-mutation.d.ts.map +1 -1
  155. package/dist/types/reader/mutations/use-site-unsubscribe-mutation.d.ts +2 -0
  156. package/dist/types/reader/mutations/use-site-unsubscribe-mutation.d.ts.map +1 -1
  157. package/dist/types/reader/queries/use-pending-post-subscriptions-query.d.ts +75 -7
  158. package/dist/types/reader/queries/use-pending-post-subscriptions-query.d.ts.map +1 -1
  159. package/dist/types/reader/queries/use-pending-site-subscriptions-query.d.ts +75 -7
  160. package/dist/types/reader/queries/use-pending-site-subscriptions-query.d.ts.map +1 -1
  161. package/dist/types/reader/queries/use-post-subscriptions-query.d.ts +143 -13
  162. package/dist/types/reader/queries/use-post-subscriptions-query.d.ts.map +1 -1
  163. package/dist/types/reader/queries/use-site-subscriptions-query.d.ts +103 -13
  164. package/dist/types/reader/queries/use-site-subscriptions-query.d.ts.map +1 -1
  165. package/dist/types/site/actions.d.ts.map +1 -1
  166. package/dist/types/site/constants.d.ts +1 -0
  167. package/dist/types/site/constants.d.ts.map +1 -1
  168. package/dist/types/site/types.d.ts +12 -2
  169. package/dist/types/site/types.d.ts.map +1 -1
  170. package/dist/types/user/actions.d.ts +1 -1
  171. package/dist/types/user/reducer.d.ts +1 -1
  172. package/dist/types/user/resolvers.d.ts +2 -2
  173. package/dist/types/user/selectors.d.ts +2 -2
  174. package/dist/types/user/selectors.d.ts.map +1 -1
  175. package/dist/types/user/types.d.ts +2 -31
  176. package/dist/types/user/types.d.ts.map +1 -1
  177. package/package.json +28 -21
  178. package/src/add-ons/hooks/use-add-on-prices.ts +1 -1
  179. package/src/add-ons/icons/custom-design.tsx +3 -11
  180. package/src/add-ons/icons/unlimited-themes.tsx +3 -12
  181. package/src/contextual-help/admin-sections.ts +2 -2
  182. package/src/help-center/actions.ts +101 -65
  183. package/src/help-center/index.ts +10 -8
  184. package/src/help-center/reducer.ts +45 -24
  185. package/src/help-center/resolvers.ts +20 -3
  186. package/src/help-center/selectors.ts +6 -3
  187. package/src/help-center/types.ts +3 -1
  188. package/src/index.ts +6 -6
  189. package/src/newsletter-categories/test/index.tsx +5 -7
  190. package/src/onboard/actions.ts +11 -24
  191. package/src/onboard/index.ts +0 -1
  192. package/src/onboard/reducer.ts +18 -19
  193. package/src/onboard/selectors.ts +2 -2
  194. package/src/onboard/types.ts +1 -1
  195. package/src/plans/queries/use-plans.ts +29 -1
  196. package/src/plans/resolvers.ts +1 -1
  197. package/src/purchases/lib/assembler.ts +11 -21
  198. package/src/purchases/queries/lib/use-query-keys-factory.ts +1 -0
  199. package/src/purchases/queries/use-get-jetpack-transferred-license-purchases.tsx +43 -0
  200. package/src/purchases/types.ts +21 -113
  201. package/src/queries/use-launchpad.ts +2 -2
  202. package/src/queries/use-site-domains-query.ts +1 -0
  203. package/src/queries/use-site-intent.ts +2 -1
  204. package/src/reader/mutations/use-site-subscribe-mutation.ts +2 -2
  205. package/src/reader/mutations/use-site-unsubscribe-mutation.ts +7 -0
  206. package/src/reader/queries/test/use-read-feed-search-query.tsx +1 -1
  207. package/src/site/actions.ts +1 -1
  208. package/src/site/constants.ts +1 -0
  209. package/src/site/test/selectors.ts +0 -1
  210. package/src/site/types.ts +12 -2
  211. package/src/user/types.ts +2 -36
  212. package/dist/cjs/analyzer/actions.js +0 -38
  213. package/dist/cjs/analyzer/actions.js.map +0 -1
  214. package/dist/cjs/analyzer/constants.js +0 -5
  215. package/dist/cjs/analyzer/constants.js.map +0 -1
  216. package/dist/cjs/analyzer/index.js +0 -19
  217. package/dist/cjs/analyzer/index.js.map +0 -1
  218. package/dist/cjs/analyzer/reducers.js +0 -27
  219. package/dist/cjs/analyzer/reducers.js.map +0 -1
  220. package/dist/cjs/analyzer/selectors.js +0 -15
  221. package/dist/cjs/analyzer/selectors.js.map +0 -1
  222. package/dist/cjs/analyzer/types.js +0 -3
  223. package/dist/cjs/analyzer/types.js.map +0 -1
  224. package/dist/cjs/domain-suggestions/actions.js +0 -33
  225. package/dist/cjs/domain-suggestions/actions.js.map +0 -1
  226. package/dist/cjs/domain-suggestions/constants.js +0 -12
  227. package/dist/cjs/domain-suggestions/constants.js.map +0 -1
  228. package/dist/cjs/domain-suggestions/index.js +0 -25
  229. package/dist/cjs/domain-suggestions/index.js.map +0 -1
  230. package/dist/cjs/domain-suggestions/queries.js +0 -78
  231. package/dist/cjs/domain-suggestions/queries.js.map +0 -1
  232. package/dist/cjs/domain-suggestions/reducer.js +0 -65
  233. package/dist/cjs/domain-suggestions/reducer.js.map +0 -1
  234. package/dist/cjs/domain-suggestions/resolvers.js +0 -91
  235. package/dist/cjs/domain-suggestions/resolvers.js.map +0 -1
  236. package/dist/cjs/domain-suggestions/selectors.js +0 -58
  237. package/dist/cjs/domain-suggestions/selectors.js.map +0 -1
  238. package/dist/cjs/domain-suggestions/types.js +0 -3
  239. package/dist/cjs/domain-suggestions/types.js.map +0 -1
  240. package/dist/cjs/domain-suggestions/utils.js +0 -47
  241. package/dist/cjs/domain-suggestions/utils.js.map +0 -1
  242. package/dist/esm/analyzer/actions.js +0 -35
  243. package/dist/esm/analyzer/actions.js.map +0 -1
  244. package/dist/esm/analyzer/constants.js +0 -2
  245. package/dist/esm/analyzer/constants.js.map +0 -1
  246. package/dist/esm/analyzer/index.js +0 -15
  247. package/dist/esm/analyzer/index.js.map +0 -1
  248. package/dist/esm/analyzer/reducers.js +0 -25
  249. package/dist/esm/analyzer/reducers.js.map +0 -1
  250. package/dist/esm/analyzer/selectors.js +0 -9
  251. package/dist/esm/analyzer/selectors.js.map +0 -1
  252. package/dist/esm/analyzer/types.js +0 -2
  253. package/dist/esm/analyzer/types.js.map +0 -1
  254. package/dist/esm/domain-suggestions/actions.js +0 -25
  255. package/dist/esm/domain-suggestions/actions.js.map +0 -1
  256. package/dist/esm/domain-suggestions/constants.js +0 -9
  257. package/dist/esm/domain-suggestions/constants.js.map +0 -1
  258. package/dist/esm/domain-suggestions/index.js +0 -20
  259. package/dist/esm/domain-suggestions/index.js.map +0 -1
  260. package/dist/esm/domain-suggestions/queries.js +0 -72
  261. package/dist/esm/domain-suggestions/queries.js.map +0 -1
  262. package/dist/esm/domain-suggestions/reducer.js +0 -61
  263. package/dist/esm/domain-suggestions/reducer.js.map +0 -1
  264. package/dist/esm/domain-suggestions/resolvers.js +0 -84
  265. package/dist/esm/domain-suggestions/resolvers.js.map +0 -1
  266. package/dist/esm/domain-suggestions/selectors.js +0 -47
  267. package/dist/esm/domain-suggestions/selectors.js.map +0 -1
  268. package/dist/esm/domain-suggestions/types.js +0 -2
  269. package/dist/esm/domain-suggestions/types.js.map +0 -1
  270. package/dist/esm/domain-suggestions/utils.js +0 -41
  271. package/dist/esm/domain-suggestions/utils.js.map +0 -1
  272. package/dist/types/analyzer/actions.d.ts +0 -37
  273. package/dist/types/analyzer/actions.d.ts.map +0 -1
  274. package/dist/types/analyzer/constants.d.ts +0 -2
  275. package/dist/types/analyzer/constants.d.ts.map +0 -1
  276. package/dist/types/analyzer/index.d.ts +0 -38
  277. package/dist/types/analyzer/index.d.ts.map +0 -1
  278. package/dist/types/analyzer/reducers.d.ts +0 -11
  279. package/dist/types/analyzer/reducers.d.ts.map +0 -1
  280. package/dist/types/analyzer/selectors.d.ts +0 -7
  281. package/dist/types/analyzer/selectors.d.ts.map +0 -1
  282. package/dist/types/analyzer/types.d.ts +0 -35
  283. package/dist/types/analyzer/types.d.ts.map +0 -1
  284. package/dist/types/domain-suggestions/actions.d.ts +0 -27
  285. package/dist/types/domain-suggestions/actions.d.ts.map +0 -1
  286. package/dist/types/domain-suggestions/constants.d.ts +0 -8
  287. package/dist/types/domain-suggestions/constants.d.ts.map +0 -1
  288. package/dist/types/domain-suggestions/index.d.ts +0 -10
  289. package/dist/types/domain-suggestions/index.d.ts.map +0 -1
  290. package/dist/types/domain-suggestions/queries.d.ts +0 -323
  291. package/dist/types/domain-suggestions/queries.d.ts.map +0 -1
  292. package/dist/types/domain-suggestions/reducer.d.ts +0 -16
  293. package/dist/types/domain-suggestions/reducer.d.ts.map +0 -1
  294. package/dist/types/domain-suggestions/resolvers.d.ts +0 -39
  295. package/dist/types/domain-suggestions/resolvers.d.ts.map +0 -1
  296. package/dist/types/domain-suggestions/selectors.d.ts +0 -18
  297. package/dist/types/domain-suggestions/selectors.d.ts.map +0 -1
  298. package/dist/types/domain-suggestions/types.d.ts +0 -206
  299. package/dist/types/domain-suggestions/types.d.ts.map +0 -1
  300. package/dist/types/domain-suggestions/utils.d.ts +0 -23
  301. package/dist/types/domain-suggestions/utils.d.ts.map +0 -1
  302. package/src/analyzer/actions.ts +0 -49
  303. package/src/analyzer/constants.ts +0 -1
  304. package/src/analyzer/index.ts +0 -17
  305. package/src/analyzer/reducers.ts +0 -36
  306. package/src/analyzer/selectors.ts +0 -11
  307. package/src/analyzer/types.ts +0 -37
  308. package/src/domain-suggestions/actions.ts +0 -51
  309. package/src/domain-suggestions/constants.ts +0 -8
  310. package/src/domain-suggestions/index.ts +0 -22
  311. package/src/domain-suggestions/queries.ts +0 -85
  312. package/src/domain-suggestions/reducer.ts +0 -77
  313. package/src/domain-suggestions/resolvers.ts +0 -110
  314. package/src/domain-suggestions/selectors.ts +0 -86
  315. package/src/domain-suggestions/test/reducer.ts +0 -105
  316. package/src/domain-suggestions/test/selectors.ts +0 -127
  317. package/src/domain-suggestions/types.ts +0 -254
  318. package/src/domain-suggestions/utils.ts +0 -50
@@ -127,7 +127,7 @@ export function generateAdminSections(
127
127
  },
128
128
  {
129
129
  title: __( "View my site's latest stats" ),
130
- link: `/stats/day/${ siteSlug }`,
130
+ link: `https://${ siteSlug }/wp-admin/admin.php?page=stats`,
131
131
  synonyms: [ 'analytics' ],
132
132
  icon: 'stats-alt',
133
133
  },
@@ -390,7 +390,7 @@ export function generateAdminSections(
390
390
  },
391
391
  {
392
392
  title: __( 'View contact form messages', __i18n_text_domain__ ),
393
- link: `https://${ siteSlug }/wp-admin/edit.php?post_type=feedback&calypsoify=1`,
393
+ link: `https://${ siteSlug }/wp-admin/admin.php?page=jetpack-forms-admin`,
394
394
  synonyms: [ 'contact', 'form' ],
395
395
  icon: 'cog',
396
396
  },
@@ -1,11 +1,9 @@
1
1
  import { default as apiFetchPromise } from '@wordpress/api-fetch';
2
2
  import { select } from '@wordpress/data';
3
- import { apiFetch } from '@wordpress/data-controls';
4
3
  import { addQueryArgs } from '@wordpress/url';
5
4
  import { default as wpcomRequestPromise, canAccessWpcomApis } from 'wpcom-proxy-request';
6
5
  import { GeneratorReturnType } from '../mapped-types';
7
6
  import { SiteDetails } from '../site';
8
- import { wpcomRequest } from '../wpcom-request-controls';
9
7
  import { STORE_KEY } from './constants';
10
8
  import { isE2ETest } from '.';
11
9
  import type {
@@ -14,43 +12,53 @@ import type {
14
12
  HelpCenterSelect,
15
13
  HelpCenterShowOptions,
16
14
  } from './types';
17
- import type { SupportInteraction } from '@automattic/odie-client/src/types';
15
+ import type { Location } from 'history';
16
+
17
+ /**
18
+ * Save the open state of the help center to the remote user preferences.
19
+ * @param isShown - Whether the help center is shown.
20
+ * @param isMinimized - Whether the help center is minimized.
21
+ */
22
+ export const saveOpenState = ( isShown: boolean | undefined, isMinimized: boolean | undefined ) => {
23
+ const saveState: Record< string, boolean | null > = {};
24
+
25
+ if ( typeof isShown === 'boolean' ) {
26
+ saveState.help_center_open = isShown;
27
+ if ( ! isShown ) {
28
+ // Delete the remote version of the navigation history when closing the help center
29
+ saveState.help_center_router_history = null;
30
+ }
31
+ }
18
32
 
19
- export const receiveHasSeenWhatsNewModal = ( value: boolean | undefined ) =>
20
- ( {
21
- type: 'HELP_CENTER_SET_SEEN_WHATS_NEW_MODAL',
22
- value,
23
- } ) as const;
33
+ if ( typeof isMinimized === 'boolean' ) {
34
+ saveState.help_center_minimized = isMinimized;
35
+ }
24
36
 
25
- export function* setHasSeenWhatsNewModal( value: boolean ) {
26
- let response: {
27
- has_seen_whats_new_modal: boolean;
28
- };
29
37
  if ( canAccessWpcomApis() ) {
30
- response = yield wpcomRequest( {
31
- path: '/block-editor/has-seen-whats-new-modal',
38
+ // Use the promise version to do that action without waiting for the result.
39
+ wpcomRequestPromise( {
40
+ path: '/me/preferences',
32
41
  apiNamespace: 'wpcom/v2',
33
42
  method: 'PUT',
34
- body: {
35
- has_seen_whats_new_modal: value,
36
- },
37
- } );
43
+ body: { calypso_preferences: saveState },
44
+ } ).catch( () => {} );
38
45
  } else {
39
- response = yield apiFetch( {
46
+ // Use the promise version to do that action without waiting for the result.
47
+ apiFetchPromise( {
40
48
  global: true,
41
- path: '/wpcom/v2/block-editor/has-seen-whats-new-modal',
49
+ path: '/help-center/open-state',
42
50
  method: 'PUT',
43
- data: { has_seen_whats_new_modal: value },
44
- } as APIFetchOptions );
51
+ data: saveState,
52
+ } as APIFetchOptions ).catch( () => {} );
45
53
  }
54
+ };
46
55
 
47
- return receiveHasSeenWhatsNewModal( response.has_seen_whats_new_modal );
48
- }
49
-
50
- export function setCurrentSupportInteraction( supportInteraction: SupportInteraction ) {
56
+ export function setHelpCenterRouterHistory(
57
+ history: { entries: Location[]; index: number } | undefined
58
+ ) {
51
59
  return {
52
- type: 'HELP_CENTER_SET_CURRENT_SUPPORT_INTERACTION',
53
- supportInteraction,
60
+ type: 'HELP_CENTER_SET_HELP_CENTER_ROUTER_HISTORY',
61
+ history,
54
62
  } as const;
55
63
  }
56
64
 
@@ -78,11 +86,13 @@ export const setOdieBotNameSlug = ( odieBotNameSlug: string ) =>
78
86
  odieBotNameSlug,
79
87
  } ) as const;
80
88
 
81
- export const setIsMinimized = ( minimized: boolean ) =>
82
- ( {
89
+ export const setIsMinimized = function* ( minimized: boolean ) {
90
+ yield saveOpenState( undefined, minimized );
91
+ return {
83
92
  type: 'HELP_CENTER_SET_MINIMIZED',
84
93
  minimized,
85
- } ) as const;
94
+ } as const;
95
+ };
86
96
 
87
97
  export const setIsChatLoaded = ( isChatLoaded: boolean ) =>
88
98
  ( {
@@ -102,6 +112,21 @@ export const setZendeskClientId = ( zendeskClientId: string ) =>
102
112
  zendeskClientId,
103
113
  } ) as const;
104
114
 
115
+ export const setZendeskConnectionStatus = (
116
+ connectionStatus: 'disconnected' | 'reconnecting' | 'connected'
117
+ ) =>
118
+ ( {
119
+ type: 'HELP_CENTER_SET_ZENDESK_CONNECTION_STATUS',
120
+ connectionStatus,
121
+ } ) as const;
122
+
123
+ export const setSupportTypingStatus = ( conversationId: string, isTyping: false ) =>
124
+ ( {
125
+ type: 'HELP_CENTER_SET_TYPING_STATUS',
126
+ conversationId,
127
+ isTyping,
128
+ } ) as const;
129
+
105
130
  export const setShowMessagingLauncher = ( show: boolean ) =>
106
131
  ( {
107
132
  type: 'HELP_CENTER_SET_SHOW_MESSAGING_LAUNCHER',
@@ -120,9 +145,15 @@ export const setMessage = ( message: string ) =>
120
145
  message,
121
146
  } ) as const;
122
147
 
123
- export const setAllowPremiumSupport = ( allow: boolean ) =>
148
+ export const setContextTerm = ( contextTerm: string ) =>
124
149
  ( {
125
- type: 'HELP_CENTER_SET_ALLOW_PREMIUM_SUPPORT',
150
+ type: 'HELP_CENTER_SET_CONTEXT_TERM',
151
+ contextTerm,
152
+ } ) as const;
153
+
154
+ export const setHasPremiumSupport = ( allow: boolean ) =>
155
+ ( {
156
+ type: 'HELP_CENTER_SET_HAS_PREMIUM_SUPPORT',
126
157
  allow,
127
158
  } ) as const;
128
159
 
@@ -133,13 +164,24 @@ export const setHelpCenterOptions = ( options: HelpCenterOptions ) => ( {
133
164
 
134
165
  export const setShowHelpCenter = function* (
135
166
  show: boolean,
136
- allowPremiumSupport = false,
137
- options: HelpCenterShowOptions = { hideBackButton: false, searchTerm: '' }
167
+ options: HelpCenterShowOptions = {
168
+ hasPremiumSupport: false,
169
+ hideBackButton: false,
170
+ contextTerm: '',
171
+ },
172
+ /**
173
+ * When the Help Center is minimized and someone clicks the (?) toggle button, we should maximize it.
174
+ * But this means ignoring the `show=false` value the button will send. The problem is we'll also ignore the `show=false` when the close (x) buttons is clicked too.
175
+ * `forceClose` listens to the show value always. Which the (x) button sets to true.
176
+ */
177
+ forceClose = false
138
178
  ): Generator< unknown, { type: 'HELP_CENTER_SET_SHOW'; show: boolean }, unknown > {
139
- const isMinimized = ( select( STORE_KEY ) as HelpCenterSelect ).getIsMinimized();
179
+ let isMinimized = ( select( STORE_KEY ) as HelpCenterSelect ).getIsMinimized();
140
180
 
141
- if ( ! show && isMinimized ) {
181
+ // Opening or closing the Help Center should reset the minimized state.
182
+ if ( ! show && ! forceClose && isMinimized ) {
142
183
  yield setIsMinimized( false );
184
+ isMinimized = false;
143
185
 
144
186
  return {
145
187
  type: 'HELP_CENTER_SET_SHOW',
@@ -148,41 +190,25 @@ export const setShowHelpCenter = function* (
148
190
  }
149
191
 
150
192
  if ( ! isE2ETest() ) {
151
- if ( canAccessWpcomApis() ) {
152
- // Use the promise version to do that action without waiting for the result.
153
- wpcomRequestPromise( {
154
- path: '/me/preferences',
155
- apiNamespace: 'wpcom/v2',
156
- method: 'PUT',
157
- body: {
158
- calypso_preferences: { help_center_open: show },
159
- },
160
- } ).catch( () => {} );
161
- } else {
162
- // Use the promise version to do that action without waiting for the result.
163
- apiFetchPromise( {
164
- global: true,
165
- path: '/help-center/open-state',
166
- method: 'PUT',
167
- data: { help_center_open: show },
168
- } as APIFetchOptions ).catch( () => {} );
169
- }
193
+ saveOpenState( show, isMinimized );
170
194
  }
171
195
 
172
196
  if ( ! show ) {
173
197
  yield setNavigateToRoute( undefined );
198
+ // Reset the local navigation history when closing the help center.
199
+ yield setHelpCenterRouterHistory( undefined );
174
200
  } else {
175
201
  yield setShowMessagingWidget( false );
176
202
  }
177
203
 
178
- yield setMessage( options?.searchTerm || '' );
204
+ yield setContextTerm( options?.contextTerm || '' );
179
205
  yield setIsMinimized( false );
180
206
 
181
- if ( allowPremiumSupport ) {
182
- yield setAllowPremiumSupport( true );
207
+ if ( options?.hasPremiumSupport ) {
208
+ yield setHasPremiumSupport( true );
183
209
  }
184
210
 
185
- if ( options?.hideBackButton ) {
211
+ if ( options ) {
186
212
  yield setHelpCenterOptions( options );
187
213
  }
188
214
 
@@ -220,11 +246,13 @@ export const setNewMessagingChat = function* ( {
220
246
  section,
221
247
  siteUrl,
222
248
  siteId,
249
+ userFieldFlowName,
223
250
  }: {
224
251
  initialMessage: string;
225
252
  section?: string;
226
253
  siteUrl?: string;
227
254
  siteId?: string;
255
+ userFieldFlowName?: string;
228
256
  } ) {
229
257
  const url = addQueryArgs( '/odie', {
230
258
  provider: 'zendesk',
@@ -232,11 +260,17 @@ export const setNewMessagingChat = function* ( {
232
260
  section,
233
261
  siteUrl,
234
262
  siteId,
263
+ userFieldFlowName,
235
264
  } );
236
265
  yield setNavigateToRoute( url );
237
266
  yield setShowHelpCenter( true );
238
267
  };
239
268
 
269
+ export const setNavigateToOdie = function* () {
270
+ yield setNavigateToRoute( '/odie' );
271
+ yield setShowHelpCenter( true );
272
+ };
273
+
240
274
  export const setShowSupportDoc = function* ( link: string, postId?: number, blogId?: number ) {
241
275
  const params = new URLSearchParams( {
242
276
  link,
@@ -255,20 +289,22 @@ export type HelpCenterAction =
255
289
  | typeof setShowMessagingWidget
256
290
  | typeof setSubject
257
291
  | typeof resetStore
258
- | typeof receiveHasSeenWhatsNewModal
259
292
  | typeof setMessage
293
+ | typeof setContextTerm
260
294
  | typeof setUserDeclaredSite
261
295
  | typeof setUserDeclaredSiteUrl
262
296
  | typeof setUnreadCount
263
- | typeof setIsMinimized
297
+ | typeof setHelpCenterRouterHistory
264
298
  | typeof setIsChatLoaded
265
299
  | typeof setAreSoundNotificationsEnabled
266
300
  | typeof setZendeskClientId
301
+ | typeof setSupportTypingStatus
302
+ | typeof setZendeskConnectionStatus
267
303
  | typeof setNavigateToRoute
268
304
  | typeof setOdieInitialPromptText
269
305
  | typeof setOdieBotNameSlug
270
- | typeof setCurrentSupportInteraction
271
- | typeof setAllowPremiumSupport
306
+ | typeof setHasPremiumSupport
272
307
  | typeof setHelpCenterOptions
273
308
  >
274
- | GeneratorReturnType< typeof setShowHelpCenter | typeof setHasSeenWhatsNewModal >;
309
+ | GeneratorReturnType< typeof setShowHelpCenter >
310
+ | GeneratorReturnType< typeof setIsMinimized >;
@@ -9,7 +9,9 @@ import { isHelpCenterShown } from './resolvers';
9
9
  import * as selectors from './selectors';
10
10
  export type { State };
11
11
 
12
- declare const helpCenterData: { isProxied: boolean } | undefined;
12
+ declare const helpCenterData: { isProxied: boolean; isSU: boolean; isSSP: boolean } | undefined;
13
+ declare const isSupportSession: boolean;
14
+ declare const isSSP: boolean;
13
15
 
14
16
  let isRegistered = false;
15
17
 
@@ -19,10 +21,9 @@ const E2E_USER_AGENT = 'wp-e2e-tests';
19
21
  export const isE2ETest = () =>
20
22
  typeof window !== 'undefined' && window.navigator.userAgent.includes( E2E_USER_AGENT );
21
23
 
22
- export const isSupportSession = () => {
24
+ export const isInSupportSession = () => {
23
25
  if ( typeof window !== 'undefined' ) {
24
26
  return (
25
- 'disableHelpCenterAutoOpen' in window ||
26
27
  // A bit hacky but much easier than passing down data from PHP in Jetpack
27
28
  // Simple
28
29
  !! document.querySelector( '#wp-admin-bar-support-session-details' ) ||
@@ -30,16 +31,17 @@ export const isSupportSession = () => {
30
31
  // Atomic
31
32
  document.body.classList.contains( 'support-session' ) ||
32
33
  document.querySelector( '#wpcom > .is-support-session' ) ||
33
- // Our failover last hope, don't re-open when proxied.
34
- // This is not the same `window.helpCenterData`, because it's defined as `const helpCenterData`
35
- ( typeof helpCenterData !== 'undefined' && helpCenterData?.isProxied )
34
+ ( typeof isSupportSession !== 'undefined' && !! isSupportSession ) ||
35
+ ( typeof helpCenterData !== 'undefined' && helpCenterData?.isSU ) ||
36
+ ( typeof helpCenterData !== 'undefined' && helpCenterData?.isSSP ) ||
37
+ ( typeof isSSP !== 'undefined' && !! isSSP )
36
38
  );
37
39
  }
38
40
  return false;
39
41
  };
40
42
 
41
43
  export function register(): typeof STORE_KEY {
42
- const enabledPesistedOpenState = ! isE2ETest() && ! isSupportSession();
44
+ const enabledPersistedOpenState = ! isE2ETest() && ! isInSupportSession();
43
45
 
44
46
  registerPlugins();
45
47
 
@@ -51,7 +53,7 @@ export function register(): typeof STORE_KEY {
51
53
  selectors,
52
54
  persist: [ 'message', 'userDeclaredSite', 'userDeclaredSiteUrl', 'subject' ],
53
55
  // Don't persist the open state for e2e users, because parallel tests will start interfering with each other.
54
- resolvers: enabledPesistedOpenState ? { isHelpCenterShown } : undefined,
56
+ resolvers: enabledPersistedOpenState ? { isHelpCenterShown } : undefined,
55
57
  } );
56
58
  isRegistered = true;
57
59
  }
@@ -2,7 +2,7 @@ import { combineReducers } from '@wordpress/data';
2
2
  import { SiteDetails } from '../site';
3
3
  import type { HelpCenterAction } from './actions';
4
4
  import type { HelpCenterOptions } from './types';
5
- import type { SupportInteraction } from '@automattic/odie-client/src/types';
5
+ import type { Location } from 'history';
6
6
  import type { Reducer } from 'redux';
7
7
 
8
8
  const showHelpCenter: Reducer< boolean | undefined, HelpCenterAction > = ( state, action ) => {
@@ -13,42 +13,54 @@ const showHelpCenter: Reducer< boolean | undefined, HelpCenterAction > = ( state
13
13
  return state;
14
14
  };
15
15
 
16
- const showMessagingLauncher: Reducer< boolean | undefined, HelpCenterAction > = (
17
- state,
18
- action
19
- ) => {
16
+ const typingConversationStatus: Reducer<
17
+ Record< string, boolean > | undefined,
18
+ HelpCenterAction
19
+ > = ( state = undefined, action ) => {
20
20
  switch ( action.type ) {
21
- case 'HELP_CENTER_SET_SHOW_MESSAGING_LAUNCHER':
22
- return action.show;
21
+ case 'HELP_CENTER_SET_TYPING_STATUS':
22
+ return { ...state, [ action.conversationId ]: action.isTyping };
23
23
  }
24
24
  return state;
25
25
  };
26
26
 
27
- const showMessagingWidget: Reducer< boolean | undefined, HelpCenterAction > = ( state, action ) => {
27
+ const zendeskConnectionStatus: Reducer<
28
+ 'disconnected' | 'reconnecting' | 'connected' | undefined,
29
+ HelpCenterAction
30
+ > = ( state = undefined, action ) => {
28
31
  switch ( action.type ) {
29
- case 'HELP_CENTER_SET_SHOW_MESSAGING_WIDGET':
30
- return action.show;
32
+ case 'HELP_CENTER_SET_ZENDESK_CONNECTION_STATUS':
33
+ return action.connectionStatus;
31
34
  }
32
35
  return state;
33
36
  };
34
37
 
35
- const hasSeenWhatsNewModal: Reducer< boolean | undefined, HelpCenterAction > = (
38
+ const showMessagingLauncher: Reducer< boolean | undefined, HelpCenterAction > = (
36
39
  state,
37
40
  action
38
41
  ) => {
39
42
  switch ( action.type ) {
40
- case 'HELP_CENTER_SET_SEEN_WHATS_NEW_MODAL':
41
- return action.value;
43
+ case 'HELP_CENTER_SET_SHOW_MESSAGING_LAUNCHER':
44
+ return action.show;
42
45
  }
43
46
  return state;
44
47
  };
45
48
 
46
- const currentSupportInteraction: Reducer< SupportInteraction | undefined, HelpCenterAction > = (
47
- state,
48
- action
49
- ) => {
50
- if ( action.type === 'HELP_CENTER_SET_CURRENT_SUPPORT_INTERACTION' ) {
51
- return action.supportInteraction;
49
+ const helpCenterRouterHistory: Reducer<
50
+ { entries: Location[]; index: number } | undefined,
51
+ HelpCenterAction
52
+ > = ( state, action ) => {
53
+ switch ( action.type ) {
54
+ case 'HELP_CENTER_SET_HELP_CENTER_ROUTER_HISTORY':
55
+ return action.history;
56
+ }
57
+ return state;
58
+ };
59
+
60
+ const showMessagingWidget: Reducer< boolean | undefined, HelpCenterAction > = ( state, action ) => {
61
+ switch ( action.type ) {
62
+ case 'HELP_CENTER_SET_SHOW_MESSAGING_WIDGET':
63
+ return action.show;
52
64
  }
53
65
  return state;
54
66
  };
@@ -160,14 +172,21 @@ const odieBotNameSlug: Reducer< string | undefined, HelpCenterAction > = ( state
160
172
  return state;
161
173
  };
162
174
 
163
- const allowPremiumSupport: Reducer< boolean, HelpCenterAction > = ( state = false, action ) => {
175
+ const hasPremiumSupport: Reducer< boolean, HelpCenterAction > = ( state = false, action ) => {
164
176
  switch ( action.type ) {
165
- case 'HELP_CENTER_SET_ALLOW_PREMIUM_SUPPORT':
177
+ case 'HELP_CENTER_SET_HAS_PREMIUM_SUPPORT':
166
178
  return action.allow;
167
179
  }
168
180
  return state;
169
181
  };
170
182
 
183
+ const contextTerm: Reducer< string | undefined, HelpCenterAction > = ( state, action ) => {
184
+ if ( action.type === 'HELP_CENTER_SET_CONTEXT_TERM' ) {
185
+ return action.contextTerm;
186
+ }
187
+ return state;
188
+ };
189
+
171
190
  const helpCenterOptions: Reducer< HelpCenterOptions, HelpCenterAction > = (
172
191
  state = {},
173
192
  action
@@ -179,24 +198,26 @@ const helpCenterOptions: Reducer< HelpCenterOptions, HelpCenterAction > = (
179
198
  };
180
199
 
181
200
  const reducer = combineReducers( {
182
- currentSupportInteraction,
183
201
  showHelpCenter,
184
202
  showMessagingLauncher,
185
203
  showMessagingWidget,
204
+ zendeskConnectionStatus,
186
205
  subject,
187
206
  message,
188
207
  userDeclaredSite,
189
208
  userDeclaredSiteUrl,
190
- hasSeenWhatsNewModal,
191
209
  isMinimized,
192
210
  isChatLoaded,
211
+ typingConversationStatus,
193
212
  areSoundNotificationsEnabled,
194
213
  zendeskClientId,
195
214
  unreadCount,
196
215
  navigateToRoute,
197
216
  odieInitialPromptText,
198
217
  odieBotNameSlug,
199
- allowPremiumSupport,
218
+ helpCenterRouterHistory,
219
+ hasPremiumSupport,
220
+ contextTerm,
200
221
  helpCenterOptions,
201
222
  } );
202
223
 
@@ -1,13 +1,24 @@
1
1
  import { apiFetch } from '@wordpress/data-controls';
2
2
  import { canAccessWpcomApis } from 'wpcom-proxy-request';
3
3
  import { wpcomRequest } from '../wpcom-request-controls';
4
+ import { setHelpCenterRouterHistory, setIsMinimized } from './actions';
4
5
  import type { APIFetchOptions } from './types';
6
+ import type { Location } from 'history';
7
+
8
+ type Preferences = {
9
+ calypso_preferences: {
10
+ help_center_open: boolean;
11
+ help_center_minimized: boolean;
12
+ help_center_router_history: {
13
+ entries: Location[];
14
+ index: number;
15
+ };
16
+ };
17
+ };
5
18
 
6
19
  export function* isHelpCenterShown() {
7
20
  try {
8
- const preferences: {
9
- help_center_open: boolean;
10
- } = canAccessWpcomApis()
21
+ const { calypso_preferences: preferences }: Preferences = canAccessWpcomApis()
11
22
  ? yield wpcomRequest( {
12
23
  path: '/me/preferences',
13
24
  apiNamespace: 'wpcom/v2',
@@ -17,6 +28,12 @@ export function* isHelpCenterShown() {
17
28
  path: '/help-center/open-state',
18
29
  } as APIFetchOptions );
19
30
 
31
+ if ( preferences.help_center_router_history ) {
32
+ yield setHelpCenterRouterHistory( preferences.help_center_router_history );
33
+ }
34
+
35
+ yield setIsMinimized( preferences.help_center_minimized );
36
+
20
37
  // We only want to auto-open, we don't want to auto-close (and potentially overrule the user's action).
21
38
  if ( preferences.help_center_open ) {
22
39
  return {
@@ -8,15 +8,18 @@ export const getMessage = ( state: State ) => state.message;
8
8
  export const getUserDeclaredSiteUrl = ( state: State ) => state.userDeclaredSiteUrl;
9
9
  export const getUserDeclaredSite = ( state: State ) => state.userDeclaredSite;
10
10
  export const getUnreadCount = ( state: State ) => state.unreadCount;
11
+ export const getZendeskConnectionStatus = ( state: State ) => state.zendeskConnectionStatus;
11
12
  export const getIsMinimized = ( state: State ) => state.isMinimized;
12
13
  export const getIsChatLoaded = ( state: State ) => state.isChatLoaded;
13
14
  export const getAreSoundNotificationsEnabled = ( state: State ) =>
14
15
  state.areSoundNotificationsEnabled;
15
16
  export const getZendeskClientId = ( state: State ) => state.zendeskClientId;
16
- export const getHasSeenWhatsNewModal = ( state: State ) => state.hasSeenWhatsNewModal;
17
+ export const getHelpCenterRouterHistory = ( state: State ) => state.helpCenterRouterHistory;
17
18
  export const getNavigateToRoute = ( state: State ) => state.navigateToRoute;
18
19
  export const getOdieInitialPromptText = ( state: State ) => state.odieInitialPromptText;
19
20
  export const getOdieBotNameSlug = ( state: State ) => state.odieBotNameSlug;
20
- export const getCurrentSupportInteraction = ( state: State ) => state.currentSupportInteraction;
21
- export const getAllowPremiumSupport = ( state: State ) => state.allowPremiumSupport;
21
+ export const getHasPremiumSupport = ( state: State ) => state.hasPremiumSupport;
22
22
  export const getHelpCenterOptions = ( state: State ) => state.helpCenterOptions;
23
+ export const getContextTerm = ( state: State ) => state.contextTerm;
24
+ export const getSupportTypingStatus = ( state: State, conversationId: string ) =>
25
+ state.typingConversationStatus?.[ conversationId ];
@@ -10,8 +10,9 @@ export type Location = {
10
10
  key?: string;
11
11
  };
12
12
  export interface HelpCenterShowOptions {
13
+ hasPremiumSupport: boolean;
13
14
  hideBackButton: boolean;
14
- searchTerm: string;
15
+ contextTerm: string;
15
16
  }
16
17
  export interface SiteLogo {
17
18
  id: number;
@@ -32,6 +33,7 @@ export interface HelpCenterSite {
32
33
  is_wpcom_atomic: boolean;
33
34
  jetpack: boolean;
34
35
  logo: SiteLogo;
36
+ site_owner: number;
35
37
  options: {
36
38
  launchpad_screen: string;
37
39
  site_intent: string;
package/src/index.ts CHANGED
@@ -1,6 +1,4 @@
1
1
  import * as AddOns from './add-ons';
2
- import * as Analyzer from './analyzer';
3
- import * as DomainSuggestions from './domain-suggestions';
4
2
  import * as HelpCenter from './help-center';
5
3
  import * as Onboard from './onboard';
6
4
  import * as Plans from './plans';
@@ -20,7 +18,6 @@ export * from './starter-designs-queries';
20
18
  export * from './site/types';
21
19
  export * from './templates';
22
20
  export * from './onboard/types';
23
- export * from './domain-suggestions/types';
24
21
  export * from './plans/types';
25
22
  export * from './theme';
26
23
  export * from './user/types';
@@ -38,9 +35,7 @@ const { SubscriptionManager } = Reader;
38
35
 
39
36
  export {
40
37
  AddOns,
41
- Analyzer,
42
38
  User,
43
- DomainSuggestions,
44
39
  HelpCenter,
45
40
  Site,
46
41
  Plans,
@@ -63,9 +58,14 @@ export type { Section } from './contextual-help/contextual-help';
63
58
  export { generateAdminSections } from './contextual-help/admin-sections';
64
59
  export type { LinksForSection } from './contextual-help/contextual-help';
65
60
  export * from './contextual-help/constants';
66
- export type { HelpCenterSite, HelpCenterSelect } from './help-center/types';
61
+ export type {
62
+ HelpCenterSite,
63
+ HelpCenterSelect,
64
+ Dispatch as HelpCenterDispatch,
65
+ } from './help-center/types';
67
66
  export type { OnboardSelect, OnboardActions } from './onboard';
68
67
  export type { StepperInternalSelect } from './stepper-internal';
69
68
  export type { SiteActions } from './site';
70
69
  export type { UserActions } from './user';
71
70
  export type { Member, UseQuery, UsersQuery } from './users/types';
71
+ export { isInSupportSession } from './help-center';
@@ -14,7 +14,7 @@ describe( 'useNewsletterCategories', () => {
14
14
  let wrapper: React.FC< { children: React.ReactNode } >;
15
15
 
16
16
  beforeEach( () => {
17
- ( request as jest.MockedFunction< typeof request > ).mockReset();
17
+ jest.mocked( request ).mockReset();
18
18
 
19
19
  queryClient = new QueryClient( {
20
20
  defaultOptions: {
@@ -34,7 +34,7 @@ describe( 'useNewsletterCategories', () => {
34
34
  } );
35
35
 
36
36
  it( 'should return expected data when successful', async () => {
37
- ( request as jest.MockedFunction< typeof request > ).mockResolvedValue( {
37
+ jest.mocked( request ).mockResolvedValue( {
38
38
  enabled: true,
39
39
  newsletter_categories: [
40
40
  { id: 1, name: 'Category 1', slug: 'Slug 1', description: 'Description 1', parent: 1 },
@@ -56,7 +56,7 @@ describe( 'useNewsletterCategories', () => {
56
56
  } );
57
57
 
58
58
  it( 'should handle empty response', async () => {
59
- ( request as jest.MockedFunction< typeof request > ).mockResolvedValue( {
59
+ jest.mocked( request ).mockResolvedValue( {
60
60
  enabled: false,
61
61
  newsletter_categories: [],
62
62
  } );
@@ -69,7 +69,7 @@ describe( 'useNewsletterCategories', () => {
69
69
  } );
70
70
 
71
71
  it( 'should call request with correct arguments', async () => {
72
- ( request as jest.MockedFunction< typeof request > ).mockResolvedValue( {
72
+ jest.mocked( request ).mockResolvedValue( {
73
73
  enabled: true,
74
74
  newsletter_categories: [],
75
75
  } );
@@ -88,9 +88,7 @@ describe( 'useNewsletterCategories', () => {
88
88
 
89
89
  it( 'should handle error response', async () => {
90
90
  const errorMessage = 'API Error';
91
- ( request as jest.MockedFunction< typeof request > ).mockRejectedValue(
92
- new Error( errorMessage )
93
- );
91
+ jest.mocked( request ).mockRejectedValue( new Error( errorMessage ) );
94
92
 
95
93
  const { result } = renderHook( () => useNewsletterCategories( { siteId: 123 } ), { wrapper } );
96
94