1- import { createFeatureSelector , createSelector , MemoizedSelector } from '@ngrx/store' ;
1+ import { createSelector , MemoizedSelector } from '@ngrx/store' ;
22import { subStateSelector } from '../../shared/selector.util' ;
33import { openaireSelector , OpenaireState } from '../openaire.reducer' ;
4- import { OpenaireSuggestionTarget } from '../../core/openaire/reciter-suggestions/models/openaire-suggestion-target.model' ;
5- import { SuggestionTargetState } from './suggestion-targets/suggestion-targets.reducer' ;
6-
7- /**
8- * Returns the Reciter Suggestion Target state.
9- * @function _getReciterSuggestionTargetState
10- * @param {AppState } state Top level state.
11- * @return {OpenaireState }
12- */
13- const _getReciterSuggestionTargetState = createFeatureSelector < OpenaireState > ( 'openaire' ) ;
4+ import {
5+ OpenaireSuggestionTarget
6+ } from '../../core/openaire/reciter-suggestions/models/openaire-suggestion-target.model' ;
7+ import { SuggestionTargetEntry , SuggestionTargetState } from './suggestion-targets/suggestion-targets.reducer' ;
148
159// Reciter Suggestion Targets
1610// ----------------------------------------------------------------------------
@@ -25,73 +19,82 @@ export function reciterSuggestionTargetStateSelector(): MemoizedSelector<Openair
2519}
2620
2721/**
28- * 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.
2932 * @function reciterSuggestionTargetObjectSelector
30- * @return {OpenaireReciterSuggestionTarget [] }
33+ * @return {OpenaireSuggestionTarget [] }
3134 */
32- export function reciterSuggestionTargetObjectSelector ( ) : MemoizedSelector < OpenaireState , OpenaireSuggestionTarget [ ] > {
33- return subStateSelector < OpenaireState , OpenaireSuggestionTarget [ ] > ( reciterSuggestionTargetStateSelector ( ) , ' targets' ) ;
35+ export function reciterSuggestionTargetObjectSelector ( source : string ) : MemoizedSelector < OpenaireState , OpenaireSuggestionTarget [ ] > {
36+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state . targets ) ;
3437}
3538
3639/**
3740 * Returns true if the Reciter Suggestion Targets are loaded.
3841 * @function isReciterSuggestionTargetLoadedSelector
3942 * @return {boolean }
4043 */
41- export const isReciterSuggestionTargetLoadedSelector = createSelector ( _getReciterSuggestionTargetState ,
42- ( state : OpenaireState ) => state . suggestionTarget . loaded
43- ) ;
44+ export const isReciterSuggestionTargetLoadedSelector = ( source : string ) => {
45+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. loaded || false ) ;
46+ } ;
4447
4548/**
4649 * Returns true if the deduplication sets are processing.
4750 * @function isDeduplicationSetsProcessingSelector
4851 * @return {boolean }
4952 */
50- export const isreciterSuggestionTargetProcessingSelector = createSelector ( _getReciterSuggestionTargetState ,
51- ( state : OpenaireState ) => state . suggestionTarget . processing
52- ) ;
53+ export const isreciterSuggestionTargetProcessingSelector = ( source : string ) => {
54+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. processing || false ) ;
55+ } ;
5356
5457/**
5558 * Returns the total available pages of Reciter Suggestion Targets.
5659 * @function getreciterSuggestionTargetTotalPagesSelector
5760 * @return {number }
5861 */
59- export const getreciterSuggestionTargetTotalPagesSelector = createSelector ( _getReciterSuggestionTargetState ,
60- ( state : OpenaireState ) => state . suggestionTarget . totalPages
61- ) ;
62+ export const getReciterSuggestionTargetTotalPagesSelector = ( source : string ) => {
63+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. totalPages || 0 ) ;
64+ } ;
6265
6366/**
6467 * Returns the current page of Reciter Suggestion Targets.
65- * @function getreciterSuggestionTargetCurrentPageSelector
68+ * @function getReciterSuggestionTargetCurrentPageSelector
6669 * @return {number }
6770 */
68- export const getreciterSuggestionTargetCurrentPageSelector = createSelector ( _getReciterSuggestionTargetState ,
69- ( state : OpenaireState ) => state . suggestionTarget . currentPage
70- ) ;
71+ export const getReciterSuggestionTargetCurrentPageSelector = ( source : string ) => {
72+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. currentPage || 0 ) ;
73+ } ;
7174
7275/**
7376 * Returns the total number of Reciter Suggestion Targets.
74- * @function getreciterSuggestionTargetTotalsSelector
77+ * @function getReciterSuggestionTargetTotalsSelector
7578 * @return {number }
7679 */
77- export const getreciterSuggestionTargetTotalsSelector = createSelector ( _getReciterSuggestionTargetState ,
78- ( state : OpenaireState ) => state . suggestionTarget . totalElements
79- ) ;
80+ export const getReciterSuggestionTargetTotalsSelector = ( source : string ) => {
81+ return createSelector ( reciterSuggestionSourceSelector ( source ) , ( state : SuggestionTargetEntry ) => state ?. totalElements || 0 ) ;
82+ } ;
8083
8184/**
8285 * Returns Suggestion Targets for the current user.
8386 * @function getCurrentUserReciterSuggestionTargetSelector
8487 * @return {OpenaireSuggestionTarget[] }
8588 */
86- export const getCurrentUserSuggestionTargetsSelector = createSelector ( _getReciterSuggestionTargetState ,
87- ( state : OpenaireState ) => state . suggestionTarget . currentUserTargets
88- ) ;
89+ export const getCurrentUserSuggestionTargetsSelector = ( ) => {
90+ return createSelector ( reciterSuggestionTargetStateSelector ( ) , ( state : SuggestionTargetState ) => state ?. currentUserTargets || [ ] ) ;
91+ } ;
8992
9093/**
91- * Returns whether or not the user has consulted their suggestions
94+ * Returns whether the user has consulted their suggestions
9295 * @function getCurrentUserReciterSuggestionTargetSelector
9396 * @return {boolean }
9497 */
95- export const getCurrentUserSuggestionTargetsVisitedSelector = createSelector ( _getReciterSuggestionTargetState ,
96- ( state : OpenaireState ) => state . suggestionTarget . currentUserTargetsVisited
97- ) ;
98+ export const getCurrentUserSuggestionTargetsVisitedSelector = ( ) => {
99+ return createSelector ( reciterSuggestionTargetStateSelector ( ) , ( state : SuggestionTargetState ) => state ?. currentUserTargetsVisited || false ) ;
100+ } ;
0 commit comments