@zeniai/client-epic-state 5.0.65 → 5.0.66-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.
Files changed (84) hide show
  1. package/lib/commonStateTypes/amount.d.ts +1 -0
  2. package/lib/commonStateTypes/amount.js +3 -1
  3. package/lib/commonStateTypes/cacheOverrideFetchReducer.d.ts +17 -0
  4. package/lib/commonStateTypes/cacheOverrideFetchReducer.js +20 -0
  5. package/lib/commonStateTypes/pusherActions.d.ts +11 -0
  6. package/lib/commonStateTypes/pusherActions.js +6 -0
  7. package/lib/entity/chargeCard/chargeCardReducer.d.ts +19 -2
  8. package/lib/entity/chargeCard/chargeCardReducer.js +35 -2
  9. package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.d.ts +14 -1
  10. package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.js +36 -2
  11. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.d.ts +11 -0
  12. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.js +23 -0
  13. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.d.ts +6 -0
  14. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.js +31 -0
  15. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.d.ts +4 -0
  16. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.js +16 -0
  17. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventState.d.ts +13 -0
  18. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventState.js +2 -0
  19. package/lib/epic.d.ts +4 -1
  20. package/lib/epic.js +4 -1
  21. package/lib/esm/commonStateTypes/amount.js +1 -0
  22. package/lib/esm/commonStateTypes/cacheOverrideFetchReducer.js +16 -0
  23. package/lib/esm/commonStateTypes/pusherActions.js +3 -0
  24. package/lib/esm/entity/chargeCard/chargeCardReducer.js +34 -1
  25. package/lib/esm/entity/chargeCardTransaction/chargeCardTransactionReducer.js +35 -1
  26. package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.js +19 -0
  27. package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.js +27 -0
  28. package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.js +11 -0
  29. package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventState.js +1 -0
  30. package/lib/esm/epic.js +4 -1
  31. package/lib/esm/index.js +7 -2
  32. package/lib/esm/reducer.js +6 -0
  33. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +1 -0
  34. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +88 -0
  35. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +93 -0
  36. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +14 -0
  37. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +6 -0
  38. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +35 -0
  39. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.js +22 -0
  40. package/lib/esm/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +3 -2
  41. package/lib/esm/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +3 -2
  42. package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +55 -18
  43. package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +16 -2
  44. package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +5 -4
  45. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +28 -9
  46. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +9 -6
  47. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +3 -2
  48. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
  49. package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +7 -3
  50. package/lib/index.d.ts +9 -3
  51. package/lib/index.js +27 -11
  52. package/lib/reducer.d.ts +6 -0
  53. package/lib/reducer.js +6 -0
  54. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  55. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.d.ts +10 -0
  56. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +2 -0
  57. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.d.ts +20 -0
  58. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +92 -0
  59. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.d.ts +20 -0
  60. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +98 -0
  61. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.d.ts +21 -0
  62. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +17 -0
  63. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.d.ts +5 -0
  64. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +10 -0
  65. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.d.ts +8 -0
  66. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +39 -0
  67. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.d.ts +8 -0
  68. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.js +26 -0
  69. package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.d.ts +3 -1
  70. package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +3 -2
  71. package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.d.ts +3 -1
  72. package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +3 -2
  73. package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +55 -18
  74. package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +16 -2
  75. package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +5 -4
  76. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.d.ts +18 -3
  77. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +29 -10
  78. package/lib/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +9 -6
  79. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.d.ts +3 -1
  80. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +3 -2
  81. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
  82. package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.d.ts +3 -1
  83. package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +7 -3
  84. package/package.json +1 -1
@@ -0,0 +1,10 @@
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>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,20 @@
1
+ import { FetchState } from '../../../../commonStateTypes/common';
2
+ import { FetchUpcomingPaymentEventsPayload } from './cashManagementOverviewPayload';
3
+ import { ZeniAPIStatus } from '../../../../responsePayload';
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;
@@ -0,0 +1,92 @@
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
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ _draft,
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ _action) {
26
+ // do nothing - the corresponding epic listens to this action and fans out
27
+ },
28
+ prepare(cacheOverride) {
29
+ return { payload: { cacheOverride } };
30
+ },
31
+ },
32
+ fetchUpcomingPaymentEvents(draft) {
33
+ draft.upcomingPaymentEvents = {
34
+ ...draft.upcomingPaymentEvents,
35
+ fetchState: 'In-Progress',
36
+ error: undefined,
37
+ };
38
+ },
39
+ updateUpcomingPaymentEventsList(draft, action) {
40
+ const { data } = action.payload;
41
+ const eventIds = [];
42
+ data.events.forEach((payload) => {
43
+ if (payload.id != null) {
44
+ eventIds.push(payload.id);
45
+ }
46
+ });
47
+ draft.upcomingPaymentEvents = {
48
+ fetchState: 'Completed',
49
+ error: undefined,
50
+ billStages: (data.bill_stages ?? []),
51
+ eventIds,
52
+ horizonDays: data.horizon_days,
53
+ reimbursementStages: (data.reimbursement_stages ??
54
+ []),
55
+ tenantNamespace: data.tenant_namespace,
56
+ };
57
+ },
58
+ updateUpcomingPaymentEventsListFetchStatus(draft, action) {
59
+ draft.upcomingPaymentEvents = {
60
+ ...draft.upcomingPaymentEvents,
61
+ fetchState: action.payload.fetchState,
62
+ error: action.payload.error,
63
+ };
64
+ },
65
+ fetchCashManagementBanner(draft) {
66
+ draft.banner = {
67
+ ...cashManagementOverviewState_1.initialCashManagementBannerState,
68
+ fetchState: 'In-Progress',
69
+ error: undefined,
70
+ };
71
+ },
72
+ updateCashManagementBanner(draft, action) {
73
+ draft.banner = {
74
+ fetchState: 'Completed',
75
+ error: undefined,
76
+ data: action.payload.data,
77
+ };
78
+ },
79
+ updateCashManagementBannerFetchStatus(draft, action) {
80
+ draft.banner = {
81
+ ...draft.banner,
82
+ fetchState: action.payload.fetchState,
83
+ error: action.payload.error,
84
+ };
85
+ },
86
+ clearCashManagementOverview(draft) {
87
+ Object.assign(draft, exports.initialState);
88
+ },
89
+ },
90
+ });
91
+ _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;
92
+ 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,8 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../../../../reducer';
4
+ import { fetchTreasuryOverviewDetail } from '../../../treasury/treasuryList/treasuryDetailReducer';
5
+ import { fetchZeniAccountList } from '../../../zeniAccounts/zeniAccountList/zeniAccountListReducer';
6
+ import { fetchCashManagementBanner, fetchCashManagementOverviewPage, fetchUpcomingPaymentEvents } from '../cashManagementOverviewReducer';
7
+ export type ActionType = ReturnType<typeof fetchCashManagementOverviewPage> | ReturnType<typeof fetchTreasuryOverviewDetail> | ReturnType<typeof fetchZeniAccountList> | ReturnType<typeof fetchUpcomingPaymentEvents> | ReturnType<typeof fetchCashManagementBanner>;
8
+ export declare const fetchCashManagementOverviewPageEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => Observable<ActionType>;
@@ -0,0 +1,39 @@
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 treasuryDetailReducer_1 = require("../../../treasury/treasuryList/treasuryDetailReducer");
7
+ const zeniAccountListReducer_1 = require("../../../zeniAccounts/zeniAccountList/zeniAccountListReducer");
8
+ const cashManagementOverviewReducer_1 = require("../cashManagementOverviewReducer");
9
+ const fetchCashManagementOverviewPageEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(cashManagementOverviewReducer_1.fetchCashManagementOverviewPage.match), (0, operators_1.mergeMap)((action) => {
10
+ const { cacheOverride } = action.payload;
11
+ const state = state$.value;
12
+ const pageActions = [];
13
+ if (cacheOverride === true) {
14
+ pageActions.push((0, treasuryDetailReducer_1.fetchTreasuryOverviewDetail)(true));
15
+ pageActions.push((0, zeniAccountListReducer_1.fetchZeniAccountList)(true));
16
+ pageActions.push((0, cashManagementOverviewReducer_1.fetchUpcomingPaymentEvents)());
17
+ pageActions.push((0, cashManagementOverviewReducer_1.fetchCashManagementBanner)());
18
+ }
19
+ else {
20
+ const treasuryDetailState = state.treasuryDetailState;
21
+ if (treasuryDetailState.hasValidState() === false &&
22
+ treasuryDetailState.fetchState !== 'In-Progress') {
23
+ pageActions.push((0, treasuryDetailReducer_1.fetchTreasuryOverviewDetail)(false));
24
+ }
25
+ pageActions.push((0, zeniAccountListReducer_1.fetchZeniAccountList)(false));
26
+ const upcomingEvents = state.cashManagementOverviewState.upcomingPaymentEvents;
27
+ if (upcomingEvents.fetchState !== 'Completed' &&
28
+ upcomingEvents.fetchState !== 'In-Progress') {
29
+ pageActions.push((0, cashManagementOverviewReducer_1.fetchUpcomingPaymentEvents)());
30
+ }
31
+ const banner = state.cashManagementOverviewState.banner;
32
+ if (banner.fetchState !== 'Completed' &&
33
+ banner.fetchState !== 'In-Progress') {
34
+ pageActions.push((0, cashManagementOverviewReducer_1.fetchCashManagementBanner)());
35
+ }
36
+ }
37
+ return (0, rxjs_1.concat)((0, rxjs_1.from)(pageActions));
38
+ }));
39
+ 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.
12
+ `${zeniAPI.apiEndPoints.spendManagementMicroServiceBaseUrl}/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;
@@ -2,7 +2,9 @@ import { ZeniAPIStatus } from '../../../../responsePayload';
2
2
  import { ChargeCardCashbackPayload } from './cashbackDetailPayload';
3
3
  import { CashbackDetailState, CashbackDetailUIState } from './cashbackDetailState';
4
4
  export declare const initialState: CashbackDetailState;
5
- export declare const fetchCashbackDetail: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cashbackDetail/fetchCashbackDetail">, updateCashbackDetail: import("@reduxjs/toolkit").ActionCreatorWithPayload<ChargeCardCashbackPayload, "cashbackDetail/updateCashbackDetail">, updateCashbackDetailFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "cashbackDetail/updateCashbackDetailFailure">, updateCashbackDetailUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
5
+ export declare const fetchCashbackDetail: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride?: boolean | undefined], {
6
+ cacheOverride: boolean;
7
+ }, "cashbackDetail/fetchCashbackDetail", never, never>, updateCashbackDetail: import("@reduxjs/toolkit").ActionCreatorWithPayload<ChargeCardCashbackPayload, "cashbackDetail/updateCashbackDetail">, updateCashbackDetailFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "cashbackDetail/updateCashbackDetailFailure">, updateCashbackDetailUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
6
8
  uiState: Partial<CashbackDetailUIState>;
7
9
  }, "cashbackDetail/updateCashbackDetailUIState">, clearCashbackDetail: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cashbackDetail/clearCashbackDetail">;
8
10
  declare const _default: import("redux").Reducer<CashbackDetailState>;
@@ -5,6 +5,7 @@ exports.clearCashbackDetail = exports.updateCashbackDetailUIState = exports.upda
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const viewAndReportPayloadv2_1 = require("../../../../commonPayloadTypes/v2/viewAndReportPayloadv2");
7
7
  const amount_1 = require("../../../../commonStateTypes/amount");
8
+ const cacheOverrideFetchReducer_1 = require("../../../../commonStateTypes/cacheOverrideFetchReducer");
8
9
  const cashbackDetailState_1 = require("./cashbackDetailState");
9
10
  exports.initialState = {
10
11
  fetchState: 'Not-Started',
@@ -31,10 +32,10 @@ const cashbackDetail = (0, toolkit_1.createSlice)({
31
32
  name: 'cashbackDetail',
32
33
  initialState: exports.initialState,
33
34
  reducers: {
34
- fetchCashbackDetail(draft) {
35
+ fetchCashbackDetail: (0, cacheOverrideFetchReducer_1.createCacheOverrideFetchReducer)((draft) => {
35
36
  draft.fetchState = 'In-Progress';
36
37
  draft.error = undefined;
37
- },
38
+ }),
38
39
  updateCashbackDetail(draft, action) {
39
40
  draft.cashbackByPeriod = toCashbackByPeriod(action.payload);
40
41
  draft.cashbackSummary = toCashbackSummary(action.payload);
@@ -2,6 +2,8 @@ import { ZeniAPIStatus } from '../../../../responsePayload';
2
2
  import { ChargeCardConfigPayload } from './chargeCardConfigPayload';
3
3
  import { ChargeCardConfigState } from './chargeCardConfigState';
4
4
  export declare const initialState: ChargeCardConfigState;
5
- export declare const fetchChargeCardConfig: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"chargeCardConfig/fetchChargeCardConfig">, updateChargeCardConfig: import("@reduxjs/toolkit").ActionCreatorWithPayload<ChargeCardConfigPayload, "chargeCardConfig/updateChargeCardConfig">, updateChargeCardConfigFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "chargeCardConfig/updateChargeCardConfigFailure">, clearChargeCardConfig: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"chargeCardConfig/clearChargeCardConfig">;
5
+ export declare const fetchChargeCardConfig: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride?: boolean | undefined], {
6
+ cacheOverride: boolean;
7
+ }, "chargeCardConfig/fetchChargeCardConfig", never, never>, updateChargeCardConfig: import("@reduxjs/toolkit").ActionCreatorWithPayload<ChargeCardConfigPayload, "chargeCardConfig/updateChargeCardConfig">, updateChargeCardConfigFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "chargeCardConfig/updateChargeCardConfigFailure">, clearChargeCardConfig: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"chargeCardConfig/clearChargeCardConfig">;
6
8
  declare const _default: import("redux").Reducer<ChargeCardConfigState>;
7
9
  export default _default;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.clearChargeCardConfig = exports.updateChargeCardConfigFailure = exports.updateChargeCardConfig = exports.fetchChargeCardConfig = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const amount_1 = require("../../../../commonStateTypes/amount");
7
+ const cacheOverrideFetchReducer_1 = require("../../../../commonStateTypes/cacheOverrideFetchReducer");
7
8
  const chargeCard_1 = require("../../../../entity/chargeCard/chargeCard");
8
9
  const chargeCardConfigPayload_1 = require("./chargeCardConfigPayload");
9
10
  exports.initialState = {
@@ -34,10 +35,10 @@ const chargeCardConfig = (0, toolkit_1.createSlice)({
34
35
  name: 'chargeCardConfig',
35
36
  initialState: exports.initialState,
36
37
  reducers: {
37
- fetchChargeCardConfig(draft) {
38
+ fetchChargeCardConfig: (0, cacheOverrideFetchReducer_1.createCacheOverrideFetchReducer)((draft) => {
38
39
  draft.fetchState = 'In-Progress';
39
40
  draft.error = undefined;
40
- },
41
+ }),
41
42
  updateChargeCardConfig(draft, action) {
42
43
  const { payload } = action;
43
44
  draft.creditLimitFrequency =
@@ -6,6 +6,7 @@ const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const sortOrderPayload_1 = require("../../../../commonPayloadTypes/sortOrderPayload");
7
7
  const attachmentPayload_1 = require("../../../../entity/transaction/payloadTypes/attachmentPayload");
8
8
  const chargeCardDetail_1 = require("./chargeCardDetail");
9
+ const pusherActions_1 = require("../../../../commonStateTypes/pusherActions");
9
10
  exports.initialState = {
10
11
  detailById: {},
11
12
  recurringExpensesByChargeCardId: {},
@@ -68,19 +69,30 @@ const chargeCardDetail = (0, toolkit_1.createSlice)({
68
69
  },
69
70
  fetchChargeCardTransactionList: {
70
71
  reducer(draft, action) {
71
- const { chargeCardId, pageToken, pageTokenType } = action.payload;
72
+ const { chargeCardId, pageToken, pageTokenType, cacheOverride } = action.payload;
72
73
  const existingCardDetail = draft.detailById[chargeCardId] ?? chargeCardDetail_1.emptyChargeCardDetail;
74
+ const existingUi = existingCardDetail.transactionList.uiState;
75
+ // cacheOverride=true (Pusher): preserve fetchState, error, and scroll
76
+ // to avoid skeleton flash. Normal fetches reset as before.
73
77
  draft.detailById[chargeCardId] = {
74
78
  ...existingCardDetail,
75
79
  transactionList: {
76
80
  ...existingCardDetail.transactionList,
77
- fetchState: 'In-Progress',
78
- error: undefined,
81
+ fetchState: cacheOverride
82
+ ? existingCardDetail.transactionList.fetchState
83
+ : 'In-Progress',
84
+ error: cacheOverride
85
+ ? existingCardDetail.transactionList.error
86
+ : undefined,
79
87
  uiState: {
80
- ...existingCardDetail.transactionList.uiState,
81
- scrollYOffset: existingCardDetail.transactionList.uiState.pageToken === null
82
- ? 0
83
- : existingCardDetail.transactionList.uiState.scrollYOffset,
88
+ ...existingUi,
89
+ // Preserve scroll on silent refresh so users aren't snapped
90
+ // away from their reading position.
91
+ scrollYOffset: cacheOverride
92
+ ? existingUi.scrollYOffset
93
+ : existingUi.pageToken === null
94
+ ? 0
95
+ : existingUi.scrollYOffset,
84
96
  pageToken: pageToken,
85
97
  pageTokenType: pageTokenType,
86
98
  },
@@ -97,18 +109,24 @@ const chargeCardDetail = (0, toolkit_1.createSlice)({
97
109
  const { chargeCardId, data, cacheOverride } = action.payload;
98
110
  const existingCardDetail = draft.detailById[chargeCardId] ?? chargeCardDetail_1.emptyChargeCardDetail;
99
111
  const newTransactionIds = data.transactions.map((tran) => tran.transaction_id);
112
+ const existingIds = existingCardDetail.transactionList.transactionIds;
113
+ // cacheOverride (Pusher): refresh page 1 but keep page 2+ IDs.
114
+ // Normal pagination: append new page, deduped.
115
+ const newIdSet = new Set(newTransactionIds);
116
+ const mergedTransactionIds = cacheOverride
117
+ ? [
118
+ ...newTransactionIds,
119
+ ...existingIds.filter((id) => !newIdSet.has(id)),
120
+ ]
121
+ : [
122
+ ...existingIds,
123
+ ...newTransactionIds.filter((id) => !existingIds.includes(id)),
124
+ ];
100
125
  draft.detailById[chargeCardId] = {
101
126
  ...existingCardDetail,
102
127
  transactionList: {
103
128
  ...existingCardDetail.transactionList,
104
- transactionIds: [
105
- ...new Set([
106
- ...(cacheOverride
107
- ? []
108
- : existingCardDetail.transactionList.transactionIds),
109
- ...newTransactionIds,
110
- ]),
111
- ],
129
+ transactionIds: mergedTransactionIds,
112
130
  fetchState: 'Completed',
113
131
  error: undefined,
114
132
  uiState: {
@@ -120,9 +138,12 @@ const chargeCardDetail = (0, toolkit_1.createSlice)({
120
138
  limit: data.query.limit,
121
139
  pageToken: data.query.page_token,
122
140
  pageTokenType: data.query.page_token_type,
123
- scrollYOffset: existingCardDetail.transactionList.uiState.pageToken === null
124
- ? 0
125
- : existingCardDetail.transactionList.uiState.scrollYOffset,
141
+ // Preserve scroll on silent refresh; reset on user-triggered first page.
142
+ scrollYOffset: cacheOverride
143
+ ? existingCardDetail.transactionList.uiState.scrollYOffset
144
+ : existingCardDetail.transactionList.uiState.pageToken === null
145
+ ? 0
146
+ : existingCardDetail.transactionList.uiState.scrollYOffset,
126
147
  },
127
148
  },
128
149
  };
@@ -636,6 +657,22 @@ const chargeCardDetail = (0, toolkit_1.createSlice)({
636
657
  Object.assign(draft, exports.initialState);
637
658
  },
638
659
  },
660
+ extraReducers: (builder) => {
661
+ const prependTransaction = (draft, cardId, txId) => {
662
+ const detail = draft.detailById[cardId];
663
+ if (detail != null &&
664
+ !detail.transactionList.transactionIds.includes(txId)) {
665
+ detail.transactionList.transactionIds.unshift(txId);
666
+ }
667
+ };
668
+ builder
669
+ .addCase(pusherActions_1.addChargeCardTransactionFromPusher, (draft, action) => {
670
+ prependTransaction(draft, action.payload.cardId, action.payload.transaction.transaction_id);
671
+ })
672
+ .addCase(pusherActions_1.addDeclinedChargeCardTransactionFromPusher, (draft, action) => {
673
+ prependTransaction(draft, action.payload.cardId, action.payload.transaction.transaction_id);
674
+ });
675
+ },
639
676
  });
640
677
  _a = chargeCardDetail.actions, exports.fetchChargeCardDetailPage = _a.fetchChargeCardDetailPage, exports.fetchChargeCardDetail = _a.fetchChargeCardDetail, exports.updateChargeCardDetailFetchState = _a.updateChargeCardDetailFetchState, exports.fetchChargeCardTransactionList = _a.fetchChargeCardTransactionList, exports.updateChargeCardDetailUIState = _a.updateChargeCardDetailUIState, exports.updateChargeCardTransactionList = _a.updateChargeCardTransactionList, exports.updateChargeCardTransactionUploadReceiptsFetchStatus = _a.updateChargeCardTransactionUploadReceiptsFetchStatus, exports.fetchChargeCardTransactionAttachments = _a.fetchChargeCardTransactionAttachments, exports.updateChargeCardTransactionIsViewReceiptClicked = _a.updateChargeCardTransactionIsViewReceiptClicked, exports.updateChargeCardTransactionAttachmentsFailure = _a.updateChargeCardTransactionAttachmentsFailure, exports.updatePhysicalChargeCardAttemptSuccessOrFailure = _a.updatePhysicalChargeCardAttemptSuccessOrFailure, exports.updatePhysicalChargeCardAttempt = _a.updatePhysicalChargeCardAttempt, exports.updateDebitCardPinAttempt = _a.updateDebitCardPinAttempt, exports.updateDebitCardPinAttemptSuccessOrFailure = _a.updateDebitCardPinAttemptSuccessOrFailure, exports.updateChargeCardTransactionReceiptsShowTickFetchStatus = _a.updateChargeCardTransactionReceiptsShowTickFetchStatus, exports.updateChargeCardTransactionAttachmentsInCardDetail = _a.updateChargeCardTransactionAttachmentsInCardDetail, exports.updateChargeCardTransactionListFailure = _a.updateChargeCardTransactionListFailure, exports.updateChargeCardDetail = _a.updateChargeCardDetail, exports.startCVVActivationWait = _a.startCVVActivationWait, exports.completeCVVActivationWait = _a.completeCVVActivationWait, exports.startDebitCardSetPinWait = _a.startDebitCardSetPinWait, exports.completeDebitCardSetPinWait = _a.completeDebitCardSetPinWait, exports.updateChargeCardDetailUpdateStatus = _a.updateChargeCardDetailUpdateStatus, exports.updateChargeCardSpendLimit = _a.updateChargeCardSpendLimit, exports.updateChargeCardSpendLimitSuccessOrFailure = _a.updateChargeCardSpendLimitSuccessOrFailure, exports.updateChargeCardName = _a.updateChargeCardName, exports.updateChargeCardNameSuccessOrFailure = _a.updateChargeCardNameSuccessOrFailure, exports.lockChargeCard = _a.lockChargeCard, exports.lockChargeCardSuccessOrFailure = _a.lockChargeCardSuccessOrFailure, exports.unlockChargeCard = _a.unlockChargeCard, exports.unlockChargeCardSuccessOrFailure = _a.unlockChargeCardSuccessOrFailure, exports.closeChargeCard = _a.closeChargeCard, exports.closeChargeCardSuccessOrFailure = _a.closeChargeCardSuccessOrFailure, exports.fetchDepositAccountLimit = _a.fetchDepositAccountLimit, exports.updateDepositAccountLimitFetchStatus = _a.updateDepositAccountLimitFetchStatus, exports.fetchChargeCardTransactionStatistics = _a.fetchChargeCardTransactionStatistics, exports.updateChargeCardTransactionStatistics = _a.updateChargeCardTransactionStatistics, exports.updateChargeCardTransactionStatisticsFetchState = _a.updateChargeCardTransactionStatisticsFetchState, exports.fetchChargeCardsRecurringExpenses = _a.fetchChargeCardsRecurringExpenses, exports.updateChargeCardsRecurringExpenses = _a.updateChargeCardsRecurringExpenses, exports.updateChargeCardsRecurringExpensesFetchState = _a.updateChargeCardsRecurringExpensesFetchState, exports.sendOtpCardHolder = _a.sendOtpCardHolder, exports.resendOtpCardHolder = _a.resendOtpCardHolder, exports.sendOtpCardHolderSuccess = _a.sendOtpCardHolderSuccess, exports.sendOtpCardHolderFailure = _a.sendOtpCardHolderFailure, exports.verifyOtpCardHolder = _a.verifyOtpCardHolder, exports.verifyOtpCardHolderSuccess = _a.verifyOtpCardHolderSuccess, exports.verifyOtpCardHolderFailure = _a.verifyOtpCardHolderFailure, exports.clearChargeCardDetail = _a.clearChargeCardDetail;
641
678
  exports.default = chargeCardDetail.reducer;