1- import { createFeatureSelector , createSelector , MemoizedSelector } from '@ngrx/store' ;
2- import { subStateSelector } from '../../shared/selector.util' ;
3- import { openaireSelector , OpenaireState } from '../openaire.reducer' ;
1+ import { createSelector , MemoizedSelector } from '@ngrx/store' ;
2+ import { subStateSelector } from '../../shared/selector.util' ;
3+ import { openaireSelector , OpenaireState } from '../openaire.reducer' ;
44import {
5- OpenaireSuggestionTarget
5+ OpenaireSuggestionTarget
66} from '../../core/openaire/reciter-suggestions/models/openaire-suggestion-target.model' ;
7- import { SuggestionTargetState } from './suggestion-targets/suggestion-targets.reducer' ;
8-
9- /**
10- * Returns the Reciter Suggestion Target state.
11- * @function _getReciterSuggestionTargetState
12- * @param {AppState } state Top level state.
13- * @return {OpenaireState }
14- */
15- const _getReciterSuggestionTargetState = createFeatureSelector < OpenaireState > ( 'openaire' ) ;
7+ import { SuggestionTargetEntry , SuggestionTargetState } from './suggestion-targets/suggestion-targets.reducer' ;
168
179// Reciter Suggestion Targets
1810// ----------------------------------------------------------------------------
@@ -27,13 +19,21 @@ export function reciterSuggestionTargetStateSelector(): MemoizedSelector<Openair
2719}
2820
2921/**
30- * Returns the Reciter Suggestion Targets list.
22+ * Returns the Reciter Suggestion source state
23+ * @function reciterSuggestionTargetObjectSelector
24+ * @return {SuggestionTargetEntry }
25+ */
26+ export function reciterSuggestionSourceSelector ( source : string ) : MemoizedSelector < OpenaireState , SuggestionTargetEntry > {
27+ return createSelector ( reciterSuggestionTargetStateSelector ( ) , ( state : SuggestionTargetState ) => state . sources [ source ] ) ;
28+ }
29+
30+ /**
31+ * Returns the Reciter Suggestion Targets list by source.
3132 * @function reciterSuggestionTargetObjectSelector
32- * @return {OpenaireReciterSuggestionTarget [] }
33+ * @return {OpenaireSuggestionTarget [] }
3334 */
3435export function reciterSuggestionTargetObjectSelector ( source : string ) : MemoizedSelector < OpenaireState , OpenaireSuggestionTarget [ ] > {
35- return createSelector ( reciterSuggestionTargetStateSelector ( ) ,
36- ( state : SuggestionTargetState ) => state [ source ] ?. targets ) ;
36+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state . targets ) ;
3737}
3838
3939/**
@@ -42,10 +42,7 @@ export function reciterSuggestionTargetObjectSelector(source: string): MemoizedS
4242 * @return {boolean }
4343 */
4444export const isReciterSuggestionTargetLoadedSelector = ( source : string ) => {
45- return createSelector ( _getReciterSuggestionTargetState , ( state : OpenaireState ) => {
46- const loaded = state . suggestionTarget [ source ] ?. loaded ;
47- return loaded || false ;
48- } ) ;
45+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. loaded || false ) ;
4946} ;
5047
5148/**
@@ -54,62 +51,50 @@ export const isReciterSuggestionTargetLoadedSelector = (source: string) => {
5451 * @return {boolean }
5552 */
5653export const isreciterSuggestionTargetProcessingSelector = ( source : string ) => {
57- return createSelector ( _getReciterSuggestionTargetState , ( state : OpenaireState ) => {
58- const processing = state . suggestionTarget [ source ] ?. processing ;
59- return processing || false ;
60- } ) ;
54+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. processing || false ) ;
6155} ;
6256
6357/**
6458 * Returns the total available pages of Reciter Suggestion Targets.
6559 * @function getreciterSuggestionTargetTotalPagesSelector
6660 * @return {number }
6761 */
68- export const getreciterSuggestionTargetTotalPagesSelector = ( source : string ) => {
69- return createSelector ( _getReciterSuggestionTargetState , ( state : OpenaireState ) => state . suggestionTarget [ source ] ?. totalPages ) ;
62+ export const getReciterSuggestionTargetTotalPagesSelector = ( source : string ) => {
63+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. totalPages || 0 ) ;
7064} ;
7165
7266/**
7367 * Returns the current page of Reciter Suggestion Targets.
74- * @function getreciterSuggestionTargetCurrentPageSelector
68+ * @function getReciterSuggestionTargetCurrentPageSelector
7569 * @return {number }
7670 */
77- export const getreciterSuggestionTargetCurrentPageSelector = ( source : string ) => {
78- return createSelector ( _getReciterSuggestionTargetState , ( state : OpenaireState ) => state . suggestionTarget [ source ] ?. currentPage ) ;
71+ export const getReciterSuggestionTargetCurrentPageSelector = ( source : string ) => {
72+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. currentPage || 0 ) ;
7973} ;
8074
8175/**
8276 * Returns the total number of Reciter Suggestion Targets.
83- * @function getreciterSuggestionTargetTotalsSelector
77+ * @function getReciterSuggestionTargetTotalsSelector
8478 * @return {number }
8579 */
86- export const getreciterSuggestionTargetTotalsSelector = ( source : string ) => {
87- return createSelector ( _getReciterSuggestionTargetState , ( state : OpenaireState ) => state . suggestionTarget [ source ] ?. totalElements ) ;
80+ export const getReciterSuggestionTargetTotalsSelector = ( source : string ) => {
81+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. totalElements || 0 ) ;
8882} ;
8983
9084/**
9185 * Returns Suggestion Targets for the current user.
9286 * @function getCurrentUserReciterSuggestionTargetSelector
9387 * @return {OpenaireSuggestionTarget[] }
9488 */
95- export const getCurrentUserSuggestionTargetsSelector = createSelector ( _getReciterSuggestionTargetState ,
96- ( state : OpenaireState ) => {
97- const suggestionTargetValues = Object . values ( state . suggestionTarget ) ;
98- return suggestionTargetValues . reduce (
99- ( acc , entry ) => acc . concat ( entry ?. currentUserTargets || [ ] ) ,
100- [ ] ) ;
101- }
102- ) ;
89+ export const getCurrentUserSuggestionTargetsSelector = ( ) => {
90+ return createSelector ( reciterSuggestionTargetStateSelector ( ) , ( state : SuggestionTargetState ) => state ?. currentUserTargets || [ ] ) ;
91+ } ;
10392
10493/**
105- * Returns whether or not the user has consulted their suggestions
94+ * Returns whether the user has consulted their suggestions
10695 * @function getCurrentUserReciterSuggestionTargetSelector
10796 * @return {boolean }
10897 */
109- export const getCurrentUserSuggestionTargetsVisitedSelector = createSelector ( _getReciterSuggestionTargetState ,
110- ( state : OpenaireState ) => {
111- const suggestionTargetValues = Object . values ( state . suggestionTarget ) ;
112- return suggestionTargetValues . some (
113- ( entry ) => entry ?. currentUserTargetsVisited === true ) ;
114- }
115- ) ;
98+ export const getCurrentUserSuggestionTargetsVisitedSelector = ( ) => {
99+ return createSelector ( reciterSuggestionTargetStateSelector ( ) , ( state : SuggestionTargetState ) => state ?. currentUserTargetsVisited || false ) ;
100+ } ;
0 commit comments