@automattic/data-stores 3.1.2 → 3.2.1

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 (601) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/cjs/agents-manager/actions.js +116 -0
  3. package/dist/cjs/agents-manager/actions.js.map +1 -0
  4. package/dist/cjs/agents-manager/constants.js +5 -0
  5. package/dist/cjs/agents-manager/constants.js.map +1 -0
  6. package/dist/cjs/agents-manager/index.js +37 -0
  7. package/dist/cjs/agents-manager/index.js.map +1 -0
  8. package/dist/cjs/agents-manager/persist-state.js +58 -0
  9. package/dist/cjs/agents-manager/persist-state.js.map +1 -0
  10. package/dist/cjs/agents-manager/reducer.js +87 -0
  11. package/dist/cjs/agents-manager/reducer.js.map +1 -0
  12. package/dist/cjs/agents-manager/resolvers.js +60 -0
  13. package/dist/cjs/agents-manager/resolvers.js.map +1 -0
  14. package/dist/cjs/agents-manager/selectors.js +44 -0
  15. package/dist/cjs/agents-manager/selectors.js.map +1 -0
  16. package/dist/cjs/{domain-suggestions → agents-manager}/types.js.map +1 -1
  17. package/dist/cjs/contextual-help/admin-sections.js +2 -2
  18. package/dist/cjs/contextual-help/admin-sections.js.map +1 -1
  19. package/dist/cjs/help-center/actions.js +103 -69
  20. package/dist/cjs/help-center/actions.js.map +1 -1
  21. package/dist/cjs/help-center/constants.js +2 -1
  22. package/dist/cjs/help-center/constants.js.map +1 -1
  23. package/dist/cjs/help-center/index.js +14 -27
  24. package/dist/cjs/help-center/index.js.map +1 -1
  25. package/dist/cjs/help-center/reducer.js +36 -12
  26. package/dist/cjs/help-center/reducer.js.map +1 -1
  27. package/dist/cjs/help-center/resolvers.js +45 -24
  28. package/dist/cjs/help-center/resolvers.js.map +1 -1
  29. package/dist/cjs/help-center/selectors.js +13 -5
  30. package/dist/cjs/help-center/selectors.js.map +1 -1
  31. package/dist/cjs/help-center/utils.js +136 -0
  32. package/dist/cjs/help-center/utils.js.map +1 -0
  33. package/dist/cjs/index.js +8 -6
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/cjs/mutations/use-domains-bulk-actions-mutation.js +3 -3
  36. package/dist/cjs/mutations/use-domains-bulk-actions-mutation.js.map +1 -1
  37. package/dist/cjs/newsletter-categories/index.js +2 -2
  38. package/dist/cjs/newsletter-categories/index.js.map +1 -1
  39. package/dist/cjs/onboard/actions.js +16 -1
  40. package/dist/cjs/onboard/actions.js.map +1 -1
  41. package/dist/cjs/onboard/reducer.js +34 -1
  42. package/dist/cjs/onboard/reducer.js.map +1 -1
  43. package/dist/cjs/onboard/selectors.js +7 -1
  44. package/dist/cjs/onboard/selectors.js.map +1 -1
  45. package/dist/cjs/plans/constants.js +3 -1
  46. package/dist/cjs/plans/constants.js.map +1 -1
  47. package/dist/cjs/plans/hooks/use-pricing-meta-for-grid-plans.js +35 -18
  48. package/dist/cjs/plans/hooks/use-pricing-meta-for-grid-plans.js.map +1 -1
  49. package/dist/cjs/plans/index.js +2 -1
  50. package/dist/cjs/plans/index.js.map +1 -1
  51. package/dist/cjs/plans/queries/use-plans.js +21 -2
  52. package/dist/cjs/plans/queries/use-plans.js.map +1 -1
  53. package/dist/cjs/plans/queries/use-site-plans.js +2 -2
  54. package/dist/cjs/plans/queries/use-site-plans.js.map +1 -1
  55. package/dist/cjs/plans/resolvers.js +0 -1
  56. package/dist/cjs/plans/resolvers.js.map +1 -1
  57. package/dist/cjs/plans/selectors.js.map +1 -1
  58. package/dist/cjs/products-list/queries/use-products.js +2 -2
  59. package/dist/cjs/products-list/queries/use-products.js.map +1 -1
  60. package/dist/cjs/products-list/resolvers.js +2 -2
  61. package/dist/cjs/products-list/resolvers.js.map +1 -1
  62. package/dist/cjs/purchases/lib/assembler.js +15 -20
  63. package/dist/cjs/purchases/lib/assembler.js.map +1 -1
  64. package/dist/cjs/purchases/queries/use-get-jetpack-transferred-license-purchases.js +2 -2
  65. package/dist/cjs/purchases/queries/use-get-jetpack-transferred-license-purchases.js.map +1 -1
  66. package/dist/cjs/purchases/queries/use-site-purchases.js +3 -3
  67. package/dist/cjs/purchases/queries/use-site-purchases.js.map +1 -1
  68. package/dist/cjs/queries/use-all-domains-query.js +2 -2
  69. package/dist/cjs/queries/use-all-domains-query.js.map +1 -1
  70. package/dist/cjs/queries/use-bulk-domain-update-status-query.js +3 -57
  71. package/dist/cjs/queries/use-bulk-domain-update-status-query.js.map +1 -1
  72. package/dist/cjs/queries/use-happiness-engineers-query.js +2 -2
  73. package/dist/cjs/queries/use-happiness-engineers-query.js.map +1 -1
  74. package/dist/cjs/queries/use-launchpad.js +5 -5
  75. package/dist/cjs/queries/use-launchpad.js.map +1 -1
  76. package/dist/cjs/queries/use-site-domains-query.js +2 -2
  77. package/dist/cjs/queries/use-site-domains-query.js.map +1 -1
  78. package/dist/cjs/queries/use-site-intent.js +2 -2
  79. package/dist/cjs/queries/use-site-intent.js.map +1 -1
  80. package/dist/cjs/queries/use-site-query.js +2 -2
  81. package/dist/cjs/queries/use-site-query.js.map +1 -1
  82. package/dist/cjs/reader/contexts/index.js +1 -4
  83. package/dist/cjs/reader/contexts/index.js.map +1 -1
  84. package/dist/cjs/reader/helpers/index.js +4 -3
  85. package/dist/cjs/reader/helpers/index.js.map +1 -1
  86. package/dist/cjs/reader/helpers/optimistic-update.js +2 -1
  87. package/dist/cjs/reader/helpers/optimistic-update.js.map +1 -1
  88. package/dist/cjs/reader/index.js +2 -8
  89. package/dist/cjs/reader/index.js.map +1 -1
  90. package/dist/cjs/reader/mutations/use-pending-site-confirm-mutation.js +2 -2
  91. package/dist/cjs/reader/mutations/use-pending-site-confirm-mutation.js.map +1 -1
  92. package/dist/cjs/reader/mutations/use-site-delivery-frequency-mutation.js +26 -20
  93. package/dist/cjs/reader/mutations/use-site-delivery-frequency-mutation.js.map +1 -1
  94. package/dist/cjs/reader/mutations/use-site-email-me-new-comments-mutation.js +4 -3
  95. package/dist/cjs/reader/mutations/use-site-email-me-new-comments-mutation.js.map +1 -1
  96. package/dist/cjs/reader/mutations/use-site-email-me-new-posts-mutation.js +4 -3
  97. package/dist/cjs/reader/mutations/use-site-email-me-new-posts-mutation.js.map +1 -1
  98. package/dist/cjs/reader/mutations/use-site-notify-me-of-new-posts-mutation.js +4 -3
  99. package/dist/cjs/reader/mutations/use-site-notify-me-of-new-posts-mutation.js.map +1 -1
  100. package/dist/cjs/reader/mutations/use-site-subscribe-mutation.js +10 -4
  101. package/dist/cjs/reader/mutations/use-site-subscribe-mutation.js.map +1 -1
  102. package/dist/cjs/reader/mutations/use-site-unsubscribe-mutation.js +11 -4
  103. package/dist/cjs/reader/mutations/use-site-unsubscribe-mutation.js.map +1 -1
  104. package/dist/cjs/reader/queries/index.js +2 -8
  105. package/dist/cjs/reader/queries/index.js.map +1 -1
  106. package/dist/cjs/reader/queries/use-site-subscriptions-query.js +27 -26
  107. package/dist/cjs/reader/queries/use-site-subscriptions-query.js.map +1 -1
  108. package/dist/cjs/site/queries/use-site-features.js +2 -2
  109. package/dist/cjs/site/queries/use-site-features.js.map +1 -1
  110. package/dist/cjs/site/queries/use-site-media-storage.js +2 -2
  111. package/dist/cjs/site/queries/use-site-media-storage.js.map +1 -1
  112. package/dist/cjs/site/queries/use-site-user-query.js +2 -2
  113. package/dist/cjs/site/queries/use-site-user-query.js.map +1 -1
  114. package/dist/cjs/site/queries/use-site.js +2 -2
  115. package/dist/cjs/site/queries/use-site.js.map +1 -1
  116. package/dist/cjs/site/resolvers.js +5 -5
  117. package/dist/cjs/site/resolvers.js.map +1 -1
  118. package/dist/cjs/site/selectors.js +5 -3
  119. package/dist/cjs/site/selectors.js.map +1 -1
  120. package/dist/cjs/site/types.js.map +1 -1
  121. package/dist/cjs/site-reset/use-site-reset-content-summary-query.js +2 -2
  122. package/dist/cjs/site-reset/use-site-reset-content-summary-query.js.map +1 -1
  123. package/dist/cjs/site-reset/use-site-reset-mutation.js +2 -2
  124. package/dist/cjs/site-reset/use-site-reset-mutation.js.map +1 -1
  125. package/dist/cjs/site-reset/use-site-reset-status-query.js +2 -2
  126. package/dist/cjs/site-reset/use-site-reset-status-query.js.map +1 -1
  127. package/dist/cjs/starter-designs-queries/use-starter-design-by-slug.js +2 -2
  128. package/dist/cjs/starter-designs-queries/use-starter-design-by-slug.js.map +1 -1
  129. package/dist/cjs/starter-designs-queries/use-starter-designs-query.js +2 -2
  130. package/dist/cjs/starter-designs-queries/use-starter-designs-query.js.map +1 -1
  131. package/dist/cjs/subscriber/actions.js +5 -5
  132. package/dist/cjs/subscriber/actions.js.map +1 -1
  133. package/dist/cjs/templates/use-template.js +2 -2
  134. package/dist/cjs/templates/use-template.js.map +1 -1
  135. package/dist/cjs/users/use-send-invites.js +2 -2
  136. package/dist/cjs/users/use-send-invites.js.map +1 -1
  137. package/dist/cjs/utils.js +26 -0
  138. package/dist/cjs/utils.js.map +1 -0
  139. package/dist/cjs/wpcom-request-controls/index.js +3 -2
  140. package/dist/cjs/wpcom-request-controls/index.js.map +1 -1
  141. package/dist/cjs/wpcom-request.js +24 -0
  142. package/dist/cjs/wpcom-request.js.map +1 -0
  143. package/dist/esm/agents-manager/actions.js +104 -0
  144. package/dist/esm/agents-manager/actions.js.map +1 -0
  145. package/dist/esm/agents-manager/constants.js +2 -0
  146. package/dist/esm/agents-manager/constants.js.map +1 -0
  147. package/dist/esm/agents-manager/index.js +31 -0
  148. package/dist/esm/agents-manager/index.js.map +1 -0
  149. package/dist/esm/agents-manager/persist-state.js +54 -0
  150. package/dist/esm/agents-manager/persist-state.js.map +1 -0
  151. package/dist/esm/agents-manager/reducer.js +82 -0
  152. package/dist/esm/agents-manager/reducer.js.map +1 -0
  153. package/dist/esm/agents-manager/resolvers.js +57 -0
  154. package/dist/esm/agents-manager/resolvers.js.map +1 -0
  155. package/dist/esm/agents-manager/selectors.js +31 -0
  156. package/dist/esm/agents-manager/selectors.js.map +1 -0
  157. package/dist/esm/{domain-suggestions → agents-manager}/types.js.map +1 -1
  158. package/dist/esm/contextual-help/admin-sections.js +2 -2
  159. package/dist/esm/contextual-help/admin-sections.js.map +1 -1
  160. package/dist/esm/help-center/actions.js +95 -65
  161. package/dist/esm/help-center/actions.js.map +1 -1
  162. package/dist/esm/help-center/constants.js +1 -0
  163. package/dist/esm/help-center/constants.js.map +1 -1
  164. package/dist/esm/help-center/index.js +11 -23
  165. package/dist/esm/help-center/index.js.map +1 -1
  166. package/dist/esm/help-center/reducer.js +36 -12
  167. package/dist/esm/help-center/reducer.js.map +1 -1
  168. package/dist/esm/help-center/resolvers.js +43 -24
  169. package/dist/esm/help-center/resolvers.js.map +1 -1
  170. package/dist/esm/help-center/selectors.js +6 -2
  171. package/dist/esm/help-center/selectors.js.map +1 -1
  172. package/dist/esm/help-center/utils.js +127 -0
  173. package/dist/esm/help-center/utils.js.map +1 -0
  174. package/dist/esm/index.js +4 -4
  175. package/dist/esm/index.js.map +1 -1
  176. package/dist/esm/mutations/use-domains-bulk-actions-mutation.js +1 -1
  177. package/dist/esm/mutations/use-domains-bulk-actions-mutation.js.map +1 -1
  178. package/dist/esm/newsletter-categories/index.js +1 -1
  179. package/dist/esm/newsletter-categories/index.js.map +1 -1
  180. package/dist/esm/onboard/actions.js +12 -0
  181. package/dist/esm/onboard/actions.js.map +1 -1
  182. package/dist/esm/onboard/reducer.js +30 -0
  183. package/dist/esm/onboard/reducer.js.map +1 -1
  184. package/dist/esm/onboard/selectors.js +3 -0
  185. package/dist/esm/onboard/selectors.js.map +1 -1
  186. package/dist/esm/plans/constants.js +2 -0
  187. package/dist/esm/plans/constants.js.map +1 -1
  188. package/dist/esm/plans/hooks/use-pricing-meta-for-grid-plans.js +35 -18
  189. package/dist/esm/plans/hooks/use-pricing-meta-for-grid-plans.js.map +1 -1
  190. package/dist/esm/plans/index.js +1 -1
  191. package/dist/esm/plans/index.js.map +1 -1
  192. package/dist/esm/plans/queries/use-plans.js +21 -2
  193. package/dist/esm/plans/queries/use-plans.js.map +1 -1
  194. package/dist/esm/plans/queries/use-site-plans.js +1 -1
  195. package/dist/esm/plans/resolvers.js +0 -1
  196. package/dist/esm/plans/resolvers.js.map +1 -1
  197. package/dist/esm/plans/selectors.js.map +1 -1
  198. package/dist/esm/products-list/queries/use-products.js +1 -1
  199. package/dist/esm/products-list/queries/use-products.js.map +1 -1
  200. package/dist/esm/products-list/resolvers.js +1 -1
  201. package/dist/esm/products-list/resolvers.js.map +1 -1
  202. package/dist/esm/purchases/lib/assembler.js +15 -20
  203. package/dist/esm/purchases/lib/assembler.js.map +1 -1
  204. package/dist/esm/purchases/queries/use-get-jetpack-transferred-license-purchases.js +1 -1
  205. package/dist/esm/purchases/queries/use-site-purchases.js +2 -2
  206. package/dist/esm/queries/use-all-domains-query.js +1 -1
  207. package/dist/esm/queries/use-all-domains-query.js.map +1 -1
  208. package/dist/esm/queries/use-bulk-domain-update-status-query.js +3 -56
  209. package/dist/esm/queries/use-bulk-domain-update-status-query.js.map +1 -1
  210. package/dist/esm/queries/use-happiness-engineers-query.js +1 -1
  211. package/dist/esm/queries/use-happiness-engineers-query.js.map +1 -1
  212. package/dist/esm/queries/use-launchpad.js +1 -1
  213. package/dist/esm/queries/use-launchpad.js.map +1 -1
  214. package/dist/esm/queries/use-site-domains-query.js +1 -1
  215. package/dist/esm/queries/use-site-domains-query.js.map +1 -1
  216. package/dist/esm/queries/use-site-intent.js +1 -1
  217. package/dist/esm/queries/use-site-intent.js.map +1 -1
  218. package/dist/esm/queries/use-site-query.js +1 -1
  219. package/dist/esm/queries/use-site-query.js.map +1 -1
  220. package/dist/esm/reader/contexts/index.js +0 -1
  221. package/dist/esm/reader/contexts/index.js.map +1 -1
  222. package/dist/esm/reader/helpers/index.js +3 -2
  223. package/dist/esm/reader/helpers/index.js.map +1 -1
  224. package/dist/esm/reader/helpers/optimistic-update.js +2 -1
  225. package/dist/esm/reader/helpers/optimistic-update.js.map +1 -1
  226. package/dist/esm/reader/index.js +2 -3
  227. package/dist/esm/reader/index.js.map +1 -1
  228. package/dist/esm/reader/mutations/use-pending-site-confirm-mutation.js +2 -2
  229. package/dist/esm/reader/mutations/use-pending-site-confirm-mutation.js.map +1 -1
  230. package/dist/esm/reader/mutations/use-site-delivery-frequency-mutation.js +27 -21
  231. package/dist/esm/reader/mutations/use-site-delivery-frequency-mutation.js.map +1 -1
  232. package/dist/esm/reader/mutations/use-site-email-me-new-comments-mutation.js +5 -4
  233. package/dist/esm/reader/mutations/use-site-email-me-new-comments-mutation.js.map +1 -1
  234. package/dist/esm/reader/mutations/use-site-email-me-new-posts-mutation.js +5 -4
  235. package/dist/esm/reader/mutations/use-site-email-me-new-posts-mutation.js.map +1 -1
  236. package/dist/esm/reader/mutations/use-site-notify-me-of-new-posts-mutation.js +5 -4
  237. package/dist/esm/reader/mutations/use-site-notify-me-of-new-posts-mutation.js.map +1 -1
  238. package/dist/esm/reader/mutations/use-site-subscribe-mutation.js +10 -4
  239. package/dist/esm/reader/mutations/use-site-subscribe-mutation.js.map +1 -1
  240. package/dist/esm/reader/mutations/use-site-unsubscribe-mutation.js +11 -4
  241. package/dist/esm/reader/mutations/use-site-unsubscribe-mutation.js.map +1 -1
  242. package/dist/esm/reader/queries/index.js +1 -4
  243. package/dist/esm/reader/queries/index.js.map +1 -1
  244. package/dist/esm/reader/queries/use-site-subscriptions-query.js +28 -27
  245. package/dist/esm/reader/queries/use-site-subscriptions-query.js.map +1 -1
  246. package/dist/esm/site/queries/use-site-features.js +1 -1
  247. package/dist/esm/site/queries/use-site-media-storage.js +1 -1
  248. package/dist/esm/site/queries/use-site-user-query.js +1 -1
  249. package/dist/esm/site/queries/use-site-user-query.js.map +1 -1
  250. package/dist/esm/site/queries/use-site.js +1 -1
  251. package/dist/esm/site/resolvers.js +1 -1
  252. package/dist/esm/site/resolvers.js.map +1 -1
  253. package/dist/esm/site/selectors.js +5 -3
  254. package/dist/esm/site/selectors.js.map +1 -1
  255. package/dist/esm/site/types.js.map +1 -1
  256. package/dist/esm/site-reset/use-site-reset-content-summary-query.js +1 -1
  257. package/dist/esm/site-reset/use-site-reset-content-summary-query.js.map +1 -1
  258. package/dist/esm/site-reset/use-site-reset-mutation.js +1 -1
  259. package/dist/esm/site-reset/use-site-reset-mutation.js.map +1 -1
  260. package/dist/esm/site-reset/use-site-reset-status-query.js +1 -1
  261. package/dist/esm/site-reset/use-site-reset-status-query.js.map +1 -1
  262. package/dist/esm/starter-designs-queries/use-starter-design-by-slug.js +1 -1
  263. package/dist/esm/starter-designs-queries/use-starter-design-by-slug.js.map +1 -1
  264. package/dist/esm/starter-designs-queries/use-starter-designs-query.js +1 -1
  265. package/dist/esm/starter-designs-queries/use-starter-designs-query.js.map +1 -1
  266. package/dist/esm/subscriber/actions.js +1 -1
  267. package/dist/esm/subscriber/actions.js.map +1 -1
  268. package/dist/esm/templates/use-template.js +1 -1
  269. package/dist/esm/templates/use-template.js.map +1 -1
  270. package/dist/esm/users/use-send-invites.js +1 -1
  271. package/dist/esm/users/use-send-invites.js.map +1 -1
  272. package/dist/esm/utils.js +21 -0
  273. package/dist/esm/utils.js.map +1 -0
  274. package/dist/esm/wpcom-request-controls/index.js +2 -1
  275. package/dist/esm/wpcom-request-controls/index.js.map +1 -1
  276. package/dist/esm/wpcom-request.js +18 -0
  277. package/dist/esm/wpcom-request.js.map +1 -0
  278. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  279. package/dist/tsconfig.tsbuildinfo +1 -1
  280. package/dist/types/add-ons/types.d.ts +1 -0
  281. package/dist/types/add-ons/types.d.ts.map +1 -1
  282. package/dist/types/agents-manager/actions.d.ts +77 -0
  283. package/dist/types/agents-manager/actions.d.ts.map +1 -0
  284. package/dist/types/agents-manager/constants.d.ts +2 -0
  285. package/dist/types/agents-manager/constants.d.ts.map +1 -0
  286. package/dist/types/agents-manager/index.d.ts +6 -0
  287. package/dist/types/agents-manager/index.d.ts.map +1 -0
  288. package/dist/types/agents-manager/persist-state.d.ts +6 -0
  289. package/dist/types/agents-manager/persist-state.d.ts.map +1 -0
  290. package/dist/types/agents-manager/reducer.d.ts +29 -0
  291. package/dist/types/agents-manager/reducer.d.ts.map +1 -0
  292. package/dist/types/agents-manager/resolvers.d.ts +54 -0
  293. package/dist/types/agents-manager/resolvers.d.ts.map +1 -0
  294. package/dist/types/agents-manager/selectors.d.ts +22 -0
  295. package/dist/types/agents-manager/selectors.d.ts.map +1 -0
  296. package/dist/types/agents-manager/types.d.ts +20 -0
  297. package/dist/types/agents-manager/types.d.ts.map +1 -0
  298. package/dist/types/contextual-help/admin-sections.d.ts +330 -6
  299. package/dist/types/contextual-help/admin-sections.d.ts.map +1 -1
  300. package/dist/types/contextual-help/contextual-help.d.ts +410 -30
  301. package/dist/types/contextual-help/contextual-help.d.ts.map +1 -1
  302. package/dist/types/help-center/actions.d.ts +249 -28
  303. package/dist/types/help-center/actions.d.ts.map +1 -1
  304. package/dist/types/help-center/constants.d.ts +1 -0
  305. package/dist/types/help-center/constants.d.ts.map +1 -1
  306. package/dist/types/help-center/index.d.ts +1 -2
  307. package/dist/types/help-center/index.d.ts.map +1 -1
  308. package/dist/types/help-center/reducer.d.ts +19 -7
  309. package/dist/types/help-center/reducer.d.ts.map +1 -1
  310. package/dist/types/help-center/resolvers.d.ts +4 -23
  311. package/dist/types/help-center/resolvers.d.ts.map +1 -1
  312. package/dist/types/help-center/selectors.d.ts +14 -3
  313. package/dist/types/help-center/selectors.d.ts.map +1 -1
  314. package/dist/types/help-center/types.d.ts +21 -12
  315. package/dist/types/help-center/types.d.ts.map +1 -1
  316. package/dist/types/help-center/utils.d.ts +13 -0
  317. package/dist/types/help-center/utils.d.ts.map +1 -0
  318. package/dist/types/index.d.ts +347 -197
  319. package/dist/types/index.d.ts.map +1 -1
  320. package/dist/types/onboard/actions.d.ts +32 -4
  321. package/dist/types/onboard/actions.d.ts.map +1 -1
  322. package/dist/types/onboard/reducer.d.ts +11 -2
  323. package/dist/types/onboard/reducer.d.ts.map +1 -1
  324. package/dist/types/onboard/selectors.d.ts +14 -8
  325. package/dist/types/onboard/selectors.d.ts.map +1 -1
  326. package/dist/types/onboard/types.d.ts +1 -1
  327. package/dist/types/onboard/types.d.ts.map +1 -1
  328. package/dist/types/plans/constants.d.ts +3 -2
  329. package/dist/types/plans/constants.d.ts.map +1 -1
  330. package/dist/types/plans/hooks/use-pricing-meta-for-grid-plans.d.ts +6 -1
  331. package/dist/types/plans/hooks/use-pricing-meta-for-grid-plans.d.ts.map +1 -1
  332. package/dist/types/plans/index.d.ts +1 -1
  333. package/dist/types/plans/index.d.ts.map +1 -1
  334. package/dist/types/plans/queries/use-plans.d.ts.map +1 -1
  335. package/dist/types/plans/resolvers.d.ts.map +1 -1
  336. package/dist/types/plans/types.d.ts +6 -0
  337. package/dist/types/plans/types.d.ts.map +1 -1
  338. package/dist/types/products-list/index.d.ts +1 -1
  339. package/dist/types/products-list/index.d.ts.map +1 -1
  340. package/dist/types/products-list/queries/use-products.d.ts.map +1 -1
  341. package/dist/types/purchases/lib/assembler.d.ts +3 -3
  342. package/dist/types/purchases/lib/assembler.d.ts.map +1 -1
  343. package/dist/types/purchases/types.d.ts +40 -109
  344. package/dist/types/purchases/types.d.ts.map +1 -1
  345. package/dist/types/queries/use-all-domains-query.d.ts +3 -3
  346. package/dist/types/queries/use-all-domains-query.d.ts.map +1 -1
  347. package/dist/types/queries/use-bulk-domain-update-status-query.d.ts +5 -48
  348. package/dist/types/queries/use-bulk-domain-update-status-query.d.ts.map +1 -1
  349. package/dist/types/queries/use-site-domains-query.d.ts +1 -1
  350. package/dist/types/queries/use-site-domains-query.d.ts.map +1 -1
  351. package/dist/types/queries/use-site-intent.d.ts.map +1 -1
  352. package/dist/types/queries/use-site-query.d.ts +1 -1
  353. package/dist/types/queries/use-site-query.d.ts.map +1 -1
  354. package/dist/types/reader/contexts/index.d.ts +0 -1
  355. package/dist/types/reader/contexts/index.d.ts.map +1 -1
  356. package/dist/types/reader/helpers/index.d.ts.map +1 -1
  357. package/dist/types/reader/helpers/optimistic-update.d.ts.map +1 -1
  358. package/dist/types/reader/index.d.ts +342 -196
  359. package/dist/types/reader/index.d.ts.map +1 -1
  360. package/dist/types/reader/mutations/use-site-delivery-frequency-mutation.d.ts +3 -2
  361. package/dist/types/reader/mutations/use-site-delivery-frequency-mutation.d.ts.map +1 -1
  362. package/dist/types/reader/mutations/use-site-email-me-new-comments-mutation.d.ts +3 -2
  363. package/dist/types/reader/mutations/use-site-email-me-new-comments-mutation.d.ts.map +1 -1
  364. package/dist/types/reader/mutations/use-site-email-me-new-posts-mutation.d.ts +3 -2
  365. package/dist/types/reader/mutations/use-site-email-me-new-posts-mutation.d.ts.map +1 -1
  366. package/dist/types/reader/mutations/use-site-notify-me-of-new-posts-mutation.d.ts +3 -2
  367. package/dist/types/reader/mutations/use-site-notify-me-of-new-posts-mutation.d.ts.map +1 -1
  368. package/dist/types/reader/mutations/use-site-subscribe-mutation.d.ts +3 -2
  369. package/dist/types/reader/mutations/use-site-subscribe-mutation.d.ts.map +1 -1
  370. package/dist/types/reader/mutations/use-site-unsubscribe-mutation.d.ts +3 -2
  371. package/dist/types/reader/mutations/use-site-unsubscribe-mutation.d.ts.map +1 -1
  372. package/dist/types/reader/queries/index.d.ts +1 -5
  373. package/dist/types/reader/queries/index.d.ts.map +1 -1
  374. package/dist/types/reader/queries/use-pending-post-subscriptions-query.d.ts +75 -7
  375. package/dist/types/reader/queries/use-pending-post-subscriptions-query.d.ts.map +1 -1
  376. package/dist/types/reader/queries/use-pending-site-subscriptions-query.d.ts +75 -7
  377. package/dist/types/reader/queries/use-pending-site-subscriptions-query.d.ts.map +1 -1
  378. package/dist/types/reader/queries/use-post-subscriptions-query.d.ts +143 -13
  379. package/dist/types/reader/queries/use-post-subscriptions-query.d.ts.map +1 -1
  380. package/dist/types/reader/queries/use-site-subscriptions-query.d.ts +6 -135
  381. package/dist/types/reader/queries/use-site-subscriptions-query.d.ts.map +1 -1
  382. package/dist/types/reader/types/index.d.ts +32 -44
  383. package/dist/types/reader/types/index.d.ts.map +1 -1
  384. package/dist/types/shared-types.d.ts +11 -0
  385. package/dist/types/shared-types.d.ts.map +1 -1
  386. package/dist/types/site/actions.d.ts +1 -1
  387. package/dist/types/site/actions.d.ts.map +1 -1
  388. package/dist/types/site/queries/use-site-user-query.d.ts.map +1 -1
  389. package/dist/types/site/selectors.d.ts.map +1 -1
  390. package/dist/types/site/types.d.ts +5 -0
  391. package/dist/types/site/types.d.ts.map +1 -1
  392. package/dist/types/starter-designs-queries/types.d.ts +1 -1
  393. package/dist/types/starter-designs-queries/types.d.ts.map +1 -1
  394. package/dist/types/starter-designs-queries/use-starter-design-by-slug.d.ts +1 -1
  395. package/dist/types/starter-designs-queries/use-starter-design-by-slug.d.ts.map +1 -1
  396. package/dist/types/starter-designs-queries/use-starter-designs-query.d.ts +1 -1
  397. package/dist/types/starter-designs-queries/use-starter-designs-query.d.ts.map +1 -1
  398. package/dist/types/subscriber/index.d.ts +1 -1
  399. package/dist/types/subscriber/index.d.ts.map +1 -1
  400. package/dist/types/user/actions.d.ts +1 -1
  401. package/dist/types/user/reducer.d.ts +1 -1
  402. package/dist/types/user/resolvers.d.ts +2 -2
  403. package/dist/types/user/selectors.d.ts +2 -2
  404. package/dist/types/user/selectors.d.ts.map +1 -1
  405. package/dist/types/user/types.d.ts +2 -33
  406. package/dist/types/user/types.d.ts.map +1 -1
  407. package/dist/types/utils.d.ts +3 -0
  408. package/dist/types/utils.d.ts.map +1 -0
  409. package/dist/types/wpcom-plans-ui/actions.d.ts +1 -1
  410. package/dist/types/wpcom-plans-ui/index.d.ts +1 -1
  411. package/dist/types/wpcom-plans-ui/index.d.ts.map +1 -1
  412. package/dist/types/wpcom-request-controls/index.d.ts +1 -1
  413. package/dist/types/wpcom-request-controls/index.d.ts.map +1 -1
  414. package/dist/types/wpcom-request.d.ts +7 -0
  415. package/dist/types/wpcom-request.d.ts.map +1 -0
  416. package/package.json +26 -29
  417. package/src/add-ons/types.ts +1 -0
  418. package/src/agents-manager/actions.ts +151 -0
  419. package/src/agents-manager/constants.ts +1 -0
  420. package/src/agents-manager/index.ts +38 -0
  421. package/src/agents-manager/persist-state.ts +60 -0
  422. package/src/agents-manager/reducer.ts +106 -0
  423. package/src/agents-manager/resolvers.ts +87 -0
  424. package/src/agents-manager/selectors.ts +32 -0
  425. package/src/agents-manager/test/persist-state.test.ts +81 -0
  426. package/src/agents-manager/test/reducer.test.ts +69 -0
  427. package/src/agents-manager/types.ts +24 -0
  428. package/src/contextual-help/admin-sections.ts +2 -2
  429. package/src/help-center/actions.ts +139 -79
  430. package/src/help-center/constants.ts +1 -0
  431. package/src/help-center/index.ts +11 -32
  432. package/src/help-center/reducer.ts +55 -19
  433. package/src/help-center/resolvers.ts +47 -32
  434. package/src/help-center/selectors.ts +7 -2
  435. package/src/help-center/test/utils.ts +99 -0
  436. package/src/help-center/types.ts +23 -13
  437. package/src/help-center/utils.ts +156 -0
  438. package/src/index.ts +11 -4
  439. package/src/mutations/use-domains-bulk-actions-mutation.ts +1 -1
  440. package/src/newsletter-categories/index.ts +1 -1
  441. package/src/newsletter-categories/test/index.tsx +5 -2
  442. package/src/onboard/actions.ts +20 -3
  443. package/src/onboard/reducer.ts +38 -3
  444. package/src/onboard/selectors.ts +3 -0
  445. package/src/onboard/types.ts +1 -1
  446. package/src/plans/constants.ts +2 -0
  447. package/src/plans/hooks/test/use-pricing-meta-for-grid-plans.ts +120 -0
  448. package/src/plans/hooks/use-pricing-meta-for-grid-plans.ts +48 -18
  449. package/src/plans/index.ts +1 -0
  450. package/src/plans/queries/use-plans.ts +30 -2
  451. package/src/plans/queries/use-site-plans.ts +1 -1
  452. package/src/plans/resolvers.ts +0 -1
  453. package/src/plans/selectors.ts +9 -9
  454. package/src/plans/types.ts +6 -0
  455. package/src/products-list/queries/use-products.ts +1 -1
  456. package/src/products-list/resolvers.ts +1 -1
  457. package/src/products-list/selectors.ts +1 -1
  458. package/src/products-list/test/selectors.ts +2 -2
  459. package/src/purchases/lib/assembler.ts +20 -29
  460. package/src/purchases/queries/use-get-jetpack-transferred-license-purchases.tsx +1 -1
  461. package/src/purchases/queries/use-site-purchases.ts +2 -2
  462. package/src/purchases/types.ts +47 -116
  463. package/src/queries/use-all-domains-query.ts +3 -3
  464. package/src/queries/use-bulk-domain-update-status-query.ts +14 -115
  465. package/src/queries/use-happiness-engineers-query.ts +1 -1
  466. package/src/queries/use-launchpad.ts +1 -1
  467. package/src/queries/use-site-domains-query.ts +1 -1
  468. package/src/queries/use-site-intent.ts +1 -1
  469. package/src/queries/use-site-query.ts +1 -1
  470. package/src/reader/contexts/index.ts +0 -4
  471. package/src/reader/helpers/index.ts +3 -2
  472. package/src/reader/helpers/optimistic-update.ts +2 -1
  473. package/src/reader/index.ts +2 -4
  474. package/src/reader/mutations/test/use-site-subscription-mutations.test.tsx +208 -0
  475. package/src/reader/mutations/use-pending-site-confirm-mutation.ts +2 -2
  476. package/src/reader/mutations/use-site-delivery-frequency-mutation.ts +32 -36
  477. package/src/reader/mutations/use-site-email-me-new-comments-mutation.ts +10 -10
  478. package/src/reader/mutations/use-site-email-me-new-posts-mutation.ts +10 -10
  479. package/src/reader/mutations/use-site-notify-me-of-new-posts-mutation.ts +10 -10
  480. package/src/reader/mutations/use-site-subscribe-mutation.ts +21 -10
  481. package/src/reader/mutations/use-site-unsubscribe-mutation.ts +20 -10
  482. package/src/reader/queries/index.ts +4 -6
  483. package/src/reader/queries/test/use-site-subscriptions-query.tsx +158 -52
  484. package/src/reader/queries/use-site-subscriptions-query.ts +53 -55
  485. package/src/reader/types/index.ts +34 -48
  486. package/src/shared-types.ts +13 -0
  487. package/src/site/actions.ts +1 -1
  488. package/src/site/queries/use-site-features.ts +1 -1
  489. package/src/site/queries/use-site-media-storage.ts +1 -1
  490. package/src/site/queries/use-site-user-query.ts +1 -1
  491. package/src/site/queries/use-site.ts +1 -1
  492. package/src/site/resolvers.ts +1 -1
  493. package/src/site/selectors.ts +18 -10
  494. package/src/site/test/selectors.ts +3 -3
  495. package/src/site/types.ts +5 -0
  496. package/src/site-reset/test/use-site-reset-mutation.tsx +3 -4
  497. package/src/site-reset/use-site-reset-content-summary-query.ts +1 -1
  498. package/src/site-reset/use-site-reset-mutation.ts +1 -1
  499. package/src/site-reset/use-site-reset-status-query.ts +1 -1
  500. package/src/starter-designs-queries/types.ts +1 -1
  501. package/src/starter-designs-queries/use-starter-design-by-slug.ts +2 -2
  502. package/src/starter-designs-queries/use-starter-designs-query.ts +2 -2
  503. package/src/subscriber/actions.ts +1 -1
  504. package/src/templates/use-template.ts +1 -1
  505. package/src/user/types.ts +2 -38
  506. package/src/users/use-send-invites.ts +1 -1
  507. package/src/utils.ts +33 -0
  508. package/src/wpcom-request-controls/index.ts +2 -1
  509. package/src/wpcom-request.ts +26 -0
  510. package/dist/cjs/domain-suggestions/actions.js +0 -33
  511. package/dist/cjs/domain-suggestions/actions.js.map +0 -1
  512. package/dist/cjs/domain-suggestions/constants.js +0 -12
  513. package/dist/cjs/domain-suggestions/constants.js.map +0 -1
  514. package/dist/cjs/domain-suggestions/index.js +0 -25
  515. package/dist/cjs/domain-suggestions/index.js.map +0 -1
  516. package/dist/cjs/domain-suggestions/queries.js +0 -78
  517. package/dist/cjs/domain-suggestions/queries.js.map +0 -1
  518. package/dist/cjs/domain-suggestions/reducer.js +0 -65
  519. package/dist/cjs/domain-suggestions/reducer.js.map +0 -1
  520. package/dist/cjs/domain-suggestions/resolvers.js +0 -91
  521. package/dist/cjs/domain-suggestions/resolvers.js.map +0 -1
  522. package/dist/cjs/domain-suggestions/selectors.js +0 -58
  523. package/dist/cjs/domain-suggestions/selectors.js.map +0 -1
  524. package/dist/cjs/domain-suggestions/utils.js +0 -47
  525. package/dist/cjs/domain-suggestions/utils.js.map +0 -1
  526. package/dist/cjs/reader/contexts/unsubscribed-feeds-search.js +0 -26
  527. package/dist/cjs/reader/contexts/unsubscribed-feeds-search.js.map +0 -1
  528. package/dist/cjs/reader/queries/use-read-feed-query.js +0 -21
  529. package/dist/cjs/reader/queries/use-read-feed-query.js.map +0 -1
  530. package/dist/cjs/reader/queries/use-read-feed-search-query.js +0 -39
  531. package/dist/cjs/reader/queries/use-read-feed-search-query.js.map +0 -1
  532. package/dist/cjs/reader/queries/use-read-feed-site-query.js +0 -26
  533. package/dist/cjs/reader/queries/use-read-feed-site-query.js.map +0 -1
  534. package/dist/esm/domain-suggestions/actions.js +0 -25
  535. package/dist/esm/domain-suggestions/actions.js.map +0 -1
  536. package/dist/esm/domain-suggestions/constants.js +0 -9
  537. package/dist/esm/domain-suggestions/constants.js.map +0 -1
  538. package/dist/esm/domain-suggestions/index.js +0 -20
  539. package/dist/esm/domain-suggestions/index.js.map +0 -1
  540. package/dist/esm/domain-suggestions/queries.js +0 -72
  541. package/dist/esm/domain-suggestions/queries.js.map +0 -1
  542. package/dist/esm/domain-suggestions/reducer.js +0 -61
  543. package/dist/esm/domain-suggestions/reducer.js.map +0 -1
  544. package/dist/esm/domain-suggestions/resolvers.js +0 -84
  545. package/dist/esm/domain-suggestions/resolvers.js.map +0 -1
  546. package/dist/esm/domain-suggestions/selectors.js +0 -47
  547. package/dist/esm/domain-suggestions/selectors.js.map +0 -1
  548. package/dist/esm/domain-suggestions/utils.js +0 -41
  549. package/dist/esm/domain-suggestions/utils.js.map +0 -1
  550. package/dist/esm/reader/contexts/unsubscribed-feeds-search.js +0 -20
  551. package/dist/esm/reader/contexts/unsubscribed-feeds-search.js.map +0 -1
  552. package/dist/esm/reader/queries/use-read-feed-query.js +0 -18
  553. package/dist/esm/reader/queries/use-read-feed-query.js.map +0 -1
  554. package/dist/esm/reader/queries/use-read-feed-search-query.js +0 -35
  555. package/dist/esm/reader/queries/use-read-feed-search-query.js.map +0 -1
  556. package/dist/esm/reader/queries/use-read-feed-site-query.js +0 -23
  557. package/dist/esm/reader/queries/use-read-feed-site-query.js.map +0 -1
  558. package/dist/types/domain-suggestions/actions.d.ts +0 -27
  559. package/dist/types/domain-suggestions/actions.d.ts.map +0 -1
  560. package/dist/types/domain-suggestions/constants.d.ts +0 -8
  561. package/dist/types/domain-suggestions/constants.d.ts.map +0 -1
  562. package/dist/types/domain-suggestions/index.d.ts +0 -10
  563. package/dist/types/domain-suggestions/index.d.ts.map +0 -1
  564. package/dist/types/domain-suggestions/queries.d.ts +0 -323
  565. package/dist/types/domain-suggestions/queries.d.ts.map +0 -1
  566. package/dist/types/domain-suggestions/reducer.d.ts +0 -16
  567. package/dist/types/domain-suggestions/reducer.d.ts.map +0 -1
  568. package/dist/types/domain-suggestions/resolvers.d.ts +0 -39
  569. package/dist/types/domain-suggestions/resolvers.d.ts.map +0 -1
  570. package/dist/types/domain-suggestions/selectors.d.ts +0 -18
  571. package/dist/types/domain-suggestions/selectors.d.ts.map +0 -1
  572. package/dist/types/domain-suggestions/types.d.ts +0 -206
  573. package/dist/types/domain-suggestions/types.d.ts.map +0 -1
  574. package/dist/types/domain-suggestions/utils.d.ts +0 -23
  575. package/dist/types/domain-suggestions/utils.d.ts.map +0 -1
  576. package/dist/types/reader/contexts/unsubscribed-feeds-search.d.ts +0 -12
  577. package/dist/types/reader/contexts/unsubscribed-feeds-search.d.ts.map +0 -1
  578. package/dist/types/reader/queries/use-read-feed-query.d.ts +0 -28
  579. package/dist/types/reader/queries/use-read-feed-query.d.ts.map +0 -1
  580. package/dist/types/reader/queries/use-read-feed-search-query.d.ts +0 -34
  581. package/dist/types/reader/queries/use-read-feed-search-query.d.ts.map +0 -1
  582. package/dist/types/reader/queries/use-read-feed-site-query.d.ts +0 -15
  583. package/dist/types/reader/queries/use-read-feed-site-query.d.ts.map +0 -1
  584. package/src/domain-suggestions/actions.ts +0 -51
  585. package/src/domain-suggestions/constants.ts +0 -8
  586. package/src/domain-suggestions/index.ts +0 -22
  587. package/src/domain-suggestions/queries.ts +0 -85
  588. package/src/domain-suggestions/reducer.ts +0 -77
  589. package/src/domain-suggestions/resolvers.ts +0 -110
  590. package/src/domain-suggestions/selectors.ts +0 -86
  591. package/src/domain-suggestions/test/reducer.ts +0 -105
  592. package/src/domain-suggestions/test/selectors.ts +0 -127
  593. package/src/domain-suggestions/types.ts +0 -254
  594. package/src/domain-suggestions/utils.ts +0 -50
  595. package/src/reader/contexts/unsubscribed-feeds-search.tsx +0 -35
  596. package/src/reader/queries/test/use-read-feed-search-query.tsx +0 -55
  597. package/src/reader/queries/use-read-feed-query.ts +0 -45
  598. package/src/reader/queries/use-read-feed-search-query.ts +0 -72
  599. package/src/reader/queries/use-read-feed-site-query.ts +0 -35
  600. /package/dist/cjs/{domain-suggestions → agents-manager}/types.js +0 -0
  601. /package/dist/esm/{domain-suggestions → agents-manager}/types.js +0 -0
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+
5
+ import { PREFERENCES_KEY } from '../constants';
6
+
7
+ jest.mock( '@wordpress/data', () => ( {
8
+ select: jest.fn(),
9
+ } ) );
10
+
11
+ jest.mock( '../../wpcom-request', () => ( {
12
+ __esModule: true,
13
+ default: jest.fn(),
14
+ canAccessWpcomApis: jest.fn(),
15
+ } ) );
16
+
17
+ describe( 'help-center utils — localStorage persistence (logged out)', () => {
18
+ let utils: typeof import('../utils');
19
+
20
+ beforeEach( async () => {
21
+ jest.resetModules();
22
+ window.localStorage.clear();
23
+ utils = await import( '../utils' );
24
+ } );
25
+
26
+ it( 'persists and reads under the unscoped key when no appId is set', () => {
27
+ utils.persistValueSafely( 'help_center_open', true );
28
+
29
+ expect( window.localStorage.getItem( PREFERENCES_KEY + 'help_center_open' ) ).toBe( 'true' );
30
+ expect( utils.retrieveValueSafely( 'help_center_open' ) ).toBe( true );
31
+ } );
32
+
33
+ it( 'persists under the app-scoped key when an appId is set', () => {
34
+ utils.setHelpCenterAppId( 'a4a' );
35
+ utils.persistValueSafely( 'help_center_open', true );
36
+
37
+ expect( window.localStorage.getItem( PREFERENCES_KEY + 'help_center_open_a4a' ) ).toBe(
38
+ 'true'
39
+ );
40
+ // The shared, unscoped field is left untouched.
41
+ expect( window.localStorage.getItem( PREFERENCES_KEY + 'help_center_open' ) ).toBeNull();
42
+ } );
43
+
44
+ it( 'falls back to the shared (unscoped) value when the scoped one is absent', () => {
45
+ // Value written by another, unscoped context.
46
+ window.localStorage.setItem( PREFERENCES_KEY + 'help_center_open', 'true' );
47
+ utils.setHelpCenterAppId( 'a4a' );
48
+
49
+ expect( utils.retrieveValueSafely( 'help_center_open' ) ).toBe( true );
50
+ } );
51
+
52
+ it( 'prefers the scoped value over the shared one once it exists', () => {
53
+ window.localStorage.setItem( PREFERENCES_KEY + 'help_center_open', 'false' );
54
+ window.localStorage.setItem( PREFERENCES_KEY + 'help_center_open_a4a', 'true' );
55
+ utils.setHelpCenterAppId( 'a4a' );
56
+
57
+ expect( utils.retrieveValueSafely( 'help_center_open' ) ).toBe( true );
58
+ } );
59
+ } );
60
+
61
+ describe( 'getPersistedPreference — server preferences (logged in)', () => {
62
+ async function setup(
63
+ preferences: Record< string, unknown >
64
+ ): Promise< typeof import('../utils') > {
65
+ jest.resetModules();
66
+
67
+ const { select } = await import( '@wordpress/data' );
68
+ ( select as jest.Mock ).mockReturnValue( { getIsLoggedIn: () => true } );
69
+
70
+ const wpcomRequest = await import( '../../wpcom-request' );
71
+ ( wpcomRequest.canAccessWpcomApis as jest.Mock ).mockReturnValue( true );
72
+ ( wpcomRequest.default as jest.Mock ).mockResolvedValue( {
73
+ calypso_preferences: preferences,
74
+ } );
75
+
76
+ return import( '../utils' );
77
+ }
78
+
79
+ it( 'returns the scoped value when present', async () => {
80
+ const utils = await setup( { help_center_open: false, help_center_open_a4a: true } );
81
+ utils.setHelpCenterAppId( 'a4a' );
82
+
83
+ await expect( utils.getPersistedPreference( 'help_center_open' ) ).resolves.toBe( true );
84
+ } );
85
+
86
+ it( 'falls back to the unscoped value when the scoped one is absent', async () => {
87
+ const utils = await setup( { help_center_open: true } );
88
+ utils.setHelpCenterAppId( 'a4a' );
89
+
90
+ await expect( utils.getPersistedPreference( 'help_center_open' ) ).resolves.toBe( true );
91
+ } );
92
+
93
+ it( 'reads the unscoped value when no appId is set', async () => {
94
+ const utils = await setup( { help_center_open: true, help_center_open_a4a: false } );
95
+ utils.setHelpCenterAppId( undefined );
96
+
97
+ await expect( utils.getPersistedPreference( 'help_center_open' ) ).resolves.toBe( true );
98
+ } );
99
+ } );
@@ -1,15 +1,10 @@
1
1
  import * as actions from './actions';
2
2
  import * as selectors from './selectors';
3
3
  import type { DispatchFromMap, SelectFromMap } from '../mapped-types';
4
-
5
- export type Location = {
6
- pathname: string;
7
- search?: string;
8
- hash?: string;
9
- state?: unknown;
10
- key?: string;
11
- };
4
+ import type { HelpCenterAction } from './actions';
5
+ import type { Location } from 'history';
12
6
  export interface HelpCenterShowOptions {
7
+ hasPremiumSupport: boolean;
13
8
  hideBackButton: boolean;
14
9
  contextTerm: string;
15
10
  }
@@ -44,13 +39,28 @@ export interface Dispatch {
44
39
  dispatch: DispatchFromMap< typeof actions >;
45
40
  }
46
41
 
47
- export interface APIFetchOptions {
48
- global: boolean;
49
- path: string;
50
- }
42
+ export type HelpCenterSelect = SelectFromMap< typeof selectors > & {
43
+ isResolving: ( key: string ) => boolean;
44
+ };
51
45
 
52
- export type HelpCenterSelect = SelectFromMap< typeof selectors >;
46
+ export type HelpCenterThunkDispatch = ( action: HelpCenterAction ) => void;
47
+
48
+ export type HelpCenterThunkProps = {
49
+ dispatch: HelpCenterThunkDispatch;
50
+ select: HelpCenterSelect;
51
+ };
53
52
 
54
53
  export interface HelpCenterOptions {
55
54
  hideBackButton?: boolean;
56
55
  }
56
+
57
+ export interface Preferences {
58
+ calypso_preferences: {
59
+ help_center_open: boolean | undefined;
60
+ help_center_minimized: boolean;
61
+ help_center_router_history: {
62
+ entries: Location[];
63
+ index: number;
64
+ } | null;
65
+ };
66
+ }
@@ -0,0 +1,156 @@
1
+ import { default as apiFetchPromise } from '@wordpress/api-fetch';
2
+ import { select } from '@wordpress/data';
3
+ import { isE2ETest } from '../utils';
4
+ import { default as wpcomRequestPromise, canAccessWpcomApis } from '../wpcom-request';
5
+ import { PREFERENCES_KEY, STORE_KEY } from './constants';
6
+ import type { HelpCenterSelect, Preferences } from './types';
7
+ import type { APIFetchOptions } from '../shared-types';
8
+
9
+ const memoryStore: Preferences[ 'calypso_preferences' ] = {
10
+ help_center_open: undefined,
11
+ help_center_minimized: false,
12
+ help_center_router_history: null,
13
+ };
14
+
15
+ let helpCenterAppId: string | undefined;
16
+
17
+ export function setHelpCenterAppId( appId: string | undefined ): void {
18
+ helpCenterAppId = appId;
19
+ }
20
+
21
+ function scopedKey( key: string ): string {
22
+ return helpCenterAppId ? `${ key }_${ helpCenterAppId }` : key;
23
+ }
24
+
25
+ /**
26
+ * Reads the app-scoped preference, falling back to the shared (unscoped) one.
27
+ */
28
+ function readScoped< T extends keyof Preferences[ 'calypso_preferences' ] >(
29
+ preferences: Preferences[ 'calypso_preferences' ],
30
+ key: T
31
+ ): Preferences[ 'calypso_preferences' ][ T ] | undefined {
32
+ // The scoped key is dynamic, so the cast is confined here to keep callers typed.
33
+ const scoped = (
34
+ preferences as unknown as Record< string, Preferences[ 'calypso_preferences' ][ T ] >
35
+ )[ scopedKey( key ) ];
36
+ return scoped ?? preferences[ key ];
37
+ }
38
+
39
+ export function deleteValuesSafely(): void {
40
+ try {
41
+ window.localStorage.removeItem( PREFERENCES_KEY + scopedKey( 'help_center_open' ) );
42
+ window.localStorage.removeItem( PREFERENCES_KEY + scopedKey( 'help_center_minimized' ) );
43
+ window.localStorage.removeItem( PREFERENCES_KEY + scopedKey( 'help_center_router_history' ) );
44
+ } catch ( error ) {
45
+ memoryStore.help_center_open = undefined;
46
+ memoryStore.help_center_minimized = false;
47
+ memoryStore.help_center_router_history = null;
48
+ }
49
+ }
50
+
51
+ export function persistValueSafely< T extends keyof Preferences[ 'calypso_preferences' ] >(
52
+ key: T,
53
+ value: Preferences[ 'calypso_preferences' ][ T ]
54
+ ): void {
55
+ try {
56
+ window.localStorage.setItem( PREFERENCES_KEY + scopedKey( key ), JSON.stringify( value ) );
57
+ } catch ( error ) {
58
+ memoryStore[ key ] = value;
59
+ }
60
+ }
61
+
62
+ export function retrieveValueSafely< T extends keyof Preferences[ 'calypso_preferences' ] >(
63
+ key: T
64
+ ): Preferences[ 'calypso_preferences' ][ T ] | undefined {
65
+ try {
66
+ // Prefer this app's scoped value, falling back to the shared (unscoped)
67
+ // one when it hasn't stored its own yet.
68
+ const value =
69
+ window.localStorage.getItem( PREFERENCES_KEY + scopedKey( key ) ) ??
70
+ window.localStorage.getItem( PREFERENCES_KEY + key );
71
+ return value ? JSON.parse( value ) : undefined;
72
+ } catch ( error ) {
73
+ return memoryStore[ key ];
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Cached promise to avoid multiple requests to the same endpoint. We only need preferences on boot.
79
+ */
80
+ let cachedPreferencesPromise: Promise< Preferences[ 'calypso_preferences' ] > | undefined;
81
+
82
+ function getCalypsoPreferences(): Promise< Preferences[ 'calypso_preferences' ] > {
83
+ // Caching the promise instead of the result allows parallel requests to queue and wait for one result.
84
+ if ( cachedPreferencesPromise ) {
85
+ return cachedPreferencesPromise;
86
+ } else if ( canAccessWpcomApis() ) {
87
+ cachedPreferencesPromise = wpcomRequestPromise< Preferences >( {
88
+ path: '/me/preferences',
89
+ apiNamespace: 'wpcom/v2',
90
+ } ).then( ( preferences ) => preferences.calypso_preferences );
91
+ } else {
92
+ cachedPreferencesPromise = apiFetchPromise< Preferences[ 'calypso_preferences' ] >( {
93
+ global: true,
94
+ path: '/help-center/open-state',
95
+ } as APIFetchOptions );
96
+ }
97
+
98
+ return cachedPreferencesPromise;
99
+ }
100
+
101
+ export async function getPersistedPreference<
102
+ T extends keyof Preferences[ 'calypso_preferences' ],
103
+ >( key: T ): Promise< Preferences[ 'calypso_preferences' ][ T ] | undefined > {
104
+ const isLoggedIn = ( select( STORE_KEY ) as unknown as HelpCenterSelect ).getIsLoggedIn();
105
+
106
+ if ( isLoggedIn ) {
107
+ const preferences = await getCalypsoPreferences();
108
+ return readScoped( preferences, key );
109
+ }
110
+
111
+ return retrieveValueSafely( key );
112
+ }
113
+
114
+ /**
115
+ * Save the open state of the help center to the remote user preferences or localStorage based on logged in status.
116
+ * @param preference - The field to save.
117
+ * @param value - The value to save.
118
+ */
119
+ export function persistPreference< T extends keyof Preferences[ 'calypso_preferences' ] >(
120
+ preference: T,
121
+ value: Preferences[ 'calypso_preferences' ][ T ]
122
+ ) {
123
+ if ( isE2ETest() ) {
124
+ return;
125
+ }
126
+
127
+ const newPreferences = { [ scopedKey( preference ) ]: value };
128
+
129
+ const isLoggedIn = ( select( STORE_KEY ) as unknown as HelpCenterSelect ).getIsLoggedIn();
130
+
131
+ if ( ! isLoggedIn ) {
132
+ // Retrieve the logged out help center preferences from localStorage to coalesce the state.
133
+ persistValueSafely( preference, value );
134
+ } else if ( isLoggedIn ) {
135
+ // Delete local preferences when logged in to avoid conflicts.
136
+ deleteValuesSafely();
137
+
138
+ if ( canAccessWpcomApis() ) {
139
+ // Use the promise version to do that action without waiting for the result.
140
+ wpcomRequestPromise( {
141
+ path: '/me/preferences',
142
+ apiNamespace: 'wpcom/v2',
143
+ method: 'PUT',
144
+ body: { calypso_preferences: newPreferences },
145
+ } ).catch( () => {} );
146
+ } else {
147
+ // Use the promise version to do that action without waiting for the result.
148
+ apiFetchPromise( {
149
+ global: true,
150
+ path: '/help-center/open-state',
151
+ method: 'PUT',
152
+ data: newPreferences,
153
+ } as APIFetchOptions ).catch( () => {} );
154
+ }
155
+ }
156
+ }
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as AddOns from './add-ons';
2
- import * as DomainSuggestions from './domain-suggestions';
2
+ import * as AgentsManager from './agents-manager';
3
3
  import * as HelpCenter from './help-center';
4
4
  import * as Onboard from './onboard';
5
5
  import * as Plans from './plans';
@@ -19,7 +19,6 @@ export * from './starter-designs-queries';
19
19
  export * from './site/types';
20
20
  export * from './templates';
21
21
  export * from './onboard/types';
22
- export * from './domain-suggestions/types';
23
22
  export * from './plans/types';
24
23
  export * from './theme';
25
24
  export * from './user/types';
@@ -37,8 +36,8 @@ const { SubscriptionManager } = Reader;
37
36
 
38
37
  export {
39
38
  AddOns,
39
+ AgentsManager,
40
40
  User,
41
- DomainSuggestions,
42
41
  HelpCenter,
43
42
  Site,
44
43
  Plans,
@@ -66,9 +65,17 @@ export type {
66
65
  HelpCenterSelect,
67
66
  Dispatch as HelpCenterDispatch,
68
67
  } from './help-center/types';
68
+ export type {
69
+ AgentsManagerSelect,
70
+ AgentsManagerSite,
71
+ Dispatch as AgentsManagerDispatch,
72
+ PerSiteRouterHistory,
73
+ SingleRouterHistory,
74
+ } from './agents-manager/types';
69
75
  export type { OnboardSelect, OnboardActions } from './onboard';
70
76
  export type { StepperInternalSelect } from './stepper-internal';
71
77
  export type { SiteActions } from './site';
72
78
  export type { UserActions } from './user';
73
79
  export type { Member, UseQuery, UsersQuery } from './users/types';
74
- export { isInSupportSession } from './help-center';
80
+ export { isE2ETest, isInSupportSession } from './utils';
81
+ export { setRequester } from './wpcom-request';
@@ -1,9 +1,9 @@
1
1
  import { UseMutationOptions, useMutation, useQueryClient } from '@tanstack/react-query';
2
2
  import { useCallback } from 'react';
3
- import wpcomRequest from 'wpcom-proxy-request';
4
3
  import { getAllDomainsQueryKey } from '../queries/use-all-domains-query';
5
4
  import { getBulkDomainUpdateStatusQueryKey } from '../queries/use-bulk-domain-update-status-query';
6
5
  import { getSiteDomainsQueryKey } from '../queries/use-site-domains-query';
6
+ import wpcomRequest from '../wpcom-request';
7
7
 
8
8
  interface UpdateContactInfoVariables {
9
9
  type: 'update-contact-info';
@@ -1,5 +1,5 @@
1
1
  import { useQuery, UseQueryResult } from '@tanstack/react-query';
2
- import request from 'wpcom-proxy-request';
2
+ import request from '../wpcom-request';
3
3
 
4
4
  export type NewsletterCategory = {
5
5
  id: number;
@@ -4,10 +4,13 @@
4
4
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
5
5
  import { renderHook, waitFor } from '@testing-library/react';
6
6
  import React from 'react';
7
- import request from 'wpcom-proxy-request';
7
+ import request from '../../wpcom-request';
8
8
  import { useNewsletterCategories } from '../index';
9
9
 
10
- jest.mock( 'wpcom-proxy-request', () => jest.fn() );
10
+ jest.mock( '../../wpcom-request', () => ( {
11
+ __esModule: true,
12
+ default: jest.fn(),
13
+ } ) );
11
14
 
12
15
  describe( 'useNewsletterCategories', () => {
13
16
  let queryClient: QueryClient;
@@ -6,10 +6,9 @@ import { Visibility, GlobalStyles } from '../site/types';
6
6
  import { SiteGoal, STORE_KEY } from './constants';
7
7
  import { ProfilerData, ReadymadeTemplate } from './types';
8
8
  import type { DomainTransferData, State } from '.';
9
- import type { DomainSuggestion } from '../domain-suggestions';
10
9
  import type { FeatureId } from '../shared-types';
11
- // somewhat hacky, but resolves the circular dependency issue
12
- import type { Design, StyleVariation } from '@automattic/design-picker/src/types';
10
+ import type { DomainSuggestion } from '@automattic/api-core';
11
+ import type { Design, StyleVariation } from '@automattic/design-types';
13
12
  import type { MinimalRequestCartProduct } from '@automattic/shopping-cart';
14
13
 
15
14
  // copied from design picker to avoid a circular dependency
@@ -363,6 +362,21 @@ export const setPartnerBundle = ( partnerBundle: string | null ) => ( {
363
362
  partnerBundle,
364
363
  } );
365
364
 
365
+ export const setGardenName = ( gardenName: string | null ) => ( {
366
+ type: 'SET_GARDEN_NAME' as const,
367
+ gardenName,
368
+ } );
369
+
370
+ export const setGardenPartnerName = ( gardenPartnerName: string | null ) => ( {
371
+ type: 'SET_GARDEN_PARTNER_NAME' as const,
372
+ gardenPartnerName,
373
+ } );
374
+
375
+ export const setBlueprint = ( blueprint: string | null ) => ( {
376
+ type: 'SET_BLUEPRINT' as const,
377
+ blueprint,
378
+ } );
379
+
366
380
  export type OnboardAction = ReturnType<
367
381
  | typeof addFeature
368
382
  | typeof removeFeature
@@ -422,4 +436,7 @@ export type OnboardAction = ReturnType<
422
436
  | typeof setPaidSubscribers
423
437
  | typeof setPartnerBundle
424
438
  | typeof setSignupDomainOrigin
439
+ | typeof setGardenName
440
+ | typeof setGardenPartnerName
441
+ | typeof setBlueprint
425
442
  >;
@@ -8,11 +8,10 @@ import type {
8
8
  DomainTransferAuthCodes,
9
9
  ReadymadeTemplate,
10
10
  } from './types';
11
- import type { DomainSuggestion } from '../domain-suggestions';
12
11
  import type { FeatureId } from '../shared-types';
13
12
  import type { GlobalStyles } from '../site';
14
- // somewhat hacky, but resolves the circular dependency issue
15
- import type { Design, StyleVariation } from '@automattic/design-picker/src/types';
13
+ import type { DomainSuggestion } from '@automattic/api-core';
14
+ import type { Design, StyleVariation } from '@automattic/design-types';
16
15
  import type { MinimalRequestCartProduct } from '@automattic/shopping-cart';
17
16
  import type { Reducer } from 'redux';
18
17
 
@@ -612,6 +611,39 @@ const signupDomainOrigin: Reducer< string | undefined, OnboardAction > = (
612
611
  return state;
613
612
  };
614
613
 
614
+ export const gardenName: Reducer< string | null, OnboardAction > = ( state = null, action ) => {
615
+ if ( action.type === 'SET_GARDEN_NAME' ) {
616
+ return action.gardenName;
617
+ }
618
+ if ( action.type === 'RESET_ONBOARD_STORE' ) {
619
+ return null;
620
+ }
621
+ return state;
622
+ };
623
+
624
+ export const gardenPartnerName: Reducer< string | null, OnboardAction > = (
625
+ state = null,
626
+ action
627
+ ) => {
628
+ if ( action.type === 'SET_GARDEN_PARTNER_NAME' ) {
629
+ return action.gardenPartnerName;
630
+ }
631
+ if ( action.type === 'RESET_ONBOARD_STORE' ) {
632
+ return null;
633
+ }
634
+ return state;
635
+ };
636
+
637
+ export const blueprint: Reducer< string | null, OnboardAction > = ( state = null, action ) => {
638
+ if ( action.type === 'SET_BLUEPRINT' ) {
639
+ return action.blueprint;
640
+ }
641
+ if ( action.type === 'RESET_ONBOARD_STORE' ) {
642
+ return null;
643
+ }
644
+ return state;
645
+ };
646
+
615
647
  const reducer = combineReducers( {
616
648
  domain,
617
649
  domainCartItem,
@@ -660,6 +692,9 @@ const reducer = combineReducers( {
660
692
  paidSubscribers,
661
693
  partnerBundle,
662
694
  signupDomainOrigin,
695
+ gardenName,
696
+ gardenPartnerName,
697
+ blueprint,
663
698
  } );
664
699
 
665
700
  export type State = ReturnType< typeof reducer >;
@@ -81,3 +81,6 @@ export const getPluginsToVerify = ( state: State ) => state.pluginsToVerify;
81
81
  export const getProfilerData = ( state: State ) => state.profilerData;
82
82
  export const getPaidSubscribers = ( state: State ) => state.paidSubscribers;
83
83
  export const getPartnerBundle = ( state: State ) => state.partnerBundle;
84
+ export const getGardenName = ( state: State ) => state.gardenName;
85
+ export const getGardenPartnerName = ( state: State ) => state.gardenPartnerName;
86
+ export const getBlueprint = ( state: State ) => state.blueprint;
@@ -1,5 +1,5 @@
1
1
  import { GlobalStyles } from '../site';
2
- import type { DomainSuggestion } from '../domain-suggestions';
2
+ import type { DomainSuggestion } from '@automattic/api-core';
3
3
 
4
4
  export type DomainForm = {
5
5
  lastQuery?: string;
@@ -37,6 +37,7 @@ export const PLAN_BUSINESS_MONTHLY = 'business-bundle-monthly';
37
37
  export const PLAN_ECOMMERCE_MONTHLY = 'ecommerce-bundle-monthly';
38
38
  export const PLAN_ECOMMERCE_TRIAL_MONTHLY = 'ecommerce-trial-bundle-monthly';
39
39
  export const PLAN_MIGRATION_TRIAL_MONTHLY = 'wp_bundle_migration_trial_monthly';
40
+ export const PLAN_PERSONAL_TRIAL_MONTHLY = 'wp-personal-bundle-free-trial-monthly';
40
41
 
41
42
  export const annualSlugs = [ PLAN_PERSONAL, PLAN_PREMIUM, PLAN_BUSINESS, PLAN_ECOMMERCE ] as const;
42
43
 
@@ -47,6 +48,7 @@ export const monthlySlugs = [
47
48
  PLAN_ECOMMERCE_MONTHLY,
48
49
  PLAN_ECOMMERCE_TRIAL_MONTHLY,
49
50
  PLAN_MIGRATION_TRIAL_MONTHLY,
51
+ PLAN_PERSONAL_TRIAL_MONTHLY,
50
52
  ] as const;
51
53
 
52
54
  export const plansProductSlugs = [ PLAN_FREE, ...annualSlugs, ...monthlySlugs ] as const;
@@ -147,6 +147,87 @@ describe( 'usePricingMetaForGridPlans', () => {
147
147
  expect( pricingMeta ).toEqual( expectedPricingMeta );
148
148
  } );
149
149
 
150
+ describe( 'current plan with an active introductory offer', () => {
151
+ beforeEach( () => {
152
+ Plans.useCurrentPlan.mockImplementation( () => ( {
153
+ productSlug: PLAN_BUSINESS,
154
+ planSlug: PLAN_BUSINESS,
155
+ purchaseId: 1234,
156
+ } ) );
157
+ // Yearly purchase: renewal 600/yr, active intro 120/yr.
158
+ Purchases.useSitePurchaseById.mockImplementation( () => ( {
159
+ priceInteger: 600,
160
+ currencyCode: 'USD',
161
+ billPeriodDays: 365,
162
+ introductoryOffer: {
163
+ isWithinPeriod: true,
164
+ costPerIntervalInteger: 120,
165
+ },
166
+ } ) );
167
+ } );
168
+
169
+ it( 'should return the intro price as the headline plus a renewal price for the experiment treatment', () => {
170
+ const pricingMeta = usePricingMetaForGridPlans( {
171
+ planSlugs: [ PLAN_BUSINESS ],
172
+ siteId,
173
+ coupon: undefined,
174
+ useCheckPlanAvailabilityForPurchase,
175
+ showBillingDescriptionForIncreasedRenewalPrice: 'crossed_price',
176
+ } );
177
+
178
+ const expectedPricingMeta = {
179
+ [ PLAN_BUSINESS ]: {
180
+ originalPrice: {
181
+ full: 120,
182
+ monthly: 10,
183
+ },
184
+ discountedPrice: {
185
+ full: null,
186
+ monthly: null,
187
+ },
188
+ billingPeriod: 365,
189
+ currencyCode: 'USD',
190
+ expiry: null,
191
+ introOffer: undefined,
192
+ renewalPrice: {
193
+ full: 600,
194
+ monthly: 50,
195
+ },
196
+ },
197
+ };
198
+
199
+ expect( pricingMeta ).toEqual( expectedPricingMeta );
200
+ } );
201
+
202
+ it( 'should return the renewal price as the headline for non-treatment users', () => {
203
+ const pricingMeta = usePricingMetaForGridPlans( {
204
+ planSlugs: [ PLAN_BUSINESS ],
205
+ siteId,
206
+ coupon: undefined,
207
+ useCheckPlanAvailabilityForPurchase,
208
+ } );
209
+
210
+ const expectedPricingMeta = {
211
+ [ PLAN_BUSINESS ]: {
212
+ originalPrice: {
213
+ full: 600,
214
+ monthly: 50,
215
+ },
216
+ discountedPrice: {
217
+ full: null,
218
+ monthly: null,
219
+ },
220
+ billingPeriod: 365,
221
+ currencyCode: 'USD',
222
+ expiry: null,
223
+ introOffer: undefined,
224
+ },
225
+ };
226
+
227
+ expect( pricingMeta ).toEqual( expectedPricingMeta );
228
+ } );
229
+ } );
230
+
150
231
  it( 'should return the original price as the site plan price and discounted price as Null for plans not available for purchase', () => {
151
232
  Plans.useCurrentPlan.mockImplementation( () => ( {
152
233
  productSlug: PLAN_BUSINESS,
@@ -301,6 +382,45 @@ describe( 'usePricingMetaForGridPlans', () => {
301
382
  }
302
383
  );
303
384
 
385
+ it.each( [
386
+ COST_OVERRIDE_REASONS.RECENT_PLAN_PRORATION,
387
+ COST_OVERRIDE_REASONS.RECENT_DOMAIN_PRORATION,
388
+ ] )(
389
+ "should suppress discounted price when proration override '%s' is not the first cost override entry",
390
+ ( overrideCode ) => {
391
+ Plans.useCurrentPlan.mockImplementation( () => ( {
392
+ productSlug: PLAN_PERSONAL,
393
+ planSlug: PLAN_PERSONAL,
394
+ } ) );
395
+
396
+ Plans.useSitePlans.mockImplementation( () => ( {
397
+ isLoading: false,
398
+ data: {
399
+ [ PLAN_BUSINESS ]: {
400
+ ...SITE_PLANS[ PLAN_BUSINESS ],
401
+ pricing: {
402
+ ...SITE_PLANS[ PLAN_BUSINESS ].pricing,
403
+ costOverrides: [ { overrideCode: 'multiterm-upgrade' }, { overrideCode } ],
404
+ },
405
+ },
406
+ },
407
+ } ) );
408
+
409
+ const pricingMeta = usePricingMetaForGridPlans( {
410
+ planSlugs: [ PLAN_BUSINESS ],
411
+ siteId,
412
+ coupon: undefined,
413
+ useCheckPlanAvailabilityForPurchase,
414
+ withProratedDiscounts: false,
415
+ } );
416
+
417
+ expect( pricingMeta?.[ PLAN_BUSINESS ]?.discountedPrice ).toEqual( {
418
+ full: null,
419
+ monthly: null,
420
+ } );
421
+ }
422
+ );
423
+
304
424
  it( 'should return intro offer when available', () => {
305
425
  Plans.useIntroOffers.mockImplementation( () => ( {
306
426
  [ PLAN_BUSINESS ]: introOffer,