@zeniai/client-epic-state 5.0.69 → 5.0.71-betaAK1
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 +1 -0
- package/lib/commonStateTypes/amount.js +3 -1
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.d.ts +11 -0
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.js +23 -0
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.d.ts +6 -0
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.js +31 -0
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.d.ts +4 -0
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.js +16 -0
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventState.d.ts +13 -0
- package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventState.js +2 -0
- package/lib/epic.d.ts +4 -1
- package/lib/epic.js +4 -1
- package/lib/esm/commonStateTypes/amount.js +1 -0
- package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.js +19 -0
- package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.js +27 -0
- package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.js +11 -0
- package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventState.js +1 -0
- package/lib/esm/epic.js +4 -1
- package/lib/esm/index.js +2 -0
- package/lib/esm/reducer.js +6 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +1 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +82 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +93 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +14 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +6 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +42 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.js +22 -0
- package/lib/esm/view/spendManagement/commonHistoryView/commonHistoryPayload.js +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +6 -1
- package/lib/reducer.d.ts +6 -0
- package/lib/reducer.js +6 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.d.ts +10 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +2 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.d.ts +20 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +86 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.d.ts +20 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +98 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.d.ts +21 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +17 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.d.ts +5 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +10 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.d.ts +9 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +46 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.d.ts +8 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.js +26 -0
- package/lib/view/spendManagement/commonHistoryView/commonHistory.d.ts +1 -0
- package/lib/view/spendManagement/commonHistoryView/commonHistoryPayload.d.ts +1 -0
- package/lib/view/spendManagement/commonHistoryView/commonHistoryPayload.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,86 @@
|
|
|
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;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Amount } from '../../../../commonStateTypes/amount';
|
|
2
|
+
import { FetchStateAndError } from '../../../../commonStateTypes/common';
|
|
3
|
+
import { SelectorView } from '../../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
4
|
+
import { UpcomingPaymentEvent } from '../../../../entity/upcomingPaymentEvent/upcomingPaymentEventState';
|
|
5
|
+
import { RootState } from '../../../../reducer';
|
|
6
|
+
import { CashManagementBannerData } from './cashManagementOverviewState';
|
|
7
|
+
export interface CashManagementOverviewBannerSelectorView extends SelectorView {
|
|
8
|
+
data?: CashManagementBannerData;
|
|
9
|
+
}
|
|
10
|
+
export interface CashManagementOverviewSelectorView extends SelectorView {
|
|
11
|
+
bannerFetchState: FetchStateAndError;
|
|
12
|
+
cashBalance: Amount;
|
|
13
|
+
horizonDays: number;
|
|
14
|
+
outflowEvents: UpcomingPaymentEvent[];
|
|
15
|
+
outflowEventsFetchState: FetchStateAndError;
|
|
16
|
+
totalCash: Amount;
|
|
17
|
+
treasuryBalance: Amount;
|
|
18
|
+
}
|
|
19
|
+
export declare const getCashManagementOverviewBanner: (state: RootState) => CashManagementOverviewBannerSelectorView;
|
|
20
|
+
export declare const getCashManagementOverview: (state: RootState) => CashManagementOverviewSelectorView;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCashManagementOverview = exports.getCashManagementOverviewBanner = void 0;
|
|
4
|
+
const amount_1 = require("../../../../commonStateTypes/amount");
|
|
5
|
+
const reduceFetchState_1 = require("../../../../commonStateTypes/reduceFetchState");
|
|
6
|
+
const upcomingPaymentEventSelector_1 = require("../../../../entity/upcomingPaymentEvent/upcomingPaymentEventSelector");
|
|
7
|
+
const getCashManagementOverviewBanner = (state) => {
|
|
8
|
+
const { banner } = state.cashManagementOverviewState;
|
|
9
|
+
return {
|
|
10
|
+
fetchState: banner.fetchState,
|
|
11
|
+
error: banner.error,
|
|
12
|
+
data: banner.data,
|
|
13
|
+
version: 0,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
exports.getCashManagementOverviewBanner = getCashManagementOverviewBanner;
|
|
17
|
+
const getCashManagementOverview = (state) => {
|
|
18
|
+
const { cashManagementOverviewState, depositAccountListState, depositAccountState, paymentAccountListState, paymentAccountState, treasuryDetailState, } = state;
|
|
19
|
+
const outflowEventsFetchState = {
|
|
20
|
+
fetchState: cashManagementOverviewState.upcomingPaymentEvents.fetchState,
|
|
21
|
+
error: cashManagementOverviewState.upcomingPaymentEvents.error,
|
|
22
|
+
};
|
|
23
|
+
const bannerFetchState = {
|
|
24
|
+
fetchState: cashManagementOverviewState.banner.fetchState,
|
|
25
|
+
error: cashManagementOverviewState.banner.error,
|
|
26
|
+
};
|
|
27
|
+
const aggregate = (0, reduceFetchState_1.reduceAllFetchState)([
|
|
28
|
+
{
|
|
29
|
+
fetchState: paymentAccountListState.fetchState,
|
|
30
|
+
error: paymentAccountListState.error,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
fetchState: depositAccountListState.fetchState,
|
|
34
|
+
error: depositAccountListState.error,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
fetchState: treasuryDetailState.fetchState,
|
|
38
|
+
error: treasuryDetailState.error,
|
|
39
|
+
},
|
|
40
|
+
outflowEventsFetchState,
|
|
41
|
+
bannerFetchState,
|
|
42
|
+
]);
|
|
43
|
+
const treasuryBalance = treasuryDetailState.accountSummary?.totalBalance ?? (0, amount_1.zeroAmount)();
|
|
44
|
+
const cashBalance = sumCashBalances(paymentAccountListState.paymentAccountIds, paymentAccountState, depositAccountListState.accountIds, depositAccountState);
|
|
45
|
+
const totalCash = addAmounts(treasuryBalance, cashBalance);
|
|
46
|
+
return {
|
|
47
|
+
bannerFetchState,
|
|
48
|
+
cashBalance,
|
|
49
|
+
horizonDays: cashManagementOverviewState.upcomingPaymentEvents.horizonDays,
|
|
50
|
+
outflowEvents: (0, upcomingPaymentEventSelector_1.getUpcomingPaymentEventsByIds)(state.upcomingPaymentEventState, cashManagementOverviewState.upcomingPaymentEvents.eventIds),
|
|
51
|
+
outflowEventsFetchState,
|
|
52
|
+
totalCash,
|
|
53
|
+
treasuryBalance,
|
|
54
|
+
fetchState: aggregate.fetchState,
|
|
55
|
+
error: aggregate.error,
|
|
56
|
+
version: 0,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
exports.getCashManagementOverview = getCashManagementOverview;
|
|
60
|
+
const isZeroAmount = (a) => a.amount === 0 && a.currencyCode === 'USD' && a.currencySymbol === '$';
|
|
61
|
+
/**
|
|
62
|
+
* Adds two Amounts. Currencies must match (the seeded zeroAmount() counts as
|
|
63
|
+
* "no currency yet" and adopts `b`'s currency). Mismatches return `a`
|
|
64
|
+
* unchanged and warn — mixing currencies in a total is a bug, not silent
|
|
65
|
+
* conversion.
|
|
66
|
+
*/
|
|
67
|
+
const addAmounts = (a, b) => {
|
|
68
|
+
if (isZeroAmount(a)) {
|
|
69
|
+
return { ...b };
|
|
70
|
+
}
|
|
71
|
+
if (a.currencyCode !== b.currencyCode ||
|
|
72
|
+
a.currencySymbol !== b.currencySymbol) {
|
|
73
|
+
console.warn(`cashManagementOverview: skipping balance with mismatched currency. Expected ${a.currencyCode} (${a.currencySymbol}), got ${b.currencyCode} (${b.currencySymbol}).`);
|
|
74
|
+
return a;
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
amount: a.amount + b.amount,
|
|
78
|
+
currencyCode: a.currencyCode,
|
|
79
|
+
currencySymbol: a.currencySymbol,
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
const sumCashBalances = (paymentAccountIds, paymentAccountState, depositAccountIds, depositAccountState) => {
|
|
83
|
+
let total = (0, amount_1.zeroAmount)();
|
|
84
|
+
paymentAccountIds.forEach((id) => {
|
|
85
|
+
const balance = paymentAccountState.paymentAccountByID[id]?.balances
|
|
86
|
+
?.available;
|
|
87
|
+
if (balance != null) {
|
|
88
|
+
total = addAmounts(total, balance);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
depositAccountIds.forEach((id) => {
|
|
92
|
+
const balance = depositAccountState.depositAccountByID[id]?.accountBalance?.available;
|
|
93
|
+
if (balance != null) {
|
|
94
|
+
total = addAmounts(total, balance);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return total;
|
|
98
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { FetchStateAndError, FetchedState, ID } from '../../../../commonStateTypes/common';
|
|
2
|
+
import { BillStageCodeType } from '../../../../entity/billPay/billTransaction/billTransactionState';
|
|
3
|
+
export interface CashManagementBannerData {
|
|
4
|
+
placeholder?: never;
|
|
5
|
+
}
|
|
6
|
+
export interface CashManagementBannerState extends FetchStateAndError {
|
|
7
|
+
data?: CashManagementBannerData;
|
|
8
|
+
}
|
|
9
|
+
export interface UpcomingPaymentEventsListState extends FetchStateAndError {
|
|
10
|
+
billStages: BillStageCodeType[];
|
|
11
|
+
eventIds: ID[];
|
|
12
|
+
horizonDays: number;
|
|
13
|
+
reimbursementStages: BillStageCodeType[];
|
|
14
|
+
tenantNamespace?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface CashManagementOverviewState extends FetchedState {
|
|
17
|
+
banner: CashManagementBannerState;
|
|
18
|
+
upcomingPaymentEvents: UpcomingPaymentEventsListState;
|
|
19
|
+
}
|
|
20
|
+
export declare const initialCashManagementBannerState: CashManagementBannerState;
|
|
21
|
+
export declare const initialUpcomingPaymentEventsListState: UpcomingPaymentEventsListState;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initialUpcomingPaymentEventsListState = exports.initialCashManagementBannerState = void 0;
|
|
4
|
+
exports.initialCashManagementBannerState = {
|
|
5
|
+
fetchState: 'Not-Started',
|
|
6
|
+
error: undefined,
|
|
7
|
+
data: undefined,
|
|
8
|
+
};
|
|
9
|
+
exports.initialUpcomingPaymentEventsListState = {
|
|
10
|
+
fetchState: 'Not-Started',
|
|
11
|
+
error: undefined,
|
|
12
|
+
billStages: [],
|
|
13
|
+
eventIds: [],
|
|
14
|
+
horizonDays: 0,
|
|
15
|
+
reimbursementStages: [],
|
|
16
|
+
tenantNamespace: undefined,
|
|
17
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ActionsObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { fetchCashManagementBanner, updateCashManagementBanner, updateCashManagementBannerFetchStatus } from '../cashManagementOverviewReducer';
|
|
4
|
+
export type ActionType = ReturnType<typeof fetchCashManagementBanner> | ReturnType<typeof updateCashManagementBanner> | ReturnType<typeof updateCashManagementBannerFetchStatus>;
|
|
5
|
+
export declare const fetchCashManagementBannerEpic: (actions$: ActionsObservable<ActionType>) => Observable<ActionType>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchCashManagementBannerEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const cashManagementOverviewReducer_1 = require("../cashManagementOverviewReducer");
|
|
7
|
+
// TODO: replace EMPTY with an actual API call once the banner endpoint is finalized.
|
|
8
|
+
// Figma: https://www.figma.com/design/FUg2pv7edRAidx9X56VnZT/Cash-Management?node-id=2265-63443
|
|
9
|
+
const fetchCashManagementBannerEpic = (actions$) => actions$.pipe((0, operators_1.filter)(cashManagementOverviewReducer_1.fetchCashManagementBanner.match), (0, operators_1.mergeMap)(() => rxjs_1.EMPTY));
|
|
10
|
+
exports.fetchCashManagementBannerEpic = fetchCashManagementBannerEpic;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../../../../reducer';
|
|
4
|
+
import { fetchAutoTransferRules } from '../../../autotransferRules/autoTransferRulesReducer';
|
|
5
|
+
import { fetchTreasuryOverviewDetail } from '../../../treasury/treasuryList/treasuryDetailReducer';
|
|
6
|
+
import { fetchZeniAccountList } from '../../../zeniAccounts/zeniAccountList/zeniAccountListReducer';
|
|
7
|
+
import { fetchCashManagementBanner, fetchCashManagementOverviewPage, fetchUpcomingPaymentEvents } from '../cashManagementOverviewReducer';
|
|
8
|
+
export type ActionType = ReturnType<typeof fetchCashManagementOverviewPage> | ReturnType<typeof fetchTreasuryOverviewDetail> | ReturnType<typeof fetchZeniAccountList> | ReturnType<typeof fetchUpcomingPaymentEvents> | ReturnType<typeof fetchCashManagementBanner> | ReturnType<typeof fetchAutoTransferRules>;
|
|
9
|
+
export declare const fetchCashManagementOverviewPageEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => Observable<ActionType>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchCashManagementOverviewPageEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const autoTransferRulesReducer_1 = require("../../../autotransferRules/autoTransferRulesReducer");
|
|
7
|
+
const treasuryDetailReducer_1 = require("../../../treasury/treasuryList/treasuryDetailReducer");
|
|
8
|
+
const zeniAccountListReducer_1 = require("../../../zeniAccounts/zeniAccountList/zeniAccountListReducer");
|
|
9
|
+
const cashManagementOverviewReducer_1 = require("../cashManagementOverviewReducer");
|
|
10
|
+
const fetchCashManagementOverviewPageEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(cashManagementOverviewReducer_1.fetchCashManagementOverviewPage.match), (0, operators_1.mergeMap)((action) => {
|
|
11
|
+
const { cacheOverride } = action.payload;
|
|
12
|
+
const state = state$.value;
|
|
13
|
+
const pageActions = [];
|
|
14
|
+
if (cacheOverride === true) {
|
|
15
|
+
pageActions.push((0, treasuryDetailReducer_1.fetchTreasuryOverviewDetail)(true));
|
|
16
|
+
pageActions.push((0, zeniAccountListReducer_1.fetchZeniAccountList)(true));
|
|
17
|
+
pageActions.push((0, cashManagementOverviewReducer_1.fetchUpcomingPaymentEvents)());
|
|
18
|
+
pageActions.push((0, cashManagementOverviewReducer_1.fetchCashManagementBanner)());
|
|
19
|
+
pageActions.push((0, autoTransferRulesReducer_1.fetchAutoTransferRules)(true));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const treasuryDetailState = state.treasuryDetailState;
|
|
23
|
+
if (treasuryDetailState.hasValidState() === false &&
|
|
24
|
+
treasuryDetailState.fetchState !== 'In-Progress') {
|
|
25
|
+
pageActions.push((0, treasuryDetailReducer_1.fetchTreasuryOverviewDetail)(false));
|
|
26
|
+
}
|
|
27
|
+
pageActions.push((0, zeniAccountListReducer_1.fetchZeniAccountList)(false));
|
|
28
|
+
const upcomingEvents = state.cashManagementOverviewState.upcomingPaymentEvents;
|
|
29
|
+
if (upcomingEvents.fetchState !== 'Completed' &&
|
|
30
|
+
upcomingEvents.fetchState !== 'In-Progress') {
|
|
31
|
+
pageActions.push((0, cashManagementOverviewReducer_1.fetchUpcomingPaymentEvents)());
|
|
32
|
+
}
|
|
33
|
+
const banner = state.cashManagementOverviewState.banner;
|
|
34
|
+
if (banner.fetchState !== 'Completed' &&
|
|
35
|
+
banner.fetchState !== 'In-Progress') {
|
|
36
|
+
pageActions.push((0, cashManagementOverviewReducer_1.fetchCashManagementBanner)());
|
|
37
|
+
}
|
|
38
|
+
const autoTransferRules = state.autotransferRulesState;
|
|
39
|
+
if (autoTransferRules.fetchState !== 'Completed' &&
|
|
40
|
+
autoTransferRules.fetchState !== 'In-Progress') {
|
|
41
|
+
pageActions.push((0, autoTransferRulesReducer_1.fetchAutoTransferRules)(false));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return (0, rxjs_1.concat)((0, rxjs_1.from)(pageActions));
|
|
45
|
+
}));
|
|
46
|
+
exports.fetchCashManagementOverviewPageEpic = fetchCashManagementOverviewPageEpic;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../../../../reducer';
|
|
4
|
+
import { ZeniAPI } from '../../../../../zeniAPI';
|
|
5
|
+
import { updateUpcomingPaymentEvents } from '../../../../../entity/upcomingPaymentEvent/upcomingPaymentEventReducer';
|
|
6
|
+
import { fetchUpcomingPaymentEvents, updateUpcomingPaymentEventsList, updateUpcomingPaymentEventsListFetchStatus } from '../cashManagementOverviewReducer';
|
|
7
|
+
export type ActionType = ReturnType<typeof fetchUpcomingPaymentEvents> | ReturnType<typeof updateUpcomingPaymentEvents> | ReturnType<typeof updateUpcomingPaymentEventsList> | ReturnType<typeof updateUpcomingPaymentEventsListFetchStatus>;
|
|
8
|
+
export declare const fetchUpcomingPaymentEventsEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchUpcomingPaymentEventsEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../../../../responsePayload");
|
|
7
|
+
const upcomingPaymentEventReducer_1 = require("../../../../../entity/upcomingPaymentEvent/upcomingPaymentEventReducer");
|
|
8
|
+
const cashManagementOverviewReducer_1 = require("../cashManagementOverviewReducer");
|
|
9
|
+
const fetchUpcomingPaymentEventsEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(cashManagementOverviewReducer_1.fetchUpcomingPaymentEvents.match), (0, operators_1.switchMap)(() => zeniAPI
|
|
10
|
+
.getJSON(
|
|
11
|
+
// TODO: drop /rajat/ once the prod endpoint lands. `${zeniAPI.apiEndPoints.spendManagementMicroServiceBaseUrl}/1.0/upcoming-payment-events`
|
|
12
|
+
`https://dev.api.zeni.ai/version/spend-management/rajat/1.0/upcoming-payment-events`)
|
|
13
|
+
.pipe((0, operators_1.mergeMap)((response) => {
|
|
14
|
+
if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
|
|
15
|
+
return (0, rxjs_1.of)((0, upcomingPaymentEventReducer_1.updateUpcomingPaymentEvents)(response.data.events), (0, cashManagementOverviewReducer_1.updateUpcomingPaymentEventsList)({ data: response.data }));
|
|
16
|
+
}
|
|
17
|
+
return (0, rxjs_1.of)((0, cashManagementOverviewReducer_1.updateUpcomingPaymentEventsListFetchStatus)({
|
|
18
|
+
fetchState: 'Error',
|
|
19
|
+
error: response.status,
|
|
20
|
+
}));
|
|
21
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, cashManagementOverviewReducer_1.updateUpcomingPaymentEventsListFetchStatus)({
|
|
22
|
+
fetchState: 'Error',
|
|
23
|
+
error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch upcoming payment events REST API call errored out' +
|
|
24
|
+
JSON.stringify(error)),
|
|
25
|
+
}))))));
|
|
26
|
+
exports.fetchUpcomingPaymentEventsEpic = fetchUpcomingPaymentEventsEpic;
|
|
@@ -20,6 +20,7 @@ interface HistoricEventMetaDataPayload {
|
|
|
20
20
|
activity_title: string;
|
|
21
21
|
actor_id: string;
|
|
22
22
|
actor_name: string;
|
|
23
|
+
payment_trace_id?: string | null;
|
|
23
24
|
}
|
|
24
25
|
export declare const toHistoricEvent: (payload: HistoricEventPayload) => HistoricEvent;
|
|
25
26
|
export type FetchEntityHistoryResponse = ZeniAPIResponse<HistoryPayload>;
|
|
@@ -8,6 +8,7 @@ const toHistoricEvent = (payload) => ({
|
|
|
8
8
|
eventSubText: payload.event_sub_text ?? [],
|
|
9
9
|
timestamp: payload.timestamp != null ? (0, zeniDayJS_1.dateLocal)(payload.timestamp) : undefined,
|
|
10
10
|
updates: payload.updates.map((eventUpdatePayload) => toHistoricEventUpdate(eventUpdatePayload)),
|
|
11
|
+
paymentTraceId: payload.metadata?.payment_trace_id ?? null,
|
|
11
12
|
});
|
|
12
13
|
exports.toHistoricEvent = toHistoricEvent;
|
|
13
14
|
const toHistoricEventUpdate = (payload) => ({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.71-betaAK1",
|
|
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",
|