@zeniai/client-epic-state 5.0.36-betaRR05 → 5.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/entity/task/taskPayload.d.ts +0 -1
- package/lib/entity/task/taskPayload.js +0 -5
- package/lib/entity/task/taskState.d.ts +0 -5
- package/lib/entity/task/taskState.js +1 -6
- package/lib/entity/tenant/clearAllEpic.d.ts +1 -2
- package/lib/entity/tenant/clearAllEpic.js +0 -2
- package/lib/entity/tenant/tenantPayload.d.ts +0 -1
- package/lib/entity/tenant/tenantReducer.d.ts +1 -59
- package/lib/entity/tenant/tenantReducer.js +4 -139
- package/lib/entity/tenant/tenantState.d.ts +0 -7
- package/lib/epic.d.ts +1 -3
- package/lib/epic.js +1 -6
- package/lib/esm/entity/task/taskPayload.js +1 -6
- package/lib/esm/entity/task/taskState.js +0 -3
- package/lib/esm/entity/tenant/clearAllEpic.js +0 -2
- package/lib/esm/entity/tenant/tenantReducer.js +2 -135
- package/lib/esm/epic.js +1 -6
- package/lib/esm/index.js +5 -8
- package/lib/esm/reducer.js +0 -3
- package/lib/esm/view/common/recurringViewHelper.js +0 -17
- package/lib/esm/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +0 -2
- package/lib/esm/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +0 -5
- package/lib/esm/view/taskManager/taskDetailView/taskDetail.js +0 -1
- package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +0 -5
- package/lib/index.d.ts +5 -9
- package/lib/index.js +31 -48
- package/lib/reducer.d.ts +0 -3
- package/lib/reducer.js +0 -3
- package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
- package/lib/view/common/recurringViewHelper.d.ts +2 -3
- package/lib/view/common/recurringViewHelper.js +1 -18
- package/lib/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +0 -2
- package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +0 -5
- package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +1 -3
- package/lib/view/taskManager/taskDetailView/taskDetail.js +0 -1
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +0 -1
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +0 -5
- package/package.json +1 -1
- package/lib/entity/tenant/epic/deleteConnectionEpic.d.ts +0 -19
- package/lib/entity/tenant/epic/deleteConnectionEpic.js +0 -29
- package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.d.ts +0 -19
- package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.js +0 -31
- package/lib/entity/tenant/epic/saveOAuthConnectionEpic.d.ts +0 -19
- package/lib/entity/tenant/epic/saveOAuthConnectionEpic.js +0 -33
- package/lib/esm/entity/tenant/epic/deleteConnectionEpic.js +0 -25
- package/lib/esm/entity/tenant/epic/saveAPIKeyConnectionEpic.js +0 -27
- package/lib/esm/entity/tenant/epic/saveOAuthConnectionEpic.js +0 -29
- package/lib/esm/view/featureNotificationView/epics/fetchRegisteredInterestsEpic.js +0 -23
- package/lib/esm/view/featureNotificationView/epics/notifyMeForFeatureEpic.js +0 -25
- package/lib/esm/view/featureNotificationView/featureNotificationViewPayload.js +0 -11
- package/lib/esm/view/featureNotificationView/featureNotificationViewReducer.js +0 -106
- package/lib/esm/view/featureNotificationView/featureNotificationViewSelector.js +0 -4
- package/lib/esm/view/featureNotificationView/featureNotificationViewState.js +0 -1
- package/lib/view/featureNotificationView/epics/fetchRegisteredInterestsEpic.d.ts +0 -16
- package/lib/view/featureNotificationView/epics/fetchRegisteredInterestsEpic.js +0 -27
- package/lib/view/featureNotificationView/epics/notifyMeForFeatureEpic.d.ts +0 -14
- package/lib/view/featureNotificationView/epics/notifyMeForFeatureEpic.js +0 -29
- package/lib/view/featureNotificationView/featureNotificationViewPayload.d.ts +0 -23
- package/lib/view/featureNotificationView/featureNotificationViewPayload.js +0 -15
- package/lib/view/featureNotificationView/featureNotificationViewReducer.d.ts +0 -19
- package/lib/view/featureNotificationView/featureNotificationViewReducer.js +0 -110
- package/lib/view/featureNotificationView/featureNotificationViewSelector.d.ts +0 -6
- package/lib/view/featureNotificationView/featureNotificationViewSelector.js +0 -11
- package/lib/view/featureNotificationView/featureNotificationViewState.d.ts +0 -26
- package/lib/view/featureNotificationView/featureNotificationViewState.js +0 -2
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchRegisteredInterestsEpic = void 0;
|
|
4
|
-
const rxjs_1 = require("rxjs");
|
|
5
|
-
const operators_1 = require("rxjs/operators");
|
|
6
|
-
const responsePayload_1 = require("../../../responsePayload");
|
|
7
|
-
const featureNotificationViewPayload_1 = require("../featureNotificationViewPayload");
|
|
8
|
-
const featureNotificationViewReducer_1 = require("../featureNotificationViewReducer");
|
|
9
|
-
const fetchRegisteredInterestsEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(featureNotificationViewReducer_1.fetchRegisteredInterests.match), (0, operators_1.switchMap)((action) => zeniAPI
|
|
10
|
-
.getJSON(`${zeniAPI.apiEndPoints.notificationMicroServiceBaseUrl}/1.0/feature-interests?feature=${encodeURIComponent(action.payload.feature)}`)
|
|
11
|
-
.pipe((0, operators_1.mergeMap)((response) => {
|
|
12
|
-
if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
|
|
13
|
-
const interests = response.data.feature_interests.map(featureNotificationViewPayload_1.toFeatureInterest);
|
|
14
|
-
return (0, rxjs_1.from)([(0, featureNotificationViewReducer_1.fetchRegisteredInterestsSuccess)(interests)]);
|
|
15
|
-
}
|
|
16
|
-
const status = response.status ??
|
|
17
|
-
(0, responsePayload_1.createZeniAPIStatus)('Failed to fetch registered interests. Please try again.');
|
|
18
|
-
return (0, rxjs_1.from)([(0, featureNotificationViewReducer_1.fetchRegisteredInterestsFailure)(status)]);
|
|
19
|
-
}), (0, operators_1.catchError)((error) => {
|
|
20
|
-
const message = error instanceof Error
|
|
21
|
-
? error.message
|
|
22
|
-
: 'Unexpected error fetching registered interests.';
|
|
23
|
-
return (0, rxjs_1.from)([
|
|
24
|
-
(0, featureNotificationViewReducer_1.fetchRegisteredInterestsFailure)((0, responsePayload_1.createZeniAPIStatus)(message)),
|
|
25
|
-
]);
|
|
26
|
-
}))));
|
|
27
|
-
exports.fetchRegisteredInterestsEpic = fetchRegisteredInterestsEpic;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
-
import { RootState } from '../../../reducer';
|
|
3
|
-
import { ZeniAPI } from '../../../zeniAPI';
|
|
4
|
-
import { notifyMeForFeature, notifyMeForFeatureFailure, notifyMeForFeatureSuccess } from '../featureNotificationViewReducer';
|
|
5
|
-
export type ActionType = ReturnType<typeof notifyMeForFeature> | ReturnType<typeof notifyMeForFeatureSuccess> | ReturnType<typeof notifyMeForFeatureFailure>;
|
|
6
|
-
export declare const notifyMeForFeatureEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<{
|
|
7
|
-
payload: import("../featureNotificationViewPayload").FeatureInterestDataPayload;
|
|
8
|
-
type: "featureNotificationView/notifyMeForFeatureSuccess";
|
|
9
|
-
} | {
|
|
10
|
-
payload: {
|
|
11
|
-
status: import("../../../responsePayload").ZeniAPIStatus<Record<string, unknown>>;
|
|
12
|
-
};
|
|
13
|
-
type: "featureNotificationView/notifyMeForFeatureFailure";
|
|
14
|
-
}>;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.notifyMeForFeatureEpic = void 0;
|
|
4
|
-
const rxjs_1 = require("rxjs");
|
|
5
|
-
const operators_1 = require("rxjs/operators");
|
|
6
|
-
const responsePayload_1 = require("../../../responsePayload");
|
|
7
|
-
const featureNotificationViewReducer_1 = require("../featureNotificationViewReducer");
|
|
8
|
-
const notifyMeForFeatureEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(featureNotificationViewReducer_1.notifyMeForFeature.match), (0, operators_1.switchMap)((action) => zeniAPI
|
|
9
|
-
.postAndGetJSON(`${zeniAPI.apiEndPoints.notificationMicroServiceBaseUrl}/1.0/feature-interests`, {
|
|
10
|
-
additional_info: action.payload.additionalInfo,
|
|
11
|
-
email: action.payload.email,
|
|
12
|
-
feature: action.payload.feature,
|
|
13
|
-
})
|
|
14
|
-
.pipe((0, operators_1.mergeMap)((response) => {
|
|
15
|
-
if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
|
|
16
|
-
return (0, rxjs_1.from)([(0, featureNotificationViewReducer_1.notifyMeForFeatureSuccess)(response.data)]);
|
|
17
|
-
}
|
|
18
|
-
const status = response.status ??
|
|
19
|
-
(0, responsePayload_1.createZeniAPIStatus)('Failed to register interest. Please try again.');
|
|
20
|
-
return (0, rxjs_1.from)([(0, featureNotificationViewReducer_1.notifyMeForFeatureFailure)(status)]);
|
|
21
|
-
}), (0, operators_1.catchError)((error) => {
|
|
22
|
-
const message = error instanceof Error
|
|
23
|
-
? error.message
|
|
24
|
-
: 'Unexpected error registering interest.';
|
|
25
|
-
return (0, rxjs_1.from)([
|
|
26
|
-
(0, featureNotificationViewReducer_1.notifyMeForFeatureFailure)((0, responsePayload_1.createZeniAPIStatus)(message)),
|
|
27
|
-
]);
|
|
28
|
-
}))));
|
|
29
|
-
exports.notifyMeForFeatureEpic = notifyMeForFeatureEpic;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ZeniAPIResponse } from '../../responsePayload';
|
|
2
|
-
import { FeatureInterest } from './featureNotificationViewState';
|
|
3
|
-
/**
|
|
4
|
-
* Backend payload shapes for the FeatureInterest API exposed by
|
|
5
|
-
* `@repo:notifications`. snake_case is preserved here verbatim; the
|
|
6
|
-
* `toFeatureInterest` mapper converts to the camelCase state shape.
|
|
7
|
-
*/
|
|
8
|
-
export interface FeatureInterestDataPayload {
|
|
9
|
-
create_time: string;
|
|
10
|
-
feature: string;
|
|
11
|
-
interest_id: string;
|
|
12
|
-
notified: boolean;
|
|
13
|
-
update_time: string;
|
|
14
|
-
additional_info?: string | null;
|
|
15
|
-
email?: string | null;
|
|
16
|
-
notified_time?: string | null;
|
|
17
|
-
}
|
|
18
|
-
export interface FeatureInterestListPayload {
|
|
19
|
-
feature_interests: FeatureInterestDataPayload[];
|
|
20
|
-
}
|
|
21
|
-
export type FeatureInterestResponse = ZeniAPIResponse<FeatureInterestDataPayload>;
|
|
22
|
-
export type FeatureInterestListResponse = ZeniAPIResponse<FeatureInterestListPayload>;
|
|
23
|
-
export declare const toFeatureInterest: (payload: FeatureInterestDataPayload) => FeatureInterest;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toFeatureInterest = void 0;
|
|
4
|
-
const zeniDayJS_1 = require("../../zeniDayJS");
|
|
5
|
-
const toFeatureInterest = (payload) => ({
|
|
6
|
-
interestId: payload.interest_id,
|
|
7
|
-
feature: payload.feature,
|
|
8
|
-
notified: payload.notified,
|
|
9
|
-
createTime: (0, zeniDayJS_1.date)(payload.create_time),
|
|
10
|
-
updateTime: (0, zeniDayJS_1.date)(payload.update_time),
|
|
11
|
-
additionalInfo: payload.additional_info ?? undefined,
|
|
12
|
-
email: payload.email ?? undefined,
|
|
13
|
-
notifiedTime: payload.notified_time != null ? (0, zeniDayJS_1.date)(payload.notified_time) : undefined,
|
|
14
|
-
});
|
|
15
|
-
exports.toFeatureInterest = toFeatureInterest;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ZeniAPIStatus } from '../../responsePayload';
|
|
2
|
-
import { FeatureInterestDataPayload } from './featureNotificationViewPayload';
|
|
3
|
-
import { FeatureInterest, FeatureNotificationViewState } from './featureNotificationViewState';
|
|
4
|
-
export declare const initialState: FeatureNotificationViewState;
|
|
5
|
-
export declare const clearFeatureNotificationView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"featureNotificationView/clearFeatureNotificationView">, fetchRegisteredInterests: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[feature: string], {
|
|
6
|
-
feature: string;
|
|
7
|
-
}, "featureNotificationView/fetchRegisteredInterests", never, never>, fetchRegisteredInterestsFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[status: ZeniAPIStatus<Record<string, unknown>>], {
|
|
8
|
-
status: ZeniAPIStatus<Record<string, unknown>>;
|
|
9
|
-
}, "featureNotificationView/fetchRegisteredInterestsFailure", never, never>, fetchRegisteredInterestsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[interests: FeatureInterest[]], {
|
|
10
|
-
interests: FeatureInterest[];
|
|
11
|
-
}, "featureNotificationView/fetchRegisteredInterestsSuccess", never, never>, notifyMeForFeature: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[feature: string, additionalInfo: string, email: string], {
|
|
12
|
-
feature: string;
|
|
13
|
-
additionalInfo: string;
|
|
14
|
-
email: string;
|
|
15
|
-
}, "featureNotificationView/notifyMeForFeature", never, never>, notifyMeForFeatureFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[status: ZeniAPIStatus<Record<string, unknown>>], {
|
|
16
|
-
status: ZeniAPIStatus<Record<string, unknown>>;
|
|
17
|
-
}, "featureNotificationView/notifyMeForFeatureFailure", never, never>, notifyMeForFeatureSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: FeatureInterestDataPayload], FeatureInterestDataPayload, "featureNotificationView/notifyMeForFeatureSuccess", never, never>;
|
|
18
|
-
declare const _default: import("redux").Reducer<FeatureNotificationViewState>;
|
|
19
|
-
export default _default;
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.notifyMeForFeatureSuccess = exports.notifyMeForFeatureFailure = exports.notifyMeForFeature = exports.fetchRegisteredInterestsSuccess = exports.fetchRegisteredInterestsFailure = exports.fetchRegisteredInterests = exports.clearFeatureNotificationView = exports.initialState = void 0;
|
|
5
|
-
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
-
const featureNotificationViewPayload_1 = require("./featureNotificationViewPayload");
|
|
7
|
-
exports.initialState = {
|
|
8
|
-
fetchRegisteredInterestsState: {
|
|
9
|
-
fetchState: 'Not-Started',
|
|
10
|
-
error: undefined,
|
|
11
|
-
},
|
|
12
|
-
notifyMeForFeatureState: {
|
|
13
|
-
fetchState: 'Not-Started',
|
|
14
|
-
error: undefined,
|
|
15
|
-
},
|
|
16
|
-
registeredInterests: [],
|
|
17
|
-
};
|
|
18
|
-
const featureNotificationView = (0, toolkit_1.createSlice)({
|
|
19
|
-
name: 'featureNotificationView',
|
|
20
|
-
initialState: exports.initialState,
|
|
21
|
-
reducers: {
|
|
22
|
-
notifyMeForFeature: {
|
|
23
|
-
prepare(feature, additionalInfo, email) {
|
|
24
|
-
return { payload: { feature, additionalInfo, email } };
|
|
25
|
-
},
|
|
26
|
-
reducer(draft,
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28
|
-
_action) {
|
|
29
|
-
draft.notifyMeForFeatureState = {
|
|
30
|
-
fetchState: 'In-Progress',
|
|
31
|
-
error: undefined,
|
|
32
|
-
};
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
notifyMeForFeatureSuccess: {
|
|
36
|
-
prepare(payload) {
|
|
37
|
-
return { payload };
|
|
38
|
-
},
|
|
39
|
-
reducer(draft, action) {
|
|
40
|
-
draft.notifyMeForFeatureState = {
|
|
41
|
-
fetchState: 'Completed',
|
|
42
|
-
error: undefined,
|
|
43
|
-
};
|
|
44
|
-
const interest = (0, featureNotificationViewPayload_1.toFeatureInterest)(action.payload);
|
|
45
|
-
// Idempotent: if a row for this (feature, additional_info) already
|
|
46
|
-
// exists in the slice, replace it; otherwise append.
|
|
47
|
-
const existingIndex = draft.registeredInterests.findIndex((r) => r.feature === interest.feature &&
|
|
48
|
-
r.additionalInfo === interest.additionalInfo);
|
|
49
|
-
if (existingIndex >= 0) {
|
|
50
|
-
draft.registeredInterests[existingIndex] = interest;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
draft.registeredInterests.push(interest);
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
notifyMeForFeatureFailure: {
|
|
58
|
-
prepare(status) {
|
|
59
|
-
return { payload: { status } };
|
|
60
|
-
},
|
|
61
|
-
reducer(draft, action) {
|
|
62
|
-
draft.notifyMeForFeatureState = {
|
|
63
|
-
fetchState: 'Error',
|
|
64
|
-
error: action.payload.status,
|
|
65
|
-
};
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
fetchRegisteredInterests: {
|
|
69
|
-
prepare(feature) {
|
|
70
|
-
return { payload: { feature } };
|
|
71
|
-
},
|
|
72
|
-
reducer(draft,
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
74
|
-
_action) {
|
|
75
|
-
draft.fetchRegisteredInterestsState = {
|
|
76
|
-
fetchState: 'In-Progress',
|
|
77
|
-
error: undefined,
|
|
78
|
-
};
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
fetchRegisteredInterestsSuccess: {
|
|
82
|
-
prepare(interests) {
|
|
83
|
-
return { payload: { interests } };
|
|
84
|
-
},
|
|
85
|
-
reducer(draft, action) {
|
|
86
|
-
draft.fetchRegisteredInterestsState = {
|
|
87
|
-
fetchState: 'Completed',
|
|
88
|
-
error: undefined,
|
|
89
|
-
};
|
|
90
|
-
draft.registeredInterests = action.payload.interests;
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
fetchRegisteredInterestsFailure: {
|
|
94
|
-
prepare(status) {
|
|
95
|
-
return { payload: { status } };
|
|
96
|
-
},
|
|
97
|
-
reducer(draft, action) {
|
|
98
|
-
draft.fetchRegisteredInterestsState = {
|
|
99
|
-
fetchState: 'Error',
|
|
100
|
-
error: action.payload.status,
|
|
101
|
-
};
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
clearFeatureNotificationView(draft) {
|
|
105
|
-
Object.assign(draft, exports.initialState);
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
_a = featureNotificationView.actions, exports.clearFeatureNotificationView = _a.clearFeatureNotificationView, exports.fetchRegisteredInterests = _a.fetchRegisteredInterests, exports.fetchRegisteredInterestsFailure = _a.fetchRegisteredInterestsFailure, exports.fetchRegisteredInterestsSuccess = _a.fetchRegisteredInterestsSuccess, exports.notifyMeForFeature = _a.notifyMeForFeature, exports.notifyMeForFeatureFailure = _a.notifyMeForFeatureFailure, exports.notifyMeForFeatureSuccess = _a.notifyMeForFeatureSuccess;
|
|
110
|
-
exports.default = featureNotificationView.reducer;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { RootState } from '../../reducer';
|
|
2
|
-
import { FeatureInterest } from './featureNotificationViewState';
|
|
3
|
-
export declare const getFeatureNotificationView: (state: RootState) => import("./featureNotificationViewState").FeatureNotificationViewState;
|
|
4
|
-
export declare const getRegisteredInterests: (state: RootState) => FeatureInterest[];
|
|
5
|
-
export declare const getRegisteredInterestsByFeature: (state: RootState, feature: string) => FeatureInterest[];
|
|
6
|
-
export declare const isFeatureInterestRegistered: (state: RootState, feature: string, additionalInfo: string) => boolean;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isFeatureInterestRegistered = exports.getRegisteredInterestsByFeature = exports.getRegisteredInterests = exports.getFeatureNotificationView = void 0;
|
|
4
|
-
const getFeatureNotificationView = (state) => state.featureNotificationViewState;
|
|
5
|
-
exports.getFeatureNotificationView = getFeatureNotificationView;
|
|
6
|
-
const getRegisteredInterests = (state) => state.featureNotificationViewState.registeredInterests;
|
|
7
|
-
exports.getRegisteredInterests = getRegisteredInterests;
|
|
8
|
-
const getRegisteredInterestsByFeature = (state, feature) => state.featureNotificationViewState.registeredInterests.filter((interest) => interest.feature === feature);
|
|
9
|
-
exports.getRegisteredInterestsByFeature = getRegisteredInterestsByFeature;
|
|
10
|
-
const isFeatureInterestRegistered = (state, feature, additionalInfo) => state.featureNotificationViewState.registeredInterests.some((interest) => interest.feature === feature && interest.additionalInfo === additionalInfo);
|
|
11
|
-
exports.isFeatureInterestRegistered = isFeatureInterestRegistered;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { FetchStateAndError, ID } from '../../commonStateTypes/common';
|
|
2
|
-
import { ZeniDate } from '../../zeniDayJS';
|
|
3
|
-
/**
|
|
4
|
-
* A single user-feature interest record returned by
|
|
5
|
-
* `GET /1.0/feature-interests` and `POST /1.0/feature-interests`.
|
|
6
|
-
*
|
|
7
|
-
* Used by the Integrations page "Notify me" buttons to register that the
|
|
8
|
-
* user wants an email when a not-yet-shipped connector becomes available.
|
|
9
|
-
* Generic enough to drive any future "Notify me" UI by adding a slug to
|
|
10
|
-
* the backend allowlist (FEATURE_INTEREST_ALLOWED_VALUES).
|
|
11
|
-
*/
|
|
12
|
-
export interface FeatureInterest {
|
|
13
|
-
createTime: ZeniDate;
|
|
14
|
-
feature: string;
|
|
15
|
-
interestId: ID;
|
|
16
|
-
notified: boolean;
|
|
17
|
-
updateTime: ZeniDate;
|
|
18
|
-
additionalInfo?: string;
|
|
19
|
-
email?: string;
|
|
20
|
-
notifiedTime?: ZeniDate;
|
|
21
|
-
}
|
|
22
|
-
export interface FeatureNotificationViewState {
|
|
23
|
-
fetchRegisteredInterestsState: FetchStateAndError;
|
|
24
|
-
notifyMeForFeatureState: FetchStateAndError;
|
|
25
|
-
registeredInterests: FeatureInterest[];
|
|
26
|
-
}
|