Skip to content

Commit dbd2e70

Browse files
escapemanuelealshakeroagrullon95
authored
Help Center: Refactoring shouldUseHelpCenterExperience (#97352)
* Refactoring shouldUseHelpCenterExperience * Simplify code * Unused types * Refactor again * Missing refactor * Refactor * Fix styling * Remove unnecessary spread operator Co-authored-by: Omar Alshaker <[email protected]> * Update packages/help-center/src/components/help-center-feedback-form.tsx Co-authored-by: Anthony Grullon <[email protected]> --------- Co-authored-by: Omar Alshaker <[email protected]> Co-authored-by: Anthony Grullon <[email protected]>
1 parent 63ab526 commit dbd2e70

33 files changed

+660
-1587
lines changed

packages/help-center/src/components/help-center-article-content.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,7 @@ const ArticleContent = ( { isLoading = false, post }: ArticleContentProps ) => {
2727
dangerouslySetInnerHTML={ { __html: post.content } }
2828
ref={ articleContentRef }
2929
/>
30-
<HelpCenterFeedbackForm
31-
postId={ post.ID }
32-
blogId={ post.site_ID }
33-
slug={ post.slug }
34-
articleUrl={ post.URL }
35-
/>
30+
<HelpCenterFeedbackForm postId={ post.ID } />
3631
</EmbedContainer>
3732
</>
3833
) }

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ export function HelpCenterChat( {
2323
const navigate = useNavigate();
2424
const shouldUseWapuu = useShouldUseWapuu();
2525
const preventOdieAccess = ! shouldUseWapuu && ! isUserEligibleForPaidSupport;
26-
const { currentUser, site, shouldUseHelpCenterExperience, canConnectToZendesk } =
27-
useHelpCenterContext();
26+
const { currentUser, site, canConnectToZendesk } = useHelpCenterContext();
2827
const { id: conversationId = null } = useParams();
2928

3029
useEffect( () => {
@@ -37,11 +36,8 @@ export function HelpCenterChat( {
3736
}
3837
}, [] );
3938

40-
const odieVersion = null; // Use the default version specified on the back-end
41-
4239
return (
4340
<OdieAssistantProvider
44-
shouldUseHelpCenterExperience={ shouldUseHelpCenterExperience }
4541
currentUser={ currentUser }
4642
canConnectToZendesk={ canConnectToZendesk }
4743
selectedSiteId={ site?.ID as number }
@@ -51,7 +47,6 @@ export function HelpCenterChat( {
5147
extraContactOptions={
5248
<ExtraContactOptions isUserEligible={ isUserEligibleForPaidSupport } />
5349
}
54-
version={ odieVersion }
5550
>
5651
<div className="help-center__container-chat">
5752
<OdieAssistant />

packages/help-center/src/components/help-center-contact-page.tsx

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -244,33 +244,21 @@ const HelpCenterFooterButton = ( {
244244
};
245245

246246
export const HelpCenterContactButton: FC = () => {
247-
const { shouldUseHelpCenterExperience } = useHelpCenterContext();
248247
const { canConnectToZendesk } = useHelpCenterContext();
249248
const { __ } = useI18n();
250249
const { data: supportInteractionsResolved } = useGetSupportInteractions(
251250
'zendesk',
252251
100,
253-
'resolved',
254-
undefined,
255-
shouldUseHelpCenterExperience
256-
);
257-
const { data: supportInteractionsOpen } = useGetSupportInteractions(
258-
'zendesk',
259-
10,
260-
'open',
261-
undefined,
262-
shouldUseHelpCenterExperience
252+
'resolved'
263253
);
254+
const { data: supportInteractionsOpen } = useGetSupportInteractions( 'zendesk', 10, 'open' );
264255

265256
const supportInteractions = [
266257
...( supportInteractionsResolved || [] ),
267258
...( supportInteractionsOpen || [] ),
268259
];
269260

270-
return shouldUseHelpCenterExperience &&
271-
canConnectToZendesk &&
272-
supportInteractions &&
273-
supportInteractions?.length > 0 ? (
261+
return canConnectToZendesk && supportInteractions && supportInteractions?.length > 0 ? (
274262
<>
275263
<HelpCenterFooterButton
276264
icon={ comment }

packages/help-center/src/components/help-center-feedback-form.tsx

Lines changed: 21 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,27 @@
11
import { recordTracksEvent } from '@automattic/calypso-analytics';
2-
import { getPlan } from '@automattic/calypso-products';
3-
import { HelpCenterSite } from '@automattic/data-stores';
42
import { GetSupport } from '@automattic/odie-client/src/components/message/get-support';
53
import { useManageSupportInteraction } from '@automattic/odie-client/src/data';
64
import { useI18n } from '@wordpress/react-i18n';
7-
import { addQueryArgs } from '@wordpress/url';
85
import { useState } from 'react';
96
import { useNavigate } from 'react-router-dom';
107
import { v4 as uuidv4 } from 'uuid';
118
import { useHelpCenterContext } from '../contexts/HelpCenterContext';
129
import { useSupportStatus } from '../data/use-support-status';
1310
import { useResetSupportInteraction } from '../hooks/use-reset-support-interaction';
1411
import { ThumbsDownIcon, ThumbsUpIcon } from '../icons/thumbs';
15-
import HelpCenterContactSupportOption from './help-center-contact-support-option';
1612
import { generateContactOnClickEvent } from './utils';
1713

1814
import './help-center-feedback-form.scss';
1915

20-
interface HelpCenterFeedbackFormProps {
21-
postId: number;
22-
blogId?: number | null;
23-
slug?: string;
24-
articleUrl?: string | null | undefined;
25-
}
26-
const HelpCenterFeedbackForm = ( {
27-
postId,
28-
blogId,
29-
slug,
30-
articleUrl,
31-
}: HelpCenterFeedbackFormProps ) => {
16+
const HelpCenterFeedbackForm = ( { postId }: { postId: number } ) => {
3217
const { __ } = useI18n();
3318
const [ startedFeedback, setStartedFeedback ] = useState< boolean | null >( null );
3419
const [ answerValue, setAnswerValue ] = useState< number | null >( null );
3520

3621
const { data } = useSupportStatus();
3722
const isUserEligibleForPaidSupport = Boolean( data?.eligibility?.is_user_eligible );
38-
const { sectionName, site, shouldUseHelpCenterExperience } = useHelpCenterContext();
23+
const { site } = useHelpCenterContext();
3924
const navigate = useNavigate();
40-
const productSlug = ( site as HelpCenterSite )?.plan?.product_slug;
41-
const plan = getPlan( productSlug );
42-
const productId = plan?.getProductId();
4325
const resetSupportInteraction = useResetSupportInteraction();
4426
const { startNewInteraction } = useManageSupportInteraction();
4527

@@ -54,12 +36,9 @@ const HelpCenterFeedbackForm = ( {
5436
};
5537

5638
const FeedbackButtons = () => {
57-
const feedbackButtonsText = shouldUseHelpCenterExperience
58-
? __( 'Was this helpful?' )
59-
: __( 'Did you find the answer to your question?' );
6039
return (
6140
<>
62-
<p>{ feedbackButtonsText }</p>
41+
<p>{ __( 'Was this helpful?', __i18n_text_domain__ ) }</p>
6342
<div className="help-center-feedback-form__buttons">
6443
<button
6544
// 1 is used as `yes` in crowdsignal as well, do not change
@@ -78,34 +57,6 @@ const HelpCenterFeedbackForm = ( {
7857
);
7958
};
8059

81-
const feedbackFormUrl = addQueryArgs(
82-
'https://wordpressdotcom.survey.fm/helpcenter-articles-feedback',
83-
{
84-
q_1_choice: answerValue,
85-
guide: slug,
86-
postId,
87-
blogId,
88-
}
89-
);
90-
91-
const FeedbackTextArea = () => {
92-
if ( shouldUseHelpCenterExperience ) {
93-
return <p>{ __( 'Great! Thanks.', __i18n_text_domain__ ) }</p>;
94-
}
95-
return (
96-
<>
97-
<p>{ __( 'How we can improve?' ) }</p>
98-
<iframe
99-
title={ __( 'Feedback Form' ) }
100-
// This is the URL of the feedback form,
101-
// `answerValue` is either 1 or 2 and it is used to skip the first question since we are already asking it here.
102-
// it is necessary to help crowd signal to `skip` ( display none with css ) the first question and save the correct value.
103-
src={ feedbackFormUrl }
104-
></iframe>
105-
</>
106-
);
107-
};
108-
10960
const handleContactSupportClick = async () => {
11061
generateContactOnClickEvent( 'chat', 'calypso_helpcenter_feedback_contact_support' );
11162
if ( isUserEligibleForPaidSupport ) {
@@ -121,35 +72,25 @@ const HelpCenterFeedbackForm = ( {
12172
return (
12273
<div className="help-center-feedback__form">
12374
{ startedFeedback === null && <FeedbackButtons /> }
124-
{ startedFeedback !== null && answerValue === 1 && <FeedbackTextArea /> }
125-
{ startedFeedback !== null &&
126-
answerValue === 2 &&
127-
site &&
128-
( shouldUseHelpCenterExperience ? (
129-
<>
130-
<div className="odie-chatbox-dislike-feedback-message">
131-
<p>
132-
{ __(
133-
'Would you like to contact our support team? Select an option below:',
134-
__i18n_text_domain__
135-
) }
136-
</p>
137-
</div>
138-
<GetSupport
139-
onClickAdditionalEvent={ handleContactSupportClick }
140-
isUserEligibleForPaidSupport={ isUserEligibleForPaidSupport }
141-
/>
142-
</>
143-
) : (
144-
<HelpCenterContactSupportOption
145-
sectionName={ sectionName }
146-
productId={ productId }
147-
site={ site }
148-
triggerSource="article-feedback-form"
149-
articleUrl={ articleUrl }
150-
trackEventName="calypso_helpcenter_feedback_contact_support"
75+
{ startedFeedback !== null && answerValue === 1 && (
76+
<p>{ __( 'Great! Thanks.', __i18n_text_domain__ ) }</p>
77+
) }
78+
{ startedFeedback !== null && answerValue === 2 && site && (
79+
<>
80+
<div className="odie-chatbox-dislike-feedback-message">
81+
<p>
82+
{ __(
83+
'Would you like to contact our support team? Select an option below:',
84+
__i18n_text_domain__
85+
) }
86+
</p>
87+
</div>
88+
<GetSupport
89+
onClickAdditionalEvent={ handleContactSupportClick }
90+
isUserEligibleForPaidSupport={ isUserEligibleForPaidSupport }
15191
/>
152-
) ) }
92+
</>
93+
) }
15394
</div>
15495
);
15596
};

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

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { useI18n } from '@wordpress/react-i18n';
1212
import clsx from 'clsx';
1313
import { Route, Routes, useLocation, useSearchParams } from 'react-router-dom';
1414
import { v4 as uuidv4 } from 'uuid';
15-
import { useHelpCenterContext } from '../contexts/HelpCenterContext';
1615
import { usePostByUrl } from '../hooks';
1716
import { useResetSupportInteraction } from '../hooks/use-reset-support-interaction';
1817
import { DragIcon } from '../icons';
@@ -109,8 +108,6 @@ const HeaderText = () => {
109108
};
110109
}, [] );
111110

112-
const { shouldUseHelpCenterExperience } = useHelpCenterContext();
113-
114111
useEffect( () => {
115112
if ( currentSupportInteraction ) {
116113
const zendeskEvent = currentSupportInteraction?.events.find(
@@ -126,27 +123,22 @@ const HeaderText = () => {
126123

127124
const headerText = useMemo( () => {
128125
const getOdieHeader = () => {
129-
if ( shouldUseHelpCenterExperience ) {
130-
return isConversationWithZendesk
131-
? __( 'Support Team', __i18n_text_domain__ )
132-
: __( 'Support Assistant', __i18n_text_domain__ );
133-
}
134-
return __( 'Wapuu', __i18n_text_domain__ );
126+
return isConversationWithZendesk
127+
? __( 'Support Team', __i18n_text_domain__ )
128+
: __( 'Support Assistant', __i18n_text_domain__ );
135129
};
136130

137131
switch ( pathname ) {
138132
case '/odie':
139133
return getOdieHeader();
140134
case '/contact-form':
141-
return shouldUseHelpCenterExperience
142-
? __( 'Support Assistant', __i18n_text_domain__ )
143-
: __( 'Wapuu', __i18n_text_domain__ );
135+
return __( 'Support Assistant', __i18n_text_domain__ );
144136
case '/chat-history':
145137
return __( 'History', __i18n_text_domain__ );
146138
default:
147139
return __( 'Help Center', __i18n_text_domain__ );
148140
}
149-
}, [ __, isConversationWithZendesk, pathname, shouldUseHelpCenterExperience ] );
141+
}, [ __, isConversationWithZendesk, pathname ] );
150142

151143
return (
152144
<span id="header-text" role="presentation" className="help-center-header__text">
@@ -159,10 +151,7 @@ const Content = ( { onMinimize }: { onMinimize?: () => void } ) => {
159151
const { __ } = useI18n();
160152
const { pathname } = useLocation();
161153

162-
const { shouldUseHelpCenterExperience } = useHelpCenterContext();
163-
164-
const shouldDisplayClearChatButton =
165-
shouldUseHelpCenterExperience && pathname.startsWith( '/odie' );
154+
const shouldDisplayClearChatButton = pathname.startsWith( '/odie' );
166155
const isHelpCenterHome = pathname === '/';
167156

168157
return (
@@ -194,7 +183,6 @@ const ContentMinimized = ( {
194183
const { __ } = useI18n();
195184
const formattedUnreadCount = unreadCount > 9 ? '9+' : unreadCount;
196185

197-
const { shouldUseHelpCenterExperience } = useHelpCenterContext();
198186
return (
199187
<>
200188
<p
@@ -214,14 +202,7 @@ const ContentMinimized = ( {
214202
<Route path="/contact-form" element={ <SupportModeTitle /> } />
215203
<Route path="/post" element={ <ArticleTitle /> } />
216204
<Route path="/success" element={ __( 'Message Submitted', __i18n_text_domain__ ) } />
217-
<Route
218-
path="/odie"
219-
element={
220-
shouldUseHelpCenterExperience
221-
? __( 'Support Assistant', __i18n_text_domain__ )
222-
: __( 'Wapuu', __i18n_text_domain__ )
223-
}
224-
/>
205+
<Route path="/odie" element={ __( 'Support Assistant', __i18n_text_domain__ ) } />
225206
<Route path="/chat-history" element={ __( 'History', __i18n_text_domain__ ) } />
226207
</Routes>
227208
{ unreadCount > 0 && (

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,6 @@ function HelpSearchResults( {
189189
currentRoute,
190190
}: HelpSearchResultsProps ) {
191191
const { hasPurchases, sectionName, site } = useHelpCenterContext();
192-
const { shouldUseHelpCenterExperience } = useHelpCenterContext();
193192

194193
const adminResults = useAdminResults( searchQuery );
195194

@@ -347,7 +346,7 @@ function HelpSearchResults( {
347346

348347
return (
349348
<div className="help-center-search-results" aria-label={ resultsLabel }>
350-
{ shouldUseHelpCenterExperience && <HelpCenterRecentConversations /> }
349+
<HelpCenterRecentConversations />
351350
{ isSearching && ! searchResults.length && <PlaceholderLines lines={ placeholderLines } /> }
352351
{ searchQuery && ! ( hasAPIResults || isSearching ) ? (
353352
<p className="help-center-search-results__empty-results">

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ const HelpCenterSmooch: React.FC< { enableAuth: boolean } > = ( { enableAuth } )
5858
const { isMessagingScriptLoaded } = useLoadZendeskMessaging(
5959
'zendesk_support_chat_key',
6060
isEligibleForChat && enableAuth,
61-
isEligibleForChat && enableAuth,
62-
true
61+
isEligibleForChat && enableAuth
6362
);
6463
const { setIsChatLoaded, setZendeskClientId } = useDataStoreDispatch( HELP_CENTER_STORE );
6564
const getUnreadNotifications = useGetUnreadConversations();

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,13 @@ import { HELP_CENTER_STORE } from '../stores';
2020
import { Container } from '../types';
2121
import HelpCenterContainer from './help-center-container';
2222
import HelpCenterSmooch from './help-center-smooch';
23-
import { isUseHelpCenterExperienceEnabled } from './utils';
2423
import type { HelpCenterSelect } from '@automattic/data-stores';
2524
import '../styles.scss';
2625

2726
const HelpCenter: React.FC< Container > = ( {
2827
handleClose,
2928
hidden,
3029
currentRoute = window.location.pathname + window.location.search,
31-
shouldUseHelpCenterExperience,
3230
} ) => {
3331
const portalParent = useRef( document.createElement( 'div' ) ).current;
3432

@@ -80,7 +78,7 @@ const HelpCenter: React.FC< Container > = ( {
8078
currentRoute={ currentRoute }
8179
openingCoordinates={ openingCoordinates }
8280
/>
83-
{ shouldUseHelpCenterExperience && canConnectToZendesk && (
81+
{ canConnectToZendesk && (
8482
<HelpCenterSmooch enableAuth={ isHelpCenterShown || hasOpenZendeskConversations } />
8583
) }
8684
</>,
@@ -91,11 +89,9 @@ const HelpCenter: React.FC< Container > = ( {
9189
export default function ContextualizedHelpCenter(
9290
props: Container & HelpCenterRequiredInformation
9391
) {
94-
const shouldUseHelpCenterExperience = isUseHelpCenterExperienceEnabled();
95-
9692
return (
97-
<HelpCenterRequiredContextProvider value={ { ...props, shouldUseHelpCenterExperience } }>
98-
<HelpCenter { ...props } shouldUseHelpCenterExperience={ shouldUseHelpCenterExperience } />
93+
<HelpCenterRequiredContextProvider value={ props }>
94+
<HelpCenter { ...props } />
9995
</HelpCenterRequiredContextProvider>
10096
);
10197
}

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,3 @@ export const matchSupportInteractionId = (
123123
return foundMatch;
124124
}
125125
};
126-
127-
export const isUseHelpCenterExperienceEnabled = (): boolean => {
128-
return true;
129-
};

0 commit comments

Comments
 (0)