Skip to content

Commit a1358c0

Browse files
Add search context to Help Center when stuck on migration (#103472)
1 parent 5c9fa23 commit a1358c0

File tree

7 files changed

+29
-16
lines changed

7 files changed

+29
-16
lines changed

client/sites/components/sites-dashboard-banners/use-migration-pending-sites-banner.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export function useMigrationPendingSitesBanner( { sitesStatuses }: { sitesStatus
2020
const { setShowHelpCenter } = useDataStoreDispatch( HELP_CENTER_STORE );
2121

2222
const openHelpCenter = useCallback( () => {
23-
setShowHelpCenter( true );
23+
setShowHelpCenter( true, false, { contextTerm: 'migration' } );
2424
}, [ setShowHelpCenter ] );
2525

2626
return {

packages/data-stores/src/help-center/actions.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ export const setMessage = ( message: string ) =>
9393
message,
9494
} ) as const;
9595

96+
export const setContextTerm = ( contextTerm: string ) =>
97+
( {
98+
type: 'HELP_CENTER_SET_CONTEXT_TERM',
99+
contextTerm,
100+
} ) as const;
101+
96102
export const setAllowPremiumSupport = ( allow: boolean ) =>
97103
( {
98104
type: 'HELP_CENTER_SET_ALLOW_PREMIUM_SUPPORT',
@@ -107,7 +113,7 @@ export const setHelpCenterOptions = ( options: HelpCenterOptions ) => ( {
107113
export const setShowHelpCenter = function* (
108114
show: boolean,
109115
allowPremiumSupport = false,
110-
options: HelpCenterShowOptions = { hideBackButton: false, searchTerm: '' }
116+
options: HelpCenterShowOptions = { hideBackButton: false, contextTerm: '' }
111117
): Generator< unknown, { type: 'HELP_CENTER_SET_SHOW'; show: boolean }, unknown > {
112118
const isMinimized = ( select( STORE_KEY ) as HelpCenterSelect ).getIsMinimized();
113119

@@ -148,7 +154,7 @@ export const setShowHelpCenter = function* (
148154
yield setShowMessagingWidget( false );
149155
}
150156

151-
yield setMessage( options?.searchTerm || '' );
157+
yield setContextTerm( options?.contextTerm || '' );
152158
yield setIsMinimized( false );
153159

154160
if ( allowPremiumSupport ) {
@@ -229,6 +235,7 @@ export type HelpCenterAction =
229235
| typeof setSubject
230236
| typeof resetStore
231237
| typeof setMessage
238+
| typeof setContextTerm
232239
| typeof setUserDeclaredSite
233240
| typeof setUserDeclaredSiteUrl
234241
| typeof setUnreadCount

packages/data-stores/src/help-center/reducer.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,13 @@ const allowPremiumSupport: Reducer< boolean, HelpCenterAction > = ( state = fals
161161
return state;
162162
};
163163

164+
const contextTerm: Reducer< string | undefined, HelpCenterAction > = ( state, action ) => {
165+
if ( action.type === 'HELP_CENTER_SET_CONTEXT_TERM' ) {
166+
return action.contextTerm;
167+
}
168+
return state;
169+
};
170+
164171
const helpCenterOptions: Reducer< HelpCenterOptions, HelpCenterAction > = (
165172
state = {},
166173
action
@@ -190,6 +197,7 @@ const reducer = combineReducers( {
190197
odieInitialPromptText,
191198
odieBotNameSlug,
192199
allowPremiumSupport,
200+
contextTerm,
193201
helpCenterOptions,
194202
} );
195203

packages/data-stores/src/help-center/selectors.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ export const getCurrentSupportInteraction = ( state: State ) => state.currentSup
2020
export const getAllowPremiumSupport = ( state: State ) => state.allowPremiumSupport;
2121
export const getHelpCenterOptions = ( state: State ) => state.helpCenterOptions;
2222
export const getOdieChatId = ( state: State ) => state.odieChatId;
23+
export const getContextTerm = ( state: State ) => state.contextTerm;

packages/data-stores/src/help-center/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export type Location = {
1111
};
1212
export interface HelpCenterShowOptions {
1313
hideBackButton: boolean;
14-
searchTerm: string;
14+
contextTerm: string;
1515
}
1616
export interface SiteLogo {
1717
id: number;

packages/help-center/src/components/help-center-search-results.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
import { localizeUrl, useLocale } from '@automattic/i18n-utils';
1313
import { speak } from '@wordpress/a11y';
1414
import { Button } from '@wordpress/components';
15-
import { useDispatch } from '@wordpress/data';
15+
import { useDispatch, useSelect } from '@wordpress/data';
1616
import { decodeEntities } from '@wordpress/html-entities';
1717
import { __ } from '@wordpress/i18n';
1818
import {
@@ -35,7 +35,7 @@ import { HELP_CENTER_STORE } from '../stores';
3535
import HelpCenterRecentConversations from './help-center-recent-conversations';
3636
import PlaceholderLines from './placeholder-lines';
3737
import type { SearchResult } from '../types';
38-
38+
import type { HelpCenterSelect } from '@automattic/data-stores';
3939
import './help-center-search-results.scss';
4040

4141
const MAX_VISIBLE_RESULTS = 5;
@@ -202,6 +202,10 @@ function HelpSearchResults( {
202202
}: HelpSearchResultsProps ) {
203203
const { hasPurchases, sectionName, site } = useHelpCenterContext();
204204
const { setNavigateToRoute } = useDispatch( HELP_CENTER_STORE );
205+
const contextTerm = useSelect(
206+
( select ) => ( select( HELP_CENTER_STORE ) as HelpCenterSelect ).getContextTerm(),
207+
[]
208+
);
205209

206210
const adminResults = useAdminResults( searchQuery );
207211

@@ -222,7 +226,7 @@ function HelpSearchResults( {
222226
const { contextSearch } = useContextBasedSearchMapping( currentRoute );
223227

224228
const { data: searchData, isLoading: isSearching } = useHelpSearchQuery(
225-
searchQuery || contextSearch, // If there's a query, we don't context search
229+
searchQuery || contextTerm || contextSearch, // If there's a query, we don't context search
226230
locale,
227231
currentRoute
228232
);

packages/help-center/src/components/help-center-search.tsx

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable no-restricted-imports */
22
import { recordTracksEvent } from '@automattic/calypso-analytics';
33
import { NewThirdPartyCookiesNotice } from '@automattic/odie-client';
4-
import { useDispatch, useSelect } from '@wordpress/data';
4+
import { useDispatch } from '@wordpress/data';
55
import { useState, useCallback, useEffect } from '@wordpress/element';
66
import { decodeEntities } from '@wordpress/html-entities';
77
import { __ } from '@wordpress/i18n';
@@ -14,7 +14,6 @@ import { SearchResult } from '../types';
1414
import { HelpCenterLaunchpad } from './help-center-launchpad';
1515
import { HelpCenterMoreResources } from './help-center-more-resources';
1616
import HelpCenterSearchResults from './help-center-search-results';
17-
import type { HelpCenterSelect } from '@automattic/data-stores';
1817
import './help-center-search.scss';
1918
import './help-center-launchpad.scss';
2019

@@ -28,14 +27,8 @@ export const HelpCenterSearch = ( { onSearchChange, currentRoute }: HelpCenterSe
2827
const { search } = useLocation();
2928
const params = new URLSearchParams( search );
3029
const { sectionName, site, canConnectToZendesk } = useHelpCenterContext();
31-
const { searchTerm } = useSelect( ( select ) => {
32-
const helpCenterSelect: HelpCenterSelect = select( HELP_CENTER_STORE );
33-
return {
34-
searchTerm: helpCenterSelect.getMessage(),
35-
};
36-
}, [] );
3730
const query = params.get( 'query' );
38-
const [ searchQuery, setSearchQuery ] = useState( query || searchTerm || '' );
31+
const [ searchQuery, setSearchQuery ] = useState( query || '' );
3932
const { setSubject, setMessage } = useDispatch( HELP_CENTER_STORE );
4033

4134
// when the user sets the search query, let's also populate the email subject and body

0 commit comments

Comments
 (0)