woocommerce/plugins/woocommerce-admin/client/activity-panel/unread-indicators.js

60 lines
1.3 KiB
JavaScript

/**
* External dependencies
*/
import {
NOTES_STORE_NAME,
USER_STORE_NAME,
QUERY_DEFAULTS,
} from '@woocommerce/data';
import { getSetting } from '@woocommerce/wc-admin-settings';
/**
* Internal dependencies
*/
import { getUnreadNotesCount } from '~/inbox-panel/utils';
const UNREAD_NOTES_QUERY = {
page: 1,
per_page: QUERY_DEFAULTS.pageSize,
status: 'unactioned',
type: QUERY_DEFAULTS.noteTypes,
orderby: 'date',
order: 'desc',
};
export function isNotesPanelVisible( select ) {
const { getNotes, getNotesError, isResolving } = select( NOTES_STORE_NAME );
const { getCurrentUser } = select( USER_STORE_NAME );
const userData = getCurrentUser();
const lastRead = parseInt(
userData &&
userData.woocommerce_meta &&
userData.woocommerce_meta.activity_panel_inbox_last_read,
10
);
if ( ! lastRead ) {
return null;
}
getNotes( UNREAD_NOTES_QUERY );
const isError = Boolean(
getNotesError( 'getNotes', [ UNREAD_NOTES_QUERY ] )
);
const isRequesting = isResolving( 'getNotes', [ UNREAD_NOTES_QUERY ] );
if ( isError || isRequesting ) {
return null;
}
const latestNotes = getNotes( UNREAD_NOTES_QUERY );
const unreadNotesCount = getUnreadNotesCount( latestNotes, lastRead );
return unreadNotesCount > 0;
}
export function getLowStockCount() {
return getSetting( 'lowStockCount', 0 );
}