2020-03-03 10:26:02 +00:00
|
|
|
/**
|
|
|
|
* External dependencies
|
|
|
|
*/
|
2020-03-10 13:39:21 +00:00
|
|
|
import { useStoreNoticesContext } from '@woocommerce/base-context';
|
2020-03-03 10:26:02 +00:00
|
|
|
import { useMemo } from '@wordpress/element';
|
|
|
|
|
|
|
|
export const useStoreNotices = () => {
|
|
|
|
const { notices, createNotice, removeNotice } = useStoreNoticesContext();
|
|
|
|
|
|
|
|
const noticesApi = useMemo(
|
|
|
|
() => ( {
|
|
|
|
addDefaultNotice: ( text, noticeProps = {} ) =>
|
|
|
|
void createNotice( 'default', text, {
|
|
|
|
...noticeProps,
|
|
|
|
} ),
|
|
|
|
addErrorNotice: ( text, noticeProps = {} ) =>
|
|
|
|
void createNotice( 'error', text, {
|
|
|
|
...noticeProps,
|
|
|
|
} ),
|
|
|
|
addWarningNotice: ( text, noticeProps = {} ) =>
|
|
|
|
void createNotice( 'warning', text, {
|
|
|
|
...noticeProps,
|
|
|
|
} ),
|
|
|
|
addInfoNotice: ( text, noticeProps = {} ) =>
|
|
|
|
void createNotice( 'info', text, {
|
|
|
|
...noticeProps,
|
|
|
|
} ),
|
|
|
|
addSuccessNotice: ( text, noticeProps = {} ) =>
|
|
|
|
void createNotice( 'success', text, {
|
|
|
|
...noticeProps,
|
|
|
|
} ),
|
|
|
|
removeNotices: ( type = null ) => {
|
|
|
|
notices.map( ( notice ) => {
|
|
|
|
if ( type === null || notice.status === type ) {
|
|
|
|
removeNotice( notice.id );
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
} );
|
|
|
|
},
|
|
|
|
} ),
|
|
|
|
[ createNotice ]
|
|
|
|
);
|
|
|
|
|
|
|
|
return {
|
|
|
|
notices,
|
|
|
|
...noticesApi,
|
|
|
|
};
|
|
|
|
};
|