[Search] Fix: Enterprise Search gated form submission (#196983)

## Summary

Updated the gate forms to explicit reload the browser after the api call
succeeds to avoid race conditions from relying on the form default
behavior to reload the browser.
This commit is contained in:
Rodney Norris 2024-10-21 09:46:54 -05:00 committed by GitHub
parent 79f9112d80
commit f25c12b8c7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 28 additions and 18 deletions

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import React from 'react';
import React, { useCallback } from 'react';
import { useActions, useValues } from 'kea';
@ -447,10 +447,14 @@ export const AppSearchGate: React.FC = () => {
const { feature, participateInUXLabs } = useValues(AppSearchGateLogic);
const { formSubmitRequest, setAdditionalFeedback, setParticipateInUXLabs, setFeature } =
useActions(AppSearchGateLogic);
const onSubmitForm = useCallback((e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
formSubmitRequest();
}, []);
const options = getOptionsFeaturesList();
return (
<EuiPanel hasShadow={false}>
<EuiForm component="form" fullWidth>
<EuiForm component="form" fullWidth onSubmit={onSubmitForm}>
<EuiFormLabel>
{i18n.translate('xpack.enterpriseSearch.appSearch.gateForm.features.Label', {
defaultMessage: 'What App Search feature are you looking to use?',
@ -595,12 +599,7 @@ export const AppSearchGate: React.FC = () => {
<EuiSpacer />
<EuiFlexGroup justifyContent="flexEnd">
<EuiFlexItem grow={false}>
<EuiButton
isDisabled={!feature ?? false}
type="submit"
fill
onClick={() => formSubmitRequest()}
>
<EuiButton isDisabled={!feature ?? false} type="submit" fill>
{i18n.translate('xpack.enterpriseSearch.appSearch.gateForm.submit', {
defaultMessage: 'Submit',
})}

View file

@ -39,7 +39,10 @@ export const AppSearchGateLogic = kea<MakeLogicType<AppSearchGateValues, AppSear
setParticipateInUXLabs: (participateInUXLabs) => ({ participateInUXLabs }),
},
connect: {
actions: [UpdateAppSearchGatedFormDataApiLogic, ['makeRequest as submitGatedFormDataRequest']],
actions: [
UpdateAppSearchGatedFormDataApiLogic,
['makeRequest as submitGatedFormDataRequest', 'apiSuccess as submitGatedFormSuccess'],
],
},
listeners: ({ actions, values }) => ({
formSubmitRequest: () => {
@ -52,6 +55,9 @@ export const AppSearchGateLogic = kea<MakeLogicType<AppSearchGateValues, AppSear
});
}
},
submitGatedFormSuccess: () => {
window.location.reload();
},
}),
path: ['enterprise_search', 'app_search', 'gate_form'],

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import React, { Fragment } from 'react';
import React, { Fragment, useCallback } from 'react';
import { useActions, useValues } from 'kea';
@ -538,10 +538,14 @@ export const WorkplaceSearchGate: React.FC = () => {
useActions(WorkplaceSearchGateLogic);
const { feature, participateInUXLabs } = useValues(WorkplaceSearchGateLogic);
const onSubmitForm = useCallback((e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
formSubmitRequest();
}, []);
return (
<EuiPanel hasShadow={false}>
<EuiForm component="form" fullWidth>
<EuiForm component="form" fullWidth onSubmit={onSubmitForm}>
<EuiFormLabel>
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.gateForm.features.Label', {
defaultMessage: 'What Workplace Search feature are you looking to use?',
@ -686,12 +690,7 @@ export const WorkplaceSearchGate: React.FC = () => {
<EuiSpacer />
<EuiFlexGroup justifyContent="flexEnd">
<EuiFlexItem grow={false}>
<EuiButton
isDisabled={!feature ?? false}
type="submit"
fill
onClick={() => formSubmitRequest()}
>
<EuiButton isDisabled={!feature ?? false} type="submit" fill>
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.gateForm.submit', {
defaultMessage: 'Submit',
})}

View file

@ -36,7 +36,10 @@ export const WorkplaceSearchGateLogic = kea<
setParticipateInUXLabs: (participateInUXLabs) => ({ participateInUXLabs }),
},
connect: {
actions: [UpdateGatedFormDataApiLogic, ['makeRequest as submitGatedFormDataRequest']],
actions: [
UpdateGatedFormDataApiLogic,
['makeRequest as submitGatedFormDataRequest', 'apiSuccess as submitGatedFormSuccess'],
],
},
listeners: ({ actions, values }) => ({
formSubmitRequest: () => {
@ -49,6 +52,9 @@ export const WorkplaceSearchGateLogic = kea<
});
}
},
submitGatedFormSuccess: () => {
window.location.reload();
},
}),
path: ['enterprise_search', 'workplace_search', 'gate_form'],