27 lines
834 B
TypeScript
27 lines
834 B
TypeScript
|
/**
|
||
|
* External dependencies
|
||
|
*/
|
||
|
import { dispatch, select } from '@wordpress/data';
|
||
|
import type { Notice } from '@wordpress/notices';
|
||
|
|
||
|
export const hasNoticesOfType = (
|
||
|
type: 'default' | 'snackbar',
|
||
|
context?: string | undefined
|
||
|
): boolean => {
|
||
|
const notices: Notice[] = select( 'core/notices' ).getNotices( context );
|
||
|
return notices.some( ( notice: Notice ) => notice.type === type );
|
||
|
};
|
||
|
|
||
|
// Note, if context is blank, the default context is used.
|
||
|
export const removeNoticesByStatus = (
|
||
|
status: string,
|
||
|
context?: string | undefined
|
||
|
): void => {
|
||
|
const notices = select( 'core/notices' ).getNotices( context );
|
||
|
const { removeNotice } = dispatch( 'core/notices' );
|
||
|
const noticesOfType = notices.filter(
|
||
|
( notice ) => notice.status === status
|
||
|
);
|
||
|
noticesOfType.forEach( ( notice ) => removeNotice( notice.id, context ) );
|
||
|
};
|