import { createFeatureSelector, createSelector, MemoizedSelector, } from '@ngrx/store'; import { QualityAssuranceSourceObject } from '../core/notifications/qa/models/quality-assurance-source.model'; import { QualityAssuranceTopicObject } from '../core/notifications/qa/models/quality-assurance-topic.model'; import { subStateSelector } from '../shared/selector.util'; import { suggestionNotificationsSelector, SuggestionNotificationsState, } from './notifications.reducer'; import { QualityAssuranceSourceState } from './qa/source/quality-assurance-source.reducer'; import { QualityAssuranceTopicState } from './qa/topics/quality-assurance-topics.reducer'; /** * Returns the Notifications state. * @function _getNotificationsState * @param {AppState} state Top level state. * @return {SuggestionNotificationsState} */ const _getNotificationsState = createFeatureSelector<SuggestionNotificationsState>('suggestionNotifications'); // Quality Assurance topics // ---------------------------------------------------------------------------- /** * Returns the Quality Assurance topics State. * @function qualityAssuranceTopicsStateSelector * @return {QualityAssuranceTopicState} */ export function qualityAssuranceTopicsStateSelector(): MemoizedSelector<SuggestionNotificationsState, QualityAssuranceTopicState> { return subStateSelector<SuggestionNotificationsState,QualityAssuranceTopicState>(suggestionNotificationsSelector, 'qaTopic'); } /** * Returns the Quality Assurance topics list. * @function qualityAssuranceTopicsObjectSelector * @return {QualityAssuranceTopicObject[]} */ export function qualityAssuranceTopicsObjectSelector(): MemoizedSelector<SuggestionNotificationsState, QualityAssuranceTopicObject[]> { return subStateSelector<SuggestionNotificationsState, QualityAssuranceTopicObject[]>(qualityAssuranceTopicsStateSelector(), 'topics'); } /** * Returns true if the Quality Assurance topics are loaded. * @function isQualityAssuranceTopicsLoadedSelector * @return {boolean} */ export const isQualityAssuranceTopicsLoadedSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaTopic.loaded, ); /** * Returns true if the deduplication sets are processing. * @function isDeduplicationSetsProcessingSelector * @return {boolean} */ export const isQualityAssuranceTopicsProcessingSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaTopic.processing, ); /** * Returns the total available pages of Quality Assurance topics. * @function getQualityAssuranceTopicsTotalPagesSelector * @return {number} */ export const getQualityAssuranceTopicsTotalPagesSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaTopic.totalPages, ); /** * Returns the current page of Quality Assurance topics. * @function getQualityAssuranceTopicsCurrentPageSelector * @return {number} */ export const getQualityAssuranceTopicsCurrentPageSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaTopic.currentPage, ); /** * Returns the total number of Quality Assurance topics. * @function getQualityAssuranceTopicsTotalsSelector * @return {number} */ export const getQualityAssuranceTopicsTotalsSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaTopic.totalElements, ); // Quality Assurance source // ---------------------------------------------------------------------------- /** * Returns the Quality Assurance source State. * @function qualityAssuranceSourceStateSelector * @return {QualityAssuranceSourceState} */ export function qualityAssuranceSourceStateSelector(): MemoizedSelector<SuggestionNotificationsState, QualityAssuranceSourceState> { return subStateSelector<SuggestionNotificationsState,QualityAssuranceSourceState>(suggestionNotificationsSelector, 'qaSource'); } /** * Returns the Quality Assurance source list. * @function qualityAssuranceSourceObjectSelector * @return {QualityAssuranceSourceObject[]} */ export function qualityAssuranceSourceObjectSelector(): MemoizedSelector<SuggestionNotificationsState, QualityAssuranceSourceObject[]> { return subStateSelector<SuggestionNotificationsState, QualityAssuranceSourceObject[]>(qualityAssuranceSourceStateSelector(), 'source'); } /** * Returns true if the Quality Assurance source are loaded. * @function isQualityAssuranceSourceLoadedSelector * @return {boolean} */ export const isQualityAssuranceSourceLoadedSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaSource.loaded, ); /** * Returns true if the deduplication sets are processing. * @function isDeduplicationSetsProcessingSelector * @return {boolean} */ export const isQualityAssuranceSourceProcessingSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaSource.processing, ); /** * Returns the total available pages of Quality Assurance source. * @function getQualityAssuranceSourceTotalPagesSelector * @return {number} */ export const getQualityAssuranceSourceTotalPagesSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaSource.totalPages, ); /** * Returns the current page of Quality Assurance source. * @function getQualityAssuranceSourceCurrentPageSelector * @return {number} */ export const getQualityAssuranceSourceCurrentPageSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaSource.currentPage, ); /** * Returns the total number of Quality Assurance source. * @function getQualityAssuranceSourceTotalsSelector * @return {number} */ export const getQualityAssuranceSourceTotalsSelector = createSelector(_getNotificationsState, (state: SuggestionNotificationsState) => state.qaSource.totalElements, );