Skip to content

Commit 64d2a47

Browse files
committed
[DURACOM-327] Move common selector functions into the core
1 parent c6716bb commit 64d2a47

4 files changed

Lines changed: 40 additions & 35 deletions

File tree

src/app/core/json-patch/selectors.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { MemoizedSelector } from '@ngrx/store';
22

3+
import { coreSelector } from '../core.selectors';
4+
import { CoreState } from '../core-state.model';
35
import {
46
keySelector,
57
subStateSelector,
6-
} from '../../submission/selectors';
7-
import { coreSelector } from '../core.selectors';
8-
import { CoreState } from '../core-state.model';
8+
} from '../ngrx/selectors-utils';
99
import {
1010
JsonPatchOperationsEntry,
1111
JsonPatchOperationsResourceEntry,
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { hasValue } from '@dspace/shared/utils/empty.util';
2+
import {
3+
createSelector,
4+
MemoizedSelector,
5+
Selector,
6+
} from '@ngrx/store';
7+
8+
/**
9+
* Export a function to return a subset of the state by key
10+
*/
11+
export function keySelector<T, V>(parentSelector: Selector<any, any>, subState: string, key: string): MemoizedSelector<T, V> {
12+
return createSelector<T, unknown[], V>(parentSelector, (state: T) => {
13+
if (hasValue(state) && hasValue(state[subState])) {
14+
return state[subState][key];
15+
} else {
16+
return undefined;
17+
}
18+
});
19+
}
20+
21+
/**
22+
* Export a function to return a subset of the state
23+
*/
24+
export function subStateSelector<T, V>(parentSelector: Selector<any, any>, subState: string): MemoizedSelector<T, V> {
25+
return createSelector<T, unknown[], V>(parentSelector, (state: T) => {
26+
if (hasValue(state) && hasValue(state[subState])) {
27+
return state[subState];
28+
} else {
29+
return undefined;
30+
}
31+
});
32+
}

src/app/notifications/suggestions/targets/selectors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
import { subStateSelector } from '@dspace/core/ngrx/selectors-utils';
12
import { SuggestionTarget } from '@dspace/core/notifications/suggestions/models/suggestion-target.model';
23
import {
34
createFeatureSelector,
45
createSelector,
56
MemoizedSelector,
67
} from '@ngrx/store';
78

8-
import { subStateSelector } from '../../../submission/selectors';
99
import {
1010
suggestionNotificationsSelector,
1111
SuggestionNotificationsState,

src/app/submission/selectors.ts

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import { hasValue } from '@dspace/shared/utils/empty.util';
21
import {
3-
createSelector,
4-
MemoizedSelector,
5-
Selector,
6-
} from '@ngrx/store';
2+
keySelector,
3+
subStateSelector,
4+
} from '@dspace/core/ngrx/selectors-utils';
5+
import { MemoizedSelector } from '@ngrx/store';
76

87
import { SubmissionObjectEntry } from './objects/submission-objects.reducer';
98
import { SubmissionSectionObject } from './objects/submission-section-object.model';
@@ -12,32 +11,6 @@ import {
1211
SubmissionState,
1312
} from './submission.reducers';
1413

15-
/**
16-
* Export a function to return a subset of the state by key
17-
*/
18-
export function keySelector<T, V>(parentSelector: Selector<any, any>, subState: string, key: string): MemoizedSelector<T, V> {
19-
return createSelector<T,unknown[],V>(parentSelector, (state: T) => {
20-
if (hasValue(state) && hasValue(state[subState])) {
21-
return state[subState][key];
22-
} else {
23-
return undefined;
24-
}
25-
});
26-
}
27-
28-
/**
29-
* Export a function to return a subset of the state
30-
*/
31-
export function subStateSelector<T, V>(parentSelector: Selector<any, any>, subState: string): MemoizedSelector<T, V> {
32-
return createSelector<T,unknown[],V>(parentSelector, (state: T) => {
33-
if (hasValue(state) && hasValue(state[subState])) {
34-
return state[subState];
35-
} else {
36-
return undefined;
37-
}
38-
});
39-
}
40-
4114
export function submissionObjectFromIdSelector(submissionId: string): MemoizedSelector<SubmissionState, SubmissionObjectEntry> {
4215
return keySelector<SubmissionState, SubmissionObjectEntry>(submissionSelector, 'objects', submissionId);
4316
}

0 commit comments

Comments
 (0)