1- import { __ } from '@wpsocio/i18n' ;
21import { useGlobalNotices } from '@wpsocio/ui/wp/global-notices' ;
32import { FORM_ERROR } from '@wpsocio/utilities/constants.js' ;
43import { getErrorStrings } from '@wpsocio/utilities/misc.js' ;
54import type { AnyObject } from '@wpsocio/utilities/types.js' ;
65import { useCallback , useMemo } from 'react' ;
76
87interface DisplayFeedback {
8+ clearNotices : VoidFunction ;
99 displayValidationErrors : ( errors : AnyObject , error ?: string ) => void ;
1010 displaySubmitErrors : ( errors : AnyObject , submitError ?: string ) => void ;
1111}
1212
1313type DF = DisplayFeedback ;
1414
1515export const useDisplayFeedback = ( ) : DF => {
16- const { createErrorNotice } = useGlobalNotices ( ) ;
16+ const { createErrorNotice, removeAllNotices } = useGlobalNotices ( ) ;
1717
1818 const displayErrors = useCallback (
1919 ( errors : AnyObject ) => {
@@ -25,35 +25,38 @@ export const useDisplayFeedback = (): DF => {
2525 [ createErrorNotice ] ,
2626 ) ;
2727
28+ const clearNotices = useCallback ( ( ) => {
29+ removeAllNotices ( 'snackbar' ) ;
30+ } , [ removeAllNotices ] ) ;
31+
2832 const displaySubmitErrors = useCallback < DF [ 'displaySubmitErrors' ] > (
2933 ( { [ FORM_ERROR ] : formError , ...errors } , submitError ) => {
3034 // biome-ignore lint/suspicious/noConsoleLog: <explanation>
3135 console . log ( { errors, submitError, formError } ) ;
36+ clearNotices ( ) ;
3237
3338 if ( submitError || formError ) {
34- const title = submitError ?? formError ;
35- createErrorNotice ( title ) ;
39+ createErrorNotice ( submitError || formError ) ;
3640 }
3741 displayErrors ( errors ) ;
3842 } ,
39- [ displayErrors , createErrorNotice ] ,
43+ [ displayErrors , createErrorNotice , clearNotices ] ,
4044 ) ;
4145
4246 const displayValidationErrors = useCallback < DF [ 'displayValidationErrors' ] > (
43- ( errors , error ) => {
44- const title =
45- typeof error === 'string' ? error : __ ( 'Lets fix these errors first.' ) ;
46- createErrorNotice ( title ) ;
47+ ( errors ) => {
48+ clearNotices ( ) ;
4749 displayErrors ( errors ) ;
4850 } ,
49- [ createErrorNotice , displayErrors ] ,
51+ [ displayErrors , clearNotices ] ,
5052 ) ;
5153
5254 return useMemo (
5355 ( ) => ( {
56+ clearNotices,
5457 displaySubmitErrors,
5558 displayValidationErrors,
5659 } ) ,
57- [ displaySubmitErrors , displayValidationErrors ] ,
60+ [ clearNotices , displaySubmitErrors , displayValidationErrors ] ,
5861 ) ;
5962} ;
0 commit comments