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