@zeniai/client-epic-state 5.0.71-betaAK1 → 5.0.71-betaAS1
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/commonStateTypes/amount.d.ts +0 -1
- package/lib/commonStateTypes/amount.js +1 -3
- package/lib/epic.d.ts +1 -4
- package/lib/epic.js +1 -4
- package/lib/esm/commonStateTypes/amount.js +0 -1
- package/lib/esm/epic.js +1 -4
- package/lib/esm/index.js +0 -2
- package/lib/esm/reducer.js +0 -6
- package/lib/index.d.ts +0 -3
- package/lib/index.js +1 -6
- package/lib/reducer.d.ts +0 -6
- package/lib/reducer.js +0 -6
- package/package.json +1 -1
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.d.ts +0 -11
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.js +0 -23
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.d.ts +0 -6
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.js +0 -31
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.d.ts +0 -4
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.js +0 -16
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventState.d.ts +0 -13
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventState.js +0 -2
- package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.js +0 -19
- package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.js +0 -27
- package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.js +0 -11
- package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventState.js +0 -1
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +0 -1
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +0 -82
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +0 -93
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +0 -14
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +0 -6
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +0 -42
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.js +0 -22
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.d.ts +0 -10
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +0 -2
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.d.ts +0 -20
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +0 -86
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.d.ts +0 -20
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +0 -98
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.d.ts +0 -21
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +0 -17
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.d.ts +0 -5
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +0 -10
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.d.ts +0 -9
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +0 -46
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.d.ts +0 -8
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.js +0 -26
package/lib/reducer.js
CHANGED
|
@@ -100,7 +100,6 @@ const tenantReducer_1 = __importStar(require("./entity/tenant/tenantReducer"));
|
|
|
100
100
|
const toastNotificationReducer_1 = __importStar(require("./entity/toastNotification/toastNotificationReducer"));
|
|
101
101
|
const transactionReducer_1 = __importStar(require("./entity/transaction/transactionReducer"));
|
|
102
102
|
const transactionActivityLogReducer_1 = __importStar(require("./entity/transactionActivityLog/transactionActivityLogReducer"));
|
|
103
|
-
const upcomingPaymentEventReducer_1 = __importStar(require("./entity/upcomingPaymentEvent/upcomingPaymentEventReducer"));
|
|
104
103
|
const userReducer_1 = __importStar(require("./entity/user/userReducer"));
|
|
105
104
|
const userGroupsReducer_1 = __importStar(require("./entity/userGroups/userGroupsReducer"));
|
|
106
105
|
const userRoleReducer_1 = __importStar(require("./entity/userRole/userRoleReducer"));
|
|
@@ -197,7 +196,6 @@ const internationalWireVerificationReducer_1 = __importStar(require("./view/spen
|
|
|
197
196
|
const magicLinkViewReducer_1 = __importStar(require("./view/spendManagement/billPay/magicLinkView/magicLinkViewReducer"));
|
|
198
197
|
const previousBillsReducer_1 = __importStar(require("./view/spendManagement/billPay/previousBills/previousBillsReducer"));
|
|
199
198
|
const wiseRedirectReducer_1 = __importStar(require("./view/spendManagement/billPay/wiseRedirectView/wiseRedirectReducer"));
|
|
200
|
-
const cashManagementOverviewReducer_1 = __importStar(require("./view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer"));
|
|
201
199
|
const cardUserOnboardingReducer_1 = __importStar(require("./view/spendManagement/chargeCards/cardUserOnboarding/cardUserOnboardingReducer"));
|
|
202
200
|
const cashbackDetailReducer_1 = __importStar(require("./view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer"));
|
|
203
201
|
const chargeCardConfigReducer_1 = __importStar(require("./view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer"));
|
|
@@ -328,7 +326,6 @@ const initialEntitiesState = {
|
|
|
328
326
|
toastNotificationState: toastNotificationReducer_1.initialState,
|
|
329
327
|
transactionActivityLogState: transactionActivityLogReducer_1.initialState,
|
|
330
328
|
transactionState: transactionReducer_1.initialState,
|
|
331
|
-
upcomingPaymentEventState: upcomingPaymentEventReducer_1.initialState,
|
|
332
329
|
userGroupsState: userGroupsReducer_1.initialState,
|
|
333
330
|
userRoleState: userRoleReducer_1.initialState,
|
|
334
331
|
userState: userReducer_1.initialState,
|
|
@@ -368,7 +365,6 @@ const initialViewsState = {
|
|
|
368
365
|
cashBalanceState: cashBalanceReducer_1.initialState,
|
|
369
366
|
cashFlowState: cashFlowReducer_1.initialState,
|
|
370
367
|
cashInCashOutState: cashInCashOutReducer_1.initialState,
|
|
371
|
-
cashManagementOverviewState: cashManagementOverviewReducer_1.initialState,
|
|
372
368
|
cashPositionState: cashPositionReducer_1.initialState,
|
|
373
369
|
chargeCardConfigState: chargeCardConfigReducer_1.initialState,
|
|
374
370
|
chargeCardDetailState: chargeCardDetailReducer_1.initialState,
|
|
@@ -566,7 +562,6 @@ const entityReducers = {
|
|
|
566
562
|
toastNotificationState: toastNotificationReducer_1.default,
|
|
567
563
|
transactionActivityLogState: transactionActivityLogReducer_1.default,
|
|
568
564
|
transactionState: transactionReducer_1.default,
|
|
569
|
-
upcomingPaymentEventState: upcomingPaymentEventReducer_1.default,
|
|
570
565
|
userGroupsState: userGroupsReducer_1.default,
|
|
571
566
|
userRoleState: userRoleReducer_1.default,
|
|
572
567
|
userState: userReducer_1.default,
|
|
@@ -605,7 +600,6 @@ const viewReducers = {
|
|
|
605
600
|
cashBalanceState: cashBalanceReducer_1.default,
|
|
606
601
|
cashFlowState: cashFlowReducer_1.default,
|
|
607
602
|
cashInCashOutState: cashInCashOutReducer_1.default,
|
|
608
|
-
cashManagementOverviewState: cashManagementOverviewReducer_1.default,
|
|
609
603
|
cashPositionState: cashPositionReducer_1.default,
|
|
610
604
|
chargeCardConfigState: chargeCardConfigReducer_1.default,
|
|
611
605
|
chargeCardDetailState: chargeCardDetailReducer_1.default,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.0.71-
|
|
3
|
+
"version": "5.0.71-betaAS1",
|
|
4
4
|
"description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { UpcomingPaymentEvent } from './upcomingPaymentEventState';
|
|
2
|
-
export interface UpcomingPaymentEventPayload {
|
|
3
|
-
amount: number;
|
|
4
|
-
currency_code: string;
|
|
5
|
-
id: string;
|
|
6
|
-
payment_date: string;
|
|
7
|
-
type: 'reimbursement' | 'bill';
|
|
8
|
-
report_title?: string;
|
|
9
|
-
vendor_name?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const toUpcomingPaymentEvent: (payload: UpcomingPaymentEventPayload) => UpcomingPaymentEvent;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toUpcomingPaymentEvent = void 0;
|
|
4
|
-
const amount_1 = require("../../commonStateTypes/amount");
|
|
5
|
-
const zeniDayJS_1 = require("../../zeniDayJS");
|
|
6
|
-
const getTitle = (payload) => {
|
|
7
|
-
switch (payload.type) {
|
|
8
|
-
case 'bill':
|
|
9
|
-
return payload.vendor_name ?? '';
|
|
10
|
-
case 'reimbursement':
|
|
11
|
-
return payload.report_title ?? '';
|
|
12
|
-
default:
|
|
13
|
-
return '';
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
const toUpcomingPaymentEvent = (payload) => ({
|
|
17
|
-
amount: (0, amount_1.toAmount)(payload.amount, payload.currency_code, payload.currency_code),
|
|
18
|
-
id: payload.id,
|
|
19
|
-
paymentDate: (0, zeniDayJS_1.date)(payload.payment_date),
|
|
20
|
-
title: getTitle(payload),
|
|
21
|
-
type: payload.type,
|
|
22
|
-
});
|
|
23
|
-
exports.toUpcomingPaymentEvent = toUpcomingPaymentEvent;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { UpcomingPaymentEventPayload } from './upcomingPaymentEventPayload';
|
|
2
|
-
import { UpcomingPaymentEventState } from './upcomingPaymentEventState';
|
|
3
|
-
export declare const initialState: UpcomingPaymentEventState;
|
|
4
|
-
export declare const updateUpcomingPaymentEvents: import("@reduxjs/toolkit").ActionCreatorWithPayload<UpcomingPaymentEventPayload[], "upcomingPaymentEvent/updateUpcomingPaymentEvents">, removeUpcomingPaymentEvent: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "upcomingPaymentEvent/removeUpcomingPaymentEvent">, clearAllUpcomingPaymentEvents: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"upcomingPaymentEvent/clearAllUpcomingPaymentEvents">;
|
|
5
|
-
declare const _default: import("redux").Reducer<UpcomingPaymentEventState>;
|
|
6
|
-
export default _default;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.clearAllUpcomingPaymentEvents = exports.removeUpcomingPaymentEvent = exports.updateUpcomingPaymentEvents = exports.initialState = void 0;
|
|
5
|
-
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
-
const upcomingPaymentEventPayload_1 = require("./upcomingPaymentEventPayload");
|
|
7
|
-
exports.initialState = {
|
|
8
|
-
eventsById: {},
|
|
9
|
-
};
|
|
10
|
-
const upcomingPaymentEvent = (0, toolkit_1.createSlice)({
|
|
11
|
-
name: 'upcomingPaymentEvent',
|
|
12
|
-
initialState: exports.initialState,
|
|
13
|
-
reducers: {
|
|
14
|
-
updateUpcomingPaymentEvents(draft, action) {
|
|
15
|
-
action.payload.forEach((payload) => {
|
|
16
|
-
const event = (0, upcomingPaymentEventPayload_1.toUpcomingPaymentEvent)(payload);
|
|
17
|
-
if (event != null) {
|
|
18
|
-
draft.eventsById[event.id] = event;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
},
|
|
22
|
-
removeUpcomingPaymentEvent(draft, action) {
|
|
23
|
-
delete draft.eventsById[action.payload];
|
|
24
|
-
},
|
|
25
|
-
clearAllUpcomingPaymentEvents(draft) {
|
|
26
|
-
draft.eventsById = {};
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
_a = upcomingPaymentEvent.actions, exports.updateUpcomingPaymentEvents = _a.updateUpcomingPaymentEvents, exports.removeUpcomingPaymentEvent = _a.removeUpcomingPaymentEvent, exports.clearAllUpcomingPaymentEvents = _a.clearAllUpcomingPaymentEvents;
|
|
31
|
-
exports.default = upcomingPaymentEvent.reducer;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ID } from '../../commonStateTypes/common';
|
|
2
|
-
import { UpcomingPaymentEvent, UpcomingPaymentEventState } from './upcomingPaymentEventState';
|
|
3
|
-
export declare const getUpcomingPaymentEventById: (state: UpcomingPaymentEventState, id: ID) => UpcomingPaymentEvent | undefined;
|
|
4
|
-
export declare const getUpcomingPaymentEventsByIds: (state: UpcomingPaymentEventState, ids: ID[]) => UpcomingPaymentEvent[];
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUpcomingPaymentEventsByIds = exports.getUpcomingPaymentEventById = void 0;
|
|
4
|
-
const getUpcomingPaymentEventById = (state, id) => state.eventsById[id];
|
|
5
|
-
exports.getUpcomingPaymentEventById = getUpcomingPaymentEventById;
|
|
6
|
-
const getUpcomingPaymentEventsByIds = (state, ids) => {
|
|
7
|
-
const events = [];
|
|
8
|
-
ids.forEach((id) => {
|
|
9
|
-
const event = state.eventsById[id];
|
|
10
|
-
if (event != null) {
|
|
11
|
-
events.push(event);
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
return events;
|
|
15
|
-
};
|
|
16
|
-
exports.getUpcomingPaymentEventsByIds = getUpcomingPaymentEventsByIds;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Amount } from '../../commonStateTypes/amount';
|
|
2
|
-
import { ID } from '../../commonStateTypes/common';
|
|
3
|
-
import { ZeniDate } from '../../zeniDayJS';
|
|
4
|
-
export interface UpcomingPaymentEvent {
|
|
5
|
-
amount: Amount;
|
|
6
|
-
id: ID;
|
|
7
|
-
paymentDate: ZeniDate;
|
|
8
|
-
title: string;
|
|
9
|
-
type: 'reimbursement' | 'bill';
|
|
10
|
-
}
|
|
11
|
-
export interface UpcomingPaymentEventState {
|
|
12
|
-
eventsById: Record<ID, UpcomingPaymentEvent>;
|
|
13
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { toAmount } from '../../commonStateTypes/amount';
|
|
2
|
-
import { date } from '../../zeniDayJS';
|
|
3
|
-
const getTitle = (payload) => {
|
|
4
|
-
switch (payload.type) {
|
|
5
|
-
case 'bill':
|
|
6
|
-
return payload.vendor_name ?? '';
|
|
7
|
-
case 'reimbursement':
|
|
8
|
-
return payload.report_title ?? '';
|
|
9
|
-
default:
|
|
10
|
-
return '';
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
export const toUpcomingPaymentEvent = (payload) => ({
|
|
14
|
-
amount: toAmount(payload.amount, payload.currency_code, payload.currency_code),
|
|
15
|
-
id: payload.id,
|
|
16
|
-
paymentDate: date(payload.payment_date),
|
|
17
|
-
title: getTitle(payload),
|
|
18
|
-
type: payload.type,
|
|
19
|
-
});
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
-
import { toUpcomingPaymentEvent, } from './upcomingPaymentEventPayload';
|
|
3
|
-
export const initialState = {
|
|
4
|
-
eventsById: {},
|
|
5
|
-
};
|
|
6
|
-
const upcomingPaymentEvent = createSlice({
|
|
7
|
-
name: 'upcomingPaymentEvent',
|
|
8
|
-
initialState,
|
|
9
|
-
reducers: {
|
|
10
|
-
updateUpcomingPaymentEvents(draft, action) {
|
|
11
|
-
action.payload.forEach((payload) => {
|
|
12
|
-
const event = toUpcomingPaymentEvent(payload);
|
|
13
|
-
if (event != null) {
|
|
14
|
-
draft.eventsById[event.id] = event;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
},
|
|
18
|
-
removeUpcomingPaymentEvent(draft, action) {
|
|
19
|
-
delete draft.eventsById[action.payload];
|
|
20
|
-
},
|
|
21
|
-
clearAllUpcomingPaymentEvents(draft) {
|
|
22
|
-
draft.eventsById = {};
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
export const { updateUpcomingPaymentEvents, removeUpcomingPaymentEvent, clearAllUpcomingPaymentEvents, } = upcomingPaymentEvent.actions;
|
|
27
|
-
export default upcomingPaymentEvent.reducer;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export const getUpcomingPaymentEventById = (state, id) => state.eventsById[id];
|
|
2
|
-
export const getUpcomingPaymentEventsByIds = (state, ids) => {
|
|
3
|
-
const events = [];
|
|
4
|
-
ids.forEach((id) => {
|
|
5
|
-
const event = state.eventsById[id];
|
|
6
|
-
if (event != null) {
|
|
7
|
-
events.push(event);
|
|
8
|
-
}
|
|
9
|
-
});
|
|
10
|
-
return events;
|
|
11
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
-
import { initialCashManagementBannerState, initialUpcomingPaymentEventsListState, } from './cashManagementOverviewState';
|
|
3
|
-
export const initialState = {
|
|
4
|
-
banner: initialCashManagementBannerState,
|
|
5
|
-
upcomingPaymentEvents: initialUpcomingPaymentEventsListState,
|
|
6
|
-
fetchState: 'Not-Started',
|
|
7
|
-
error: undefined,
|
|
8
|
-
hasValidState() {
|
|
9
|
-
return this.fetchState == 'Completed';
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
const cashManagementOverview = createSlice({
|
|
13
|
-
name: 'cashManagementOverview',
|
|
14
|
-
initialState,
|
|
15
|
-
reducers: {
|
|
16
|
-
fetchCashManagementOverviewPage: {
|
|
17
|
-
reducer() { },
|
|
18
|
-
prepare(cacheOverride) {
|
|
19
|
-
return { payload: { cacheOverride } };
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
fetchUpcomingPaymentEvents(draft) {
|
|
23
|
-
draft.upcomingPaymentEvents = {
|
|
24
|
-
...draft.upcomingPaymentEvents,
|
|
25
|
-
fetchState: 'In-Progress',
|
|
26
|
-
error: undefined,
|
|
27
|
-
};
|
|
28
|
-
},
|
|
29
|
-
updateUpcomingPaymentEventsList(draft, action) {
|
|
30
|
-
const { data } = action.payload;
|
|
31
|
-
const eventIds = [];
|
|
32
|
-
data.events.forEach((payload) => {
|
|
33
|
-
if (payload.id != null) {
|
|
34
|
-
eventIds.push(payload.id);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
draft.upcomingPaymentEvents = {
|
|
38
|
-
fetchState: 'Completed',
|
|
39
|
-
error: undefined,
|
|
40
|
-
billStages: (data.bill_stages ?? []),
|
|
41
|
-
eventIds,
|
|
42
|
-
horizonDays: data.horizon_days,
|
|
43
|
-
reimbursementStages: (data.reimbursement_stages ??
|
|
44
|
-
[]),
|
|
45
|
-
tenantNamespace: data.tenant_namespace,
|
|
46
|
-
};
|
|
47
|
-
},
|
|
48
|
-
updateUpcomingPaymentEventsListFetchStatus(draft, action) {
|
|
49
|
-
draft.upcomingPaymentEvents = {
|
|
50
|
-
...draft.upcomingPaymentEvents,
|
|
51
|
-
fetchState: action.payload.fetchState,
|
|
52
|
-
error: action.payload.error,
|
|
53
|
-
};
|
|
54
|
-
},
|
|
55
|
-
fetchCashManagementBanner(draft) {
|
|
56
|
-
draft.banner = {
|
|
57
|
-
...initialCashManagementBannerState,
|
|
58
|
-
fetchState: 'In-Progress',
|
|
59
|
-
error: undefined,
|
|
60
|
-
};
|
|
61
|
-
},
|
|
62
|
-
updateCashManagementBanner(draft, action) {
|
|
63
|
-
draft.banner = {
|
|
64
|
-
fetchState: 'Completed',
|
|
65
|
-
error: undefined,
|
|
66
|
-
data: action.payload.data,
|
|
67
|
-
};
|
|
68
|
-
},
|
|
69
|
-
updateCashManagementBannerFetchStatus(draft, action) {
|
|
70
|
-
draft.banner = {
|
|
71
|
-
...draft.banner,
|
|
72
|
-
fetchState: action.payload.fetchState,
|
|
73
|
-
error: action.payload.error,
|
|
74
|
-
};
|
|
75
|
-
},
|
|
76
|
-
clearCashManagementOverview(draft) {
|
|
77
|
-
Object.assign(draft, initialState);
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
});
|
|
81
|
-
export const { fetchCashManagementOverviewPage, fetchUpcomingPaymentEvents, updateUpcomingPaymentEventsList, updateUpcomingPaymentEventsListFetchStatus, fetchCashManagementBanner, updateCashManagementBanner, updateCashManagementBannerFetchStatus, clearCashManagementOverview, } = cashManagementOverview.actions;
|
|
82
|
-
export default cashManagementOverview.reducer;
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { zeroAmount } from '../../../../commonStateTypes/amount';
|
|
2
|
-
import { reduceAllFetchState } from '../../../../commonStateTypes/reduceFetchState';
|
|
3
|
-
import { getUpcomingPaymentEventsByIds } from '../../../../entity/upcomingPaymentEvent/upcomingPaymentEventSelector';
|
|
4
|
-
export const getCashManagementOverviewBanner = (state) => {
|
|
5
|
-
const { banner } = state.cashManagementOverviewState;
|
|
6
|
-
return {
|
|
7
|
-
fetchState: banner.fetchState,
|
|
8
|
-
error: banner.error,
|
|
9
|
-
data: banner.data,
|
|
10
|
-
version: 0,
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
export const getCashManagementOverview = (state) => {
|
|
14
|
-
const { cashManagementOverviewState, depositAccountListState, depositAccountState, paymentAccountListState, paymentAccountState, treasuryDetailState, } = state;
|
|
15
|
-
const outflowEventsFetchState = {
|
|
16
|
-
fetchState: cashManagementOverviewState.upcomingPaymentEvents.fetchState,
|
|
17
|
-
error: cashManagementOverviewState.upcomingPaymentEvents.error,
|
|
18
|
-
};
|
|
19
|
-
const bannerFetchState = {
|
|
20
|
-
fetchState: cashManagementOverviewState.banner.fetchState,
|
|
21
|
-
error: cashManagementOverviewState.banner.error,
|
|
22
|
-
};
|
|
23
|
-
const aggregate = reduceAllFetchState([
|
|
24
|
-
{
|
|
25
|
-
fetchState: paymentAccountListState.fetchState,
|
|
26
|
-
error: paymentAccountListState.error,
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
fetchState: depositAccountListState.fetchState,
|
|
30
|
-
error: depositAccountListState.error,
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
fetchState: treasuryDetailState.fetchState,
|
|
34
|
-
error: treasuryDetailState.error,
|
|
35
|
-
},
|
|
36
|
-
outflowEventsFetchState,
|
|
37
|
-
bannerFetchState,
|
|
38
|
-
]);
|
|
39
|
-
const treasuryBalance = treasuryDetailState.accountSummary?.totalBalance ?? zeroAmount();
|
|
40
|
-
const cashBalance = sumCashBalances(paymentAccountListState.paymentAccountIds, paymentAccountState, depositAccountListState.accountIds, depositAccountState);
|
|
41
|
-
const totalCash = addAmounts(treasuryBalance, cashBalance);
|
|
42
|
-
return {
|
|
43
|
-
bannerFetchState,
|
|
44
|
-
cashBalance,
|
|
45
|
-
horizonDays: cashManagementOverviewState.upcomingPaymentEvents.horizonDays,
|
|
46
|
-
outflowEvents: getUpcomingPaymentEventsByIds(state.upcomingPaymentEventState, cashManagementOverviewState.upcomingPaymentEvents.eventIds),
|
|
47
|
-
outflowEventsFetchState,
|
|
48
|
-
totalCash,
|
|
49
|
-
treasuryBalance,
|
|
50
|
-
fetchState: aggregate.fetchState,
|
|
51
|
-
error: aggregate.error,
|
|
52
|
-
version: 0,
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
const isZeroAmount = (a) => a.amount === 0 && a.currencyCode === 'USD' && a.currencySymbol === '$';
|
|
56
|
-
/**
|
|
57
|
-
* Adds two Amounts. Currencies must match (the seeded zeroAmount() counts as
|
|
58
|
-
* "no currency yet" and adopts `b`'s currency). Mismatches return `a`
|
|
59
|
-
* unchanged and warn — mixing currencies in a total is a bug, not silent
|
|
60
|
-
* conversion.
|
|
61
|
-
*/
|
|
62
|
-
const addAmounts = (a, b) => {
|
|
63
|
-
if (isZeroAmount(a)) {
|
|
64
|
-
return { ...b };
|
|
65
|
-
}
|
|
66
|
-
if (a.currencyCode !== b.currencyCode ||
|
|
67
|
-
a.currencySymbol !== b.currencySymbol) {
|
|
68
|
-
console.warn(`cashManagementOverview: skipping balance with mismatched currency. Expected ${a.currencyCode} (${a.currencySymbol}), got ${b.currencyCode} (${b.currencySymbol}).`);
|
|
69
|
-
return a;
|
|
70
|
-
}
|
|
71
|
-
return {
|
|
72
|
-
amount: a.amount + b.amount,
|
|
73
|
-
currencyCode: a.currencyCode,
|
|
74
|
-
currencySymbol: a.currencySymbol,
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
const sumCashBalances = (paymentAccountIds, paymentAccountState, depositAccountIds, depositAccountState) => {
|
|
78
|
-
let total = zeroAmount();
|
|
79
|
-
paymentAccountIds.forEach((id) => {
|
|
80
|
-
const balance = paymentAccountState.paymentAccountByID[id]?.balances
|
|
81
|
-
?.available;
|
|
82
|
-
if (balance != null) {
|
|
83
|
-
total = addAmounts(total, balance);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
depositAccountIds.forEach((id) => {
|
|
87
|
-
const balance = depositAccountState.depositAccountByID[id]?.accountBalance?.available;
|
|
88
|
-
if (balance != null) {
|
|
89
|
-
total = addAmounts(total, balance);
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
return total;
|
|
93
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export const initialCashManagementBannerState = {
|
|
2
|
-
fetchState: 'Not-Started',
|
|
3
|
-
error: undefined,
|
|
4
|
-
data: undefined,
|
|
5
|
-
};
|
|
6
|
-
export const initialUpcomingPaymentEventsListState = {
|
|
7
|
-
fetchState: 'Not-Started',
|
|
8
|
-
error: undefined,
|
|
9
|
-
billStages: [],
|
|
10
|
-
eventIds: [],
|
|
11
|
-
horizonDays: 0,
|
|
12
|
-
reimbursementStages: [],
|
|
13
|
-
tenantNamespace: undefined,
|
|
14
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { EMPTY } from 'rxjs';
|
|
2
|
-
import { filter, mergeMap } from 'rxjs/operators';
|
|
3
|
-
import { fetchCashManagementBanner, } from '../cashManagementOverviewReducer';
|
|
4
|
-
// TODO: replace EMPTY with an actual API call once the banner endpoint is finalized.
|
|
5
|
-
// Figma: https://www.figma.com/design/FUg2pv7edRAidx9X56VnZT/Cash-Management?node-id=2265-63443
|
|
6
|
-
export const fetchCashManagementBannerEpic = (actions$) => actions$.pipe(filter(fetchCashManagementBanner.match), mergeMap(() => EMPTY));
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { concat, from } from 'rxjs';
|
|
2
|
-
import { filter, mergeMap } from 'rxjs/operators';
|
|
3
|
-
import { fetchAutoTransferRules } from '../../../autotransferRules/autoTransferRulesReducer';
|
|
4
|
-
import { fetchTreasuryOverviewDetail } from '../../../treasury/treasuryList/treasuryDetailReducer';
|
|
5
|
-
import { fetchZeniAccountList } from '../../../zeniAccounts/zeniAccountList/zeniAccountListReducer';
|
|
6
|
-
import { fetchCashManagementBanner, fetchCashManagementOverviewPage, fetchUpcomingPaymentEvents, } from '../cashManagementOverviewReducer';
|
|
7
|
-
export const fetchCashManagementOverviewPageEpic = (actions$, state$) => actions$.pipe(filter(fetchCashManagementOverviewPage.match), mergeMap((action) => {
|
|
8
|
-
const { cacheOverride } = action.payload;
|
|
9
|
-
const state = state$.value;
|
|
10
|
-
const pageActions = [];
|
|
11
|
-
if (cacheOverride === true) {
|
|
12
|
-
pageActions.push(fetchTreasuryOverviewDetail(true));
|
|
13
|
-
pageActions.push(fetchZeniAccountList(true));
|
|
14
|
-
pageActions.push(fetchUpcomingPaymentEvents());
|
|
15
|
-
pageActions.push(fetchCashManagementBanner());
|
|
16
|
-
pageActions.push(fetchAutoTransferRules(true));
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
const treasuryDetailState = state.treasuryDetailState;
|
|
20
|
-
if (treasuryDetailState.hasValidState() === false &&
|
|
21
|
-
treasuryDetailState.fetchState !== 'In-Progress') {
|
|
22
|
-
pageActions.push(fetchTreasuryOverviewDetail(false));
|
|
23
|
-
}
|
|
24
|
-
pageActions.push(fetchZeniAccountList(false));
|
|
25
|
-
const upcomingEvents = state.cashManagementOverviewState.upcomingPaymentEvents;
|
|
26
|
-
if (upcomingEvents.fetchState !== 'Completed' &&
|
|
27
|
-
upcomingEvents.fetchState !== 'In-Progress') {
|
|
28
|
-
pageActions.push(fetchUpcomingPaymentEvents());
|
|
29
|
-
}
|
|
30
|
-
const banner = state.cashManagementOverviewState.banner;
|
|
31
|
-
if (banner.fetchState !== 'Completed' &&
|
|
32
|
-
banner.fetchState !== 'In-Progress') {
|
|
33
|
-
pageActions.push(fetchCashManagementBanner());
|
|
34
|
-
}
|
|
35
|
-
const autoTransferRules = state.autotransferRulesState;
|
|
36
|
-
if (autoTransferRules.fetchState !== 'Completed' &&
|
|
37
|
-
autoTransferRules.fetchState !== 'In-Progress') {
|
|
38
|
-
pageActions.push(fetchAutoTransferRules(false));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return concat(from(pageActions));
|
|
42
|
-
}));
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { of } from 'rxjs';
|
|
2
|
-
import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
|
|
3
|
-
import { createZeniAPIStatus, isSuccessResponse, } from '../../../../../responsePayload';
|
|
4
|
-
import { updateUpcomingPaymentEvents } from '../../../../../entity/upcomingPaymentEvent/upcomingPaymentEventReducer';
|
|
5
|
-
import { fetchUpcomingPaymentEvents, updateUpcomingPaymentEventsList, updateUpcomingPaymentEventsListFetchStatus, } from '../cashManagementOverviewReducer';
|
|
6
|
-
export const fetchUpcomingPaymentEventsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchUpcomingPaymentEvents.match), switchMap(() => zeniAPI
|
|
7
|
-
.getJSON(
|
|
8
|
-
// TODO: drop /rajat/ once the prod endpoint lands. `${zeniAPI.apiEndPoints.spendManagementMicroServiceBaseUrl}/1.0/upcoming-payment-events`
|
|
9
|
-
`https://dev.api.zeni.ai/version/spend-management/rajat/1.0/upcoming-payment-events`)
|
|
10
|
-
.pipe(mergeMap((response) => {
|
|
11
|
-
if (isSuccessResponse(response) && response.data != null) {
|
|
12
|
-
return of(updateUpcomingPaymentEvents(response.data.events), updateUpcomingPaymentEventsList({ data: response.data }));
|
|
13
|
-
}
|
|
14
|
-
return of(updateUpcomingPaymentEventsListFetchStatus({
|
|
15
|
-
fetchState: 'Error',
|
|
16
|
-
error: response.status,
|
|
17
|
-
}));
|
|
18
|
-
}), catchError((error) => of(updateUpcomingPaymentEventsListFetchStatus({
|
|
19
|
-
fetchState: 'Error',
|
|
20
|
-
error: createZeniAPIStatus('Unexpected Error', 'Fetch upcoming payment events REST API call errored out' +
|
|
21
|
-
JSON.stringify(error)),
|
|
22
|
-
}))))));
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { UpcomingPaymentEventPayload } from '../../../../entity/upcomingPaymentEvent/upcomingPaymentEventPayload';
|
|
2
|
-
import { ZeniAPIResponse } from '../../../../responsePayload';
|
|
3
|
-
export interface FetchUpcomingPaymentEventsPayload {
|
|
4
|
-
bill_stages: string[];
|
|
5
|
-
events: UpcomingPaymentEventPayload[];
|
|
6
|
-
horizon_days: number;
|
|
7
|
-
reimbursement_stages: string[];
|
|
8
|
-
tenant_namespace: string;
|
|
9
|
-
}
|
|
10
|
-
export type FetchUpcomingPaymentEventsResponse = ZeniAPIResponse<FetchUpcomingPaymentEventsPayload>;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { FetchState } from '../../../../commonStateTypes/common';
|
|
2
|
-
import { ZeniAPIStatus } from '../../../../responsePayload';
|
|
3
|
-
import { FetchUpcomingPaymentEventsPayload } from './cashManagementOverviewPayload';
|
|
4
|
-
import { CashManagementBannerData, CashManagementOverviewState } from './cashManagementOverviewState';
|
|
5
|
-
export declare const initialState: CashManagementOverviewState;
|
|
6
|
-
export declare const fetchCashManagementOverviewPage: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride: boolean], {
|
|
7
|
-
cacheOverride: boolean;
|
|
8
|
-
}, "cashManagementOverview/fetchCashManagementOverviewPage", never, never>, fetchUpcomingPaymentEvents: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cashManagementOverview/fetchUpcomingPaymentEvents">, updateUpcomingPaymentEventsList: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
9
|
-
data: FetchUpcomingPaymentEventsPayload;
|
|
10
|
-
}, "cashManagementOverview/updateUpcomingPaymentEventsList">, updateUpcomingPaymentEventsListFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
11
|
-
fetchState: FetchState;
|
|
12
|
-
error?: ZeniAPIStatus;
|
|
13
|
-
}, "cashManagementOverview/updateUpcomingPaymentEventsListFetchStatus">, fetchCashManagementBanner: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cashManagementOverview/fetchCashManagementBanner">, updateCashManagementBanner: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
14
|
-
data: CashManagementBannerData;
|
|
15
|
-
}, "cashManagementOverview/updateCashManagementBanner">, updateCashManagementBannerFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
16
|
-
fetchState: FetchState;
|
|
17
|
-
error?: ZeniAPIStatus;
|
|
18
|
-
}, "cashManagementOverview/updateCashManagementBannerFetchStatus">, clearCashManagementOverview: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cashManagementOverview/clearCashManagementOverview">;
|
|
19
|
-
declare const _default: import("redux").Reducer<CashManagementOverviewState>;
|
|
20
|
-
export default _default;
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.clearCashManagementOverview = exports.updateCashManagementBannerFetchStatus = exports.updateCashManagementBanner = exports.fetchCashManagementBanner = exports.updateUpcomingPaymentEventsListFetchStatus = exports.updateUpcomingPaymentEventsList = exports.fetchUpcomingPaymentEvents = exports.fetchCashManagementOverviewPage = exports.initialState = void 0;
|
|
5
|
-
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
-
const cashManagementOverviewState_1 = require("./cashManagementOverviewState");
|
|
7
|
-
exports.initialState = {
|
|
8
|
-
banner: cashManagementOverviewState_1.initialCashManagementBannerState,
|
|
9
|
-
upcomingPaymentEvents: cashManagementOverviewState_1.initialUpcomingPaymentEventsListState,
|
|
10
|
-
fetchState: 'Not-Started',
|
|
11
|
-
error: undefined,
|
|
12
|
-
hasValidState() {
|
|
13
|
-
return this.fetchState == 'Completed';
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
const cashManagementOverview = (0, toolkit_1.createSlice)({
|
|
17
|
-
name: 'cashManagementOverview',
|
|
18
|
-
initialState: exports.initialState,
|
|
19
|
-
reducers: {
|
|
20
|
-
fetchCashManagementOverviewPage: {
|
|
21
|
-
reducer() { },
|
|
22
|
-
prepare(cacheOverride) {
|
|
23
|
-
return { payload: { cacheOverride } };
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
fetchUpcomingPaymentEvents(draft) {
|
|
27
|
-
draft.upcomingPaymentEvents = {
|
|
28
|
-
...draft.upcomingPaymentEvents,
|
|
29
|
-
fetchState: 'In-Progress',
|
|
30
|
-
error: undefined,
|
|
31
|
-
};
|
|
32
|
-
},
|
|
33
|
-
updateUpcomingPaymentEventsList(draft, action) {
|
|
34
|
-
const { data } = action.payload;
|
|
35
|
-
const eventIds = [];
|
|
36
|
-
data.events.forEach((payload) => {
|
|
37
|
-
if (payload.id != null) {
|
|
38
|
-
eventIds.push(payload.id);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
draft.upcomingPaymentEvents = {
|
|
42
|
-
fetchState: 'Completed',
|
|
43
|
-
error: undefined,
|
|
44
|
-
billStages: (data.bill_stages ?? []),
|
|
45
|
-
eventIds,
|
|
46
|
-
horizonDays: data.horizon_days,
|
|
47
|
-
reimbursementStages: (data.reimbursement_stages ??
|
|
48
|
-
[]),
|
|
49
|
-
tenantNamespace: data.tenant_namespace,
|
|
50
|
-
};
|
|
51
|
-
},
|
|
52
|
-
updateUpcomingPaymentEventsListFetchStatus(draft, action) {
|
|
53
|
-
draft.upcomingPaymentEvents = {
|
|
54
|
-
...draft.upcomingPaymentEvents,
|
|
55
|
-
fetchState: action.payload.fetchState,
|
|
56
|
-
error: action.payload.error,
|
|
57
|
-
};
|
|
58
|
-
},
|
|
59
|
-
fetchCashManagementBanner(draft) {
|
|
60
|
-
draft.banner = {
|
|
61
|
-
...cashManagementOverviewState_1.initialCashManagementBannerState,
|
|
62
|
-
fetchState: 'In-Progress',
|
|
63
|
-
error: undefined,
|
|
64
|
-
};
|
|
65
|
-
},
|
|
66
|
-
updateCashManagementBanner(draft, action) {
|
|
67
|
-
draft.banner = {
|
|
68
|
-
fetchState: 'Completed',
|
|
69
|
-
error: undefined,
|
|
70
|
-
data: action.payload.data,
|
|
71
|
-
};
|
|
72
|
-
},
|
|
73
|
-
updateCashManagementBannerFetchStatus(draft, action) {
|
|
74
|
-
draft.banner = {
|
|
75
|
-
...draft.banner,
|
|
76
|
-
fetchState: action.payload.fetchState,
|
|
77
|
-
error: action.payload.error,
|
|
78
|
-
};
|
|
79
|
-
},
|
|
80
|
-
clearCashManagementOverview(draft) {
|
|
81
|
-
Object.assign(draft, exports.initialState);
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
_a = cashManagementOverview.actions, exports.fetchCashManagementOverviewPage = _a.fetchCashManagementOverviewPage, exports.fetchUpcomingPaymentEvents = _a.fetchUpcomingPaymentEvents, exports.updateUpcomingPaymentEventsList = _a.updateUpcomingPaymentEventsList, exports.updateUpcomingPaymentEventsListFetchStatus = _a.updateUpcomingPaymentEventsListFetchStatus, exports.fetchCashManagementBanner = _a.fetchCashManagementBanner, exports.updateCashManagementBanner = _a.updateCashManagementBanner, exports.updateCashManagementBannerFetchStatus = _a.updateCashManagementBannerFetchStatus, exports.clearCashManagementOverview = _a.clearCashManagementOverview;
|
|
86
|
-
exports.default = cashManagementOverview.reducer;
|