Fix industry options not populate after reloading page (#34847)

* Add a spinner loader to ensure Industry loaded after data fetched

* Add changelog

Fix style
This commit is contained in:
Chi-Hsuan Huang 2022-09-27 16:26:22 +08:00 committed by GitHub
parent 84641b1c41
commit c31f8b0aa5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 4 deletions

View File

@ -9,6 +9,7 @@ import {
CardBody, CardBody,
CardFooter, CardFooter,
CheckboxControl, CheckboxControl,
Spinner,
} from '@wordpress/components'; } from '@wordpress/components';
import { compose } from '@wordpress/compose'; import { compose } from '@wordpress/compose';
import { filter, find, findIndex, get } from 'lodash'; import { filter, find, findIndex, get } from 'lodash';
@ -26,6 +27,21 @@ import { getAdminSetting } from '~/utils/admin-settings';
const onboarding = getAdminSetting( 'onboarding', {} ); const onboarding = getAdminSetting( 'onboarding', {} );
const Loader = ( props ) => {
if ( props.isLoading ) {
return (
<div
className="woocommerce-admin__industry__spinner"
style={ { textAlign: 'center' } }
>
<Spinner />
</div>
);
}
return <Industry { ...props } />;
};
class Industry extends Component { class Industry extends Component {
constructor( props ) { constructor( props ) {
const profileItems = get( props, 'profileItems', {} ); const profileItems = get( props, 'profileItems', {} );
@ -287,9 +303,16 @@ class Industry extends Component {
export default compose( export default compose(
withSelect( ( select ) => { withSelect( ( select ) => {
const { getProfileItems, getOnboardingError, isOnboardingRequesting } = const {
select( ONBOARDING_STORE_NAME ); getProfileItems,
const { getSettings } = select( SETTINGS_STORE_NAME ); getOnboardingError,
isOnboardingRequesting,
hasFinishedResolution: hasOnboardingFinishedResolution,
} = select( ONBOARDING_STORE_NAME );
const {
getSettings,
hasFinishedResolution: hasSettingsFinishedResolution,
} = select( SETTINGS_STORE_NAME );
const { general: locationSettings = {} } = getSettings( 'general' ); const { general: locationSettings = {} } = getSettings( 'general' );
return { return {
@ -298,6 +321,9 @@ export default compose(
locationSettings, locationSettings,
isProfileItemsRequesting: isProfileItemsRequesting:
isOnboardingRequesting( 'updateProfileItems' ), isOnboardingRequesting( 'updateProfileItems' ),
isLoading:
! hasOnboardingFinishedResolution( 'getProfileItems', [] ) ||
! hasSettingsFinishedResolution( 'getSettings', [ 'general' ] ),
}; };
} ), } ),
withDispatch( ( dispatch ) => { withDispatch( ( dispatch ) => {
@ -309,4 +335,4 @@ export default compose(
updateProfileItems, updateProfileItems,
}; };
} ) } )
)( Industry ); )( Loader );

View File

@ -0,0 +1,4 @@
Significance: patch
Type: fix
Fix "Industry" options fails to save in the Industry step after reloading the page for OBW