@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,60 @@
1
+ import { default as apiFetchPromise } from '@wordpress/api-fetch';
2
+ import { default as wpcomRequestPromise, canAccessWpcomApis } from '../wpcom-request';
3
+ import type { APIFetchOptions } from '../shared-types';
4
+
5
+ /**
6
+ * The Agents Manager stores all its preferences in a single blob that the
7
+ * server read-modify-writes on every save. Two concurrent requests race on that
8
+ * blob (last writer wins), so one partial save can revert another — e.g. a
9
+ * trailing `router_history` write reverting `minimized`.
10
+ *
11
+ * To prevent that, we keep at most one request in flight and merge any saves
12
+ * that arrive meanwhile into a single follow-up request. Saves are
13
+ * fire-and-forget; callers don't await the result.
14
+ */
15
+ let pending: Record< string, unknown > = {};
16
+ let inFlight = false;
17
+
18
+ function send( state: Record< string, unknown > ): Promise< unknown > {
19
+ if ( canAccessWpcomApis() ) {
20
+ return wpcomRequestPromise( {
21
+ path: '/agents-manager/state',
22
+ apiNamespace: 'wpcom/v2',
23
+ method: 'POST',
24
+ body: { state },
25
+ } );
26
+ }
27
+ return apiFetchPromise( {
28
+ global: true,
29
+ path: '/agents-manager/open-state',
30
+ method: 'PUT',
31
+ data: state,
32
+ } as APIFetchOptions );
33
+ }
34
+
35
+ function flush(): void {
36
+ if ( inFlight || Object.keys( pending ).length === 0 ) {
37
+ return;
38
+ }
39
+
40
+ const state = pending;
41
+ pending = {};
42
+ inFlight = true;
43
+
44
+ // Whatever the outcome, free the slot and send anything that accumulated
45
+ // while this request was in flight.
46
+ const done = () => {
47
+ inFlight = false;
48
+ flush();
49
+ };
50
+ send( state ).then( done, done );
51
+ }
52
+
53
+ /**
54
+ * Persist a partial Agents Manager state to the user's preferences.
55
+ * @param state - Object with the prefs to save (e.g. `{ agents_manager_minimized: false }`).
56
+ */
57
+ export function persistAgentsManagerState( state: Record< string, unknown > ): void {
58
+ Object.assign( pending, state );
59
+ flush();
60
+ }
@@ -0,0 +1,106 @@
1
+ import { combineReducers } from '@wordpress/data';
2
+ import { PerSiteLastActivity, PerSiteRouterHistory } from './types';
3
+ import type { AgentsManagerAction } from './actions';
4
+ import type { Reducer } from 'redux';
5
+
6
+ const isOpen: Reducer< boolean, AgentsManagerAction > = ( state = false, action ) => {
7
+ switch ( action.type ) {
8
+ case 'AGENTS_MANAGER_SET_OPEN':
9
+ return action.isOpen;
10
+ }
11
+ return state;
12
+ };
13
+
14
+ const isDocked: Reducer< boolean, AgentsManagerAction > = ( state = false, action ) => {
15
+ switch ( action.type ) {
16
+ case 'AGENTS_MANAGER_SET_DOCKED':
17
+ return action.isDocked;
18
+ }
19
+ return state;
20
+ };
21
+
22
+ export const isMinimized: Reducer< boolean, AgentsManagerAction > = ( state = false, action ) => {
23
+ switch ( action.type ) {
24
+ case 'AGENTS_MANAGER_SET_MINIMIZED':
25
+ return action.isMinimized;
26
+ }
27
+ return state;
28
+ };
29
+
30
+ const routerHistory: Reducer< PerSiteRouterHistory | undefined, AgentsManagerAction > = (
31
+ state,
32
+ action
33
+ ) => {
34
+ switch ( action.type ) {
35
+ case 'AGENTS_MANAGER_SET_ROUTER_HISTORY':
36
+ return action.history;
37
+ }
38
+ return state;
39
+ };
40
+
41
+ const lastActivity: Reducer< PerSiteLastActivity | undefined, AgentsManagerAction > = (
42
+ state,
43
+ action
44
+ ) => {
45
+ switch ( action.type ) {
46
+ case 'AGENTS_MANAGER_SET_LAST_ACTIVITY':
47
+ return action.lastActivity;
48
+ }
49
+ return state;
50
+ };
51
+
52
+ const isLoading: Reducer< boolean, AgentsManagerAction > = ( state = false, action ) => {
53
+ switch ( action.type ) {
54
+ case 'AGENTS_MANAGER_SET_LOADING':
55
+ return action.isLoading;
56
+ }
57
+ return state;
58
+ };
59
+
60
+ const hasLoaded: Reducer< boolean, AgentsManagerAction > = ( state = false, action ) => {
61
+ switch ( action.type ) {
62
+ case 'AGENTS_MANAGER_SET_HAS_LOADED':
63
+ return action.hasLoaded;
64
+ }
65
+ return state;
66
+ };
67
+
68
+ const floatingPosition: Reducer< 'left' | 'right', AgentsManagerAction > = (
69
+ state = 'right',
70
+ action
71
+ ) => {
72
+ switch ( action.type ) {
73
+ case 'AGENTS_MANAGER_SET_FLOATING_POSITION':
74
+ return action.floatingPosition;
75
+ }
76
+ return state;
77
+ };
78
+
79
+ export const isSplitScreen: Reducer< boolean, AgentsManagerAction > = ( state = false, action ) => {
80
+ switch ( action.type ) {
81
+ case 'AGENTS_MANAGER_SET_SPLIT_SCREEN':
82
+ return action.isSplitScreen;
83
+ // Split-screen only makes sense while docked. Reset on undock so an
84
+ // out-of-band `setIsDocked(false)` (e.g. from `window.__agentsManagerActions`)
85
+ // can't leave a stale `true` that re-applies on the next dock.
86
+ case 'AGENTS_MANAGER_SET_DOCKED':
87
+ return action.isDocked ? state : false;
88
+ }
89
+ return state;
90
+ };
91
+
92
+ const reducer = combineReducers( {
93
+ isOpen,
94
+ isDocked,
95
+ isMinimized,
96
+ routerHistory,
97
+ lastActivity,
98
+ isLoading,
99
+ hasLoaded,
100
+ floatingPosition,
101
+ isSplitScreen,
102
+ } );
103
+
104
+ export type State = ReturnType< typeof reducer >;
105
+
106
+ export default reducer;
@@ -0,0 +1,87 @@
1
+ import { apiFetch } from '@wordpress/data-controls';
2
+ import { canAccessWpcomApis } from '../wpcom-request';
3
+ import { wpcomRequest } from '../wpcom-request-controls';
4
+ import {
5
+ setRouterHistory,
6
+ setLastActivity,
7
+ setIsDocked,
8
+ setIsMinimized,
9
+ setIsOpen,
10
+ setIsLoading,
11
+ setHasLoaded,
12
+ setFloatingPosition,
13
+ } from './actions';
14
+ import type { PerSiteLastActivity, PerSiteRouterHistory } from './types';
15
+ import type { APIFetchOptions } from '../shared-types';
16
+
17
+ const VALID_SITE_KEY = /^\d+$|^no-site$/;
18
+
19
+ /**
20
+ * Validate that the router history is in the expected per-site format,
21
+ * keyed by numeric site ID or 'no-site'.
22
+ */
23
+ function isValidRouterHistory( value: unknown ): value is PerSiteRouterHistory {
24
+ return (
25
+ value !== null &&
26
+ typeof value === 'object' &&
27
+ Object.keys( value ).every( ( key ) => VALID_SITE_KEY.test( key ) )
28
+ );
29
+ }
30
+
31
+ type AgentsManagerStateResponse = {
32
+ agents_manager_open?: boolean;
33
+ agents_manager_docked?: boolean;
34
+ agents_manager_minimized?: boolean;
35
+ agents_manager_floating_position?: 'left' | 'right';
36
+ agents_manager_router_history?: PerSiteRouterHistory;
37
+ agents_manager_last_activity?: PerSiteLastActivity;
38
+ };
39
+
40
+ export function* getAgentsManagerState() {
41
+ yield setIsLoading( true );
42
+ try {
43
+ const state: AgentsManagerStateResponse = canAccessWpcomApis()
44
+ ? yield wpcomRequest( {
45
+ path: '/agents-manager/state',
46
+ apiNamespace: 'wpcom/v2',
47
+ } )
48
+ : yield apiFetch( {
49
+ global: true,
50
+ path: '/agents-manager/open-state',
51
+ } as APIFetchOptions );
52
+
53
+ const activityMap = state.agents_manager_last_activity;
54
+ if ( activityMap ) {
55
+ yield setLastActivity( activityMap );
56
+ }
57
+
58
+ if ( isValidRouterHistory( state.agents_manager_router_history ) ) {
59
+ yield setRouterHistory( state.agents_manager_router_history );
60
+ }
61
+
62
+ if ( typeof state.agents_manager_docked === 'boolean' ) {
63
+ yield setIsDocked( state.agents_manager_docked, false );
64
+ }
65
+
66
+ if ( typeof state.agents_manager_minimized === 'boolean' ) {
67
+ yield setIsMinimized( state.agents_manager_minimized, false );
68
+ }
69
+
70
+ if (
71
+ state.agents_manager_floating_position === 'left' ||
72
+ state.agents_manager_floating_position === 'right'
73
+ ) {
74
+ yield setFloatingPosition( state.agents_manager_floating_position, false );
75
+ }
76
+
77
+ // We only want to auto-open, we don't want to auto-close (and potentially overrule the user's action).
78
+ if ( state.agents_manager_open ) {
79
+ yield setIsOpen( true, false );
80
+ }
81
+ } catch {
82
+ // Ignore errors
83
+ } finally {
84
+ yield setIsLoading( false );
85
+ yield setHasLoaded( true );
86
+ }
87
+ }
@@ -0,0 +1,32 @@
1
+ import type { State } from './reducer';
2
+
3
+ export const getAgentsManagerState = ( state: State ) => ( {
4
+ isOpen: state.isOpen,
5
+ isDocked: state.isDocked,
6
+ isMinimized: state.isMinimized,
7
+ routerHistory: state.routerHistory,
8
+ lastActivity: state.lastActivity,
9
+ isLoading: state.isLoading,
10
+ hasLoaded: state.hasLoaded,
11
+ floatingPosition: state.floatingPosition,
12
+ isSplitScreen: state.isSplitScreen,
13
+ } );
14
+ export const getIsOpen = ( state: State ) => state.isOpen;
15
+ export const getIsDocked = ( state: State ) => state.isDocked;
16
+ export const getIsMinimized = ( state: State ) => state.isMinimized;
17
+ export const getIsSplitScreen = ( state: State ) => state.isSplitScreen;
18
+ export const getRouterHistory = ( state: State, siteKey: string ) => {
19
+ if ( ! state.routerHistory ) {
20
+ return undefined;
21
+ }
22
+ return state.routerHistory[ siteKey ];
23
+ };
24
+ export const getLastActivity = ( state: State, siteKey: string ) => {
25
+ if ( ! state.lastActivity ) {
26
+ return undefined;
27
+ }
28
+ return state.lastActivity[ siteKey ];
29
+ };
30
+ export const getIsLoading = ( state: State ) => state.isLoading;
31
+ export const getHasLoaded = ( state: State ) => state.hasLoaded;
32
+ export const getFloatingPosition = ( state: State ) => state.floatingPosition;
@@ -0,0 +1,81 @@
1
+ import apiFetch from '@wordpress/api-fetch';
2
+ import wpcomRequest, { canAccessWpcomApis } from '../../wpcom-request';
3
+ import { persistAgentsManagerState } from '../persist-state';
4
+
5
+ jest.mock( '@wordpress/api-fetch', () => ( {
6
+ __esModule: true,
7
+ default: jest.fn(),
8
+ } ) );
9
+
10
+ jest.mock( '../../wpcom-request', () => ( {
11
+ __esModule: true,
12
+ default: jest.fn(),
13
+ canAccessWpcomApis: jest.fn(),
14
+ } ) );
15
+
16
+ const mockRequest = wpcomRequest as unknown as jest.Mock;
17
+ const mockApiFetch = apiFetch as unknown as jest.Mock;
18
+ const mockCanAccess = canAccessWpcomApis as unknown as jest.Mock;
19
+
20
+ // Let the queued flush chain (microtasks) run to completion.
21
+ const tick = () => new Promise( ( resolve ) => setTimeout( resolve, 0 ) );
22
+
23
+ describe( 'persistAgentsManagerState', () => {
24
+ beforeEach( () => {
25
+ jest.clearAllMocks();
26
+ mockCanAccess.mockReturnValue( true );
27
+ mockRequest.mockResolvedValue( undefined );
28
+ mockApiFetch.mockResolvedValue( undefined );
29
+ } );
30
+
31
+ it( 'sends a single save as one wpcom request', async () => {
32
+ persistAgentsManagerState( { agents_manager_minimized: false } );
33
+
34
+ expect( mockRequest ).toHaveBeenCalledTimes( 1 );
35
+ expect( mockRequest ).toHaveBeenCalledWith(
36
+ expect.objectContaining( { body: { state: { agents_manager_minimized: false } } } )
37
+ );
38
+ await tick();
39
+ } );
40
+
41
+ it( 'coalesces saves that arrive mid-flight into one merged follow-up request', async () => {
42
+ let finishFirst: () => void = () => {};
43
+ mockRequest.mockReturnValueOnce(
44
+ new Promise< void >( ( resolve ) => ( finishFirst = resolve ) )
45
+ );
46
+
47
+ // First save goes out immediately and stays in flight.
48
+ persistAgentsManagerState( { agents_manager_router_history: 'a' } );
49
+ // These arrive while it's in flight — they must not race; they merge.
50
+ persistAgentsManagerState( { agents_manager_minimized: false } );
51
+ persistAgentsManagerState( { agents_manager_router_history: 'b' } );
52
+
53
+ expect( mockRequest ).toHaveBeenCalledTimes( 1 );
54
+
55
+ finishFirst();
56
+ await tick();
57
+
58
+ // One follow-up carrying the merged state (last value wins per key).
59
+ expect( mockRequest ).toHaveBeenCalledTimes( 2 );
60
+ expect( mockRequest ).toHaveBeenLastCalledWith(
61
+ expect.objectContaining( {
62
+ body: { state: { agents_manager_minimized: false, agents_manager_router_history: 'b' } },
63
+ } )
64
+ );
65
+ } );
66
+
67
+ it( 'falls back to apiFetch when wpcom APIs are unavailable', async () => {
68
+ mockCanAccess.mockReturnValue( false );
69
+
70
+ persistAgentsManagerState( { agents_manager_open: true } );
71
+
72
+ expect( mockRequest ).not.toHaveBeenCalled();
73
+ expect( mockApiFetch ).toHaveBeenCalledWith(
74
+ expect.objectContaining( {
75
+ path: '/agents-manager/open-state',
76
+ data: { agents_manager_open: true },
77
+ } )
78
+ );
79
+ await tick();
80
+ } );
81
+ } );
@@ -0,0 +1,69 @@
1
+ import { isMinimized, isSplitScreen } from '../reducer';
2
+ import { getIsMinimized, getIsSplitScreen } from '../selectors';
3
+ import type { State } from '../reducer';
4
+
5
+ const setSplit = ( isSplit: boolean ) =>
6
+ ( { type: 'AGENTS_MANAGER_SET_SPLIT_SCREEN', isSplitScreen: isSplit } ) as const;
7
+
8
+ const setMinimized = ( minimized: boolean ) =>
9
+ ( { type: 'AGENTS_MANAGER_SET_MINIMIZED', isMinimized: minimized } ) as const;
10
+
11
+ describe( 'isSplitScreen reducer slice', () => {
12
+ it( 'defaults to false', () => {
13
+ expect( isSplitScreen( undefined, { type: '@@INIT' } as never ) ).toBe( false );
14
+ } );
15
+
16
+ it( 'returns the action value on `AGENTS_MANAGER_SET_SPLIT_SCREEN`', () => {
17
+ expect( isSplitScreen( false, setSplit( true ) ) ).toBe( true );
18
+ expect( isSplitScreen( true, setSplit( false ) ) ).toBe( false );
19
+ } );
20
+
21
+ it( 'leaves state untouched on unrelated actions', () => {
22
+ expect(
23
+ isSplitScreen( true, { type: 'AGENTS_MANAGER_SET_OPEN', isOpen: false } as never )
24
+ ).toBe( true );
25
+ } );
26
+
27
+ it( 'resets to false when the sidebar is undocked', () => {
28
+ const undock = { type: 'AGENTS_MANAGER_SET_DOCKED', isDocked: false } as never;
29
+ expect( isSplitScreen( true, undock ) ).toBe( false );
30
+ } );
31
+
32
+ it( 'preserves state when the sidebar is (re-)docked', () => {
33
+ const dock = { type: 'AGENTS_MANAGER_SET_DOCKED', isDocked: true } as never;
34
+ expect( isSplitScreen( true, dock ) ).toBe( true );
35
+ expect( isSplitScreen( false, dock ) ).toBe( false );
36
+ } );
37
+ } );
38
+
39
+ describe( 'getIsSplitScreen selector', () => {
40
+ it( 'returns the slice value', () => {
41
+ const state = { isSplitScreen: true } as State;
42
+ expect( getIsSplitScreen( state ) ).toBe( true );
43
+ expect( getIsSplitScreen( { isSplitScreen: false } as State ) ).toBe( false );
44
+ } );
45
+ } );
46
+
47
+ describe( 'isMinimized reducer slice', () => {
48
+ it( 'defaults to false', () => {
49
+ expect( isMinimized( undefined, { type: '@@INIT' } as never ) ).toBe( false );
50
+ } );
51
+
52
+ it( 'returns the action value on `AGENTS_MANAGER_SET_MINIMIZED`', () => {
53
+ expect( isMinimized( undefined, setMinimized( true ) ) ).toBe( true );
54
+ expect( isMinimized( true, setMinimized( false ) ) ).toBe( false );
55
+ } );
56
+
57
+ it( 'leaves state untouched on unrelated actions', () => {
58
+ expect( isMinimized( true, { type: 'AGENTS_MANAGER_SET_OPEN', isOpen: false } as never ) ).toBe(
59
+ true
60
+ );
61
+ } );
62
+ } );
63
+
64
+ describe( 'getIsMinimized selector', () => {
65
+ it( 'returns the slice value', () => {
66
+ expect( getIsMinimized( { isMinimized: true } as State ) ).toBe( true );
67
+ expect( getIsMinimized( { isMinimized: false } as State ) ).toBe( false );
68
+ } );
69
+ } );
@@ -0,0 +1,24 @@
1
+ import { Location } from 'history';
2
+ import * as actions from './actions';
3
+ import * as selectors from './selectors';
4
+ import type { DispatchFromMap, SelectFromMap } from '../mapped-types';
5
+
6
+ /**
7
+ * Minimal site data needed by AgentsManager.
8
+ */
9
+ export interface AgentsManagerSite {
10
+ ID: number | string;
11
+ domain: string;
12
+ }
13
+
14
+ export type Dispatch = DispatchFromMap< typeof actions >;
15
+ export type AgentsManagerSelect = SelectFromMap< typeof selectors >;
16
+
17
+ export type SingleRouterHistory = {
18
+ entries: Location[];
19
+ index: number;
20
+ };
21
+
22
+ export type PerSiteRouterHistory = Record< string, SingleRouterHistory >;
23
+
24
+ export type PerSiteLastActivity = Record< string, number >;
@@ -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
  },
@@ -150,7 +150,7 @@ export function generateAdminSections(
150
150
  __(
151
151
  "By upgrading to the %s plan, you'll be able to monetize your site through the WordAds program."
152
152
  ),
153
- getPlan( PLAN_PREMIUM )?.getTitle()
153
+ String( getPlan( PLAN_PREMIUM )?.getTitle() ?? '' )
154
154
  ),
155
155
  link: `/earn/${ siteSlug }`,
156
156
  synonyms: [ 'monetize', 'wordads', 'premium', 'explorer' ],