@zeniai/client-epic-state 4.19.41-betaML3 → 4.19.41
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/epic.d.ts +1 -3
- package/lib/epic.js +1 -3
- package/lib/esm/epic.js +1 -3
- package/lib/esm/index.js +2 -2
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +1 -17
- package/lib/index.d.ts +2 -2
- package/lib/index.js +29 -30
- package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +1 -4
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +2 -18
- package/package.json +1 -1
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +0 -87
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +0 -28
- package/lib/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.d.ts +0 -8
- package/lib/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +0 -91
- package/lib/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.d.ts +0 -6
- package/lib/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +0 -32
|
@@ -155,9 +155,6 @@ export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").
|
|
|
155
155
|
pendingReviewLineIds: string[];
|
|
156
156
|
uncategorizedIncomeExpense: UncategorizedAccounts;
|
|
157
157
|
isUncategorizedExpenseCategoryEnabled: boolean | undefined;
|
|
158
|
-
}, "expenseAutomationTransactionsView/syncTransactionCategorizationFromDetailSave", never, never
|
|
159
|
-
period: TimePeriod;
|
|
160
|
-
isUncategorizedExpenseCategoryEnabled: boolean | undefined;
|
|
161
|
-
}, "expenseAutomationTransactionsView/backgroundRefetchReviewTab", never, never>;
|
|
158
|
+
}, "expenseAutomationTransactionsView/syncTransactionCategorizationFromDetailSave", never, never>;
|
|
162
159
|
declare const _default: import("redux").Reducer<TransactionsViewState>;
|
|
163
160
|
export default _default;
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
var _a;
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
7
|
+
exports.syncTransactionCategorizationFromDetailSave = exports.updateSelectedTransactionId = exports.setEntityRecommendationForLineIdsForCategorization = exports.clearExpenseAutomationTransactionsView = exports.clearExpenseAutomationTransactionsViewPerTabView = exports.updateSelectedCheckboxTransactionIds = exports.fetchTransactionCategorizationView = exports.resetOtherTabsFetchState = exports.fetchTransactionCategorizationSuccess = exports.updateTotalCountForTransactionCategorization = exports.setAllItemsToCategoryClassInLocalDataForCategorization = exports.updateSelectedCustomerForTransaction = exports.updateSelectedVendorForTransaction = exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = exports.markTransactionAsNotMiscategorized = exports.updateTransactionCategorizationSaveStatus = exports.updateCurrentSelectedTransactionCategorizationTab = exports.updateTransactionCategorization = exports.saveTransactionCategorization = exports.fetchTransactionCategorizationFailure = exports.saveTransactionCategorizationLocalData = exports.initializeTransactionCategorizationViewLocalData = exports.updateTransactionCategorizationUIState = exports.fetchTransactionCategorization = exports.initialState = exports.initialTransactionTabViewState = void 0;
|
|
8
8
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
9
9
|
const get_1 = __importDefault(require("lodash/get"));
|
|
10
10
|
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
@@ -769,23 +769,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
769
769
|
}
|
|
770
770
|
},
|
|
771
771
|
},
|
|
772
|
-
backgroundRefetchReviewTab: {
|
|
773
|
-
prepare(period, isUncategorizedExpenseCategoryEnabled) {
|
|
774
|
-
return {
|
|
775
|
-
payload: {
|
|
776
|
-
period,
|
|
777
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
778
|
-
},
|
|
779
|
-
};
|
|
780
|
-
},
|
|
781
|
-
reducer(draft) {
|
|
782
|
-
draft.transactionCategorizationView.review.refreshStatus = {
|
|
783
|
-
fetchState: 'In-Progress',
|
|
784
|
-
error: undefined,
|
|
785
|
-
};
|
|
786
|
-
},
|
|
787
|
-
},
|
|
788
772
|
},
|
|
789
773
|
});
|
|
790
|
-
_a = expenseAutomationTransactionsView.actions, exports.fetchTransactionCategorization = _a.fetchTransactionCategorization, exports.updateTransactionCategorizationUIState = _a.updateTransactionCategorizationUIState, exports.initializeTransactionCategorizationViewLocalData = _a.initializeTransactionCategorizationViewLocalData, exports.saveTransactionCategorizationLocalData = _a.saveTransactionCategorizationLocalData, exports.fetchTransactionCategorizationFailure = _a.fetchTransactionCategorizationFailure, exports.saveTransactionCategorization = _a.saveTransactionCategorization, exports.updateTransactionCategorization = _a.updateTransactionCategorization, exports.updateCurrentSelectedTransactionCategorizationTab = _a.updateCurrentSelectedTransactionCategorizationTab, exports.updateTransactionCategorizationSaveStatus = _a.updateTransactionCategorizationSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = _a.updateStatusForTransactionNotMiscategorizedUpdateForCategorization, exports.updateSelectedVendorForTransaction = _a.updateSelectedVendorForTransaction, exports.updateSelectedCustomerForTransaction = _a.updateSelectedCustomerForTransaction, exports.setAllItemsToCategoryClassInLocalDataForCategorization = _a.setAllItemsToCategoryClassInLocalDataForCategorization, exports.updateTotalCountForTransactionCategorization = _a.updateTotalCountForTransactionCategorization, exports.fetchTransactionCategorizationSuccess = _a.fetchTransactionCategorizationSuccess, exports.resetOtherTabsFetchState = _a.resetOtherTabsFetchState, exports.fetchTransactionCategorizationView = _a.fetchTransactionCategorizationView, exports.updateSelectedCheckboxTransactionIds = _a.updateSelectedCheckboxTransactionIds, exports.clearExpenseAutomationTransactionsViewPerTabView = _a.clearExpenseAutomationTransactionsViewPerTabView, exports.clearExpenseAutomationTransactionsView = _a.clearExpenseAutomationTransactionsView, exports.setEntityRecommendationForLineIdsForCategorization = _a.setEntityRecommendationForLineIdsForCategorization, exports.updateSelectedTransactionId = _a.updateSelectedTransactionId, exports.syncTransactionCategorizationFromDetailSave = _a.syncTransactionCategorizationFromDetailSave
|
|
774
|
+
_a = expenseAutomationTransactionsView.actions, exports.fetchTransactionCategorization = _a.fetchTransactionCategorization, exports.updateTransactionCategorizationUIState = _a.updateTransactionCategorizationUIState, exports.initializeTransactionCategorizationViewLocalData = _a.initializeTransactionCategorizationViewLocalData, exports.saveTransactionCategorizationLocalData = _a.saveTransactionCategorizationLocalData, exports.fetchTransactionCategorizationFailure = _a.fetchTransactionCategorizationFailure, exports.saveTransactionCategorization = _a.saveTransactionCategorization, exports.updateTransactionCategorization = _a.updateTransactionCategorization, exports.updateCurrentSelectedTransactionCategorizationTab = _a.updateCurrentSelectedTransactionCategorizationTab, exports.updateTransactionCategorizationSaveStatus = _a.updateTransactionCategorizationSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = _a.updateStatusForTransactionNotMiscategorizedUpdateForCategorization, exports.updateSelectedVendorForTransaction = _a.updateSelectedVendorForTransaction, exports.updateSelectedCustomerForTransaction = _a.updateSelectedCustomerForTransaction, exports.setAllItemsToCategoryClassInLocalDataForCategorization = _a.setAllItemsToCategoryClassInLocalDataForCategorization, exports.updateTotalCountForTransactionCategorization = _a.updateTotalCountForTransactionCategorization, exports.fetchTransactionCategorizationSuccess = _a.fetchTransactionCategorizationSuccess, exports.resetOtherTabsFetchState = _a.resetOtherTabsFetchState, exports.fetchTransactionCategorizationView = _a.fetchTransactionCategorizationView, exports.updateSelectedCheckboxTransactionIds = _a.updateSelectedCheckboxTransactionIds, exports.clearExpenseAutomationTransactionsViewPerTabView = _a.clearExpenseAutomationTransactionsViewPerTabView, exports.clearExpenseAutomationTransactionsView = _a.clearExpenseAutomationTransactionsView, exports.setEntityRecommendationForLineIdsForCategorization = _a.setEntityRecommendationForLineIdsForCategorization, exports.updateSelectedTransactionId = _a.updateSelectedTransactionId, exports.syncTransactionCategorizationFromDetailSave = _a.syncTransactionCategorizationFromDetailSave;
|
|
791
775
|
exports.default = expenseAutomationTransactionsView.reducer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "4.19.41
|
|
3
|
+
"version": "4.19.41",
|
|
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,87 +0,0 @@
|
|
|
1
|
-
import { EMPTY, from, of } from 'rxjs';
|
|
2
|
-
import { catchError, expand, filter, mergeMap, switchMap } from 'rxjs/operators';
|
|
3
|
-
import { toString } from '../../../../commonStateTypes/timePeriod';
|
|
4
|
-
import { getCurrentTenant } from '../../../../entity/tenant/tenantSelector';
|
|
5
|
-
import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
|
|
6
|
-
import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
|
|
7
|
-
import { getLineItemsByTransactionsIdsFromResponse } from '../../helpers/transactionCategorizationLocalDataHelper';
|
|
8
|
-
import { backgroundRefetchReviewTab, fetchTransactionCategorizationFailure, fetchTransactionCategorizationSuccess, initializeTransactionCategorizationViewLocalData, updateTotalCountForTransactionCategorization, updateTransactionCategorizationUIState, } from '../../reducers/transactionsViewReducer';
|
|
9
|
-
import { toTransactionsSortKey } from '../../types/transactionsViewState';
|
|
10
|
-
const SELECTED_TAB = 'review';
|
|
11
|
-
const PAGE_SIZE = 25;
|
|
12
|
-
export const backgroundRefetchReviewTabEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(backgroundRefetchReviewTab.match), switchMap((action) => {
|
|
13
|
-
const { period, isUncategorizedExpenseCategoryEnabled } = action.payload;
|
|
14
|
-
const state = state$.value;
|
|
15
|
-
const currentTenant = getCurrentTenant(state);
|
|
16
|
-
const selectedPeriod = state.expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
|
|
17
|
-
const reviewUiState = state.expenseAutomationTransactionsViewState
|
|
18
|
-
.transactionCategorizationView.review.uiState;
|
|
19
|
-
const storedPageToken = reviewUiState.pageToken;
|
|
20
|
-
const fetchPage = (pageToken) => {
|
|
21
|
-
const queryParam = {
|
|
22
|
-
start_date: toString(period.start),
|
|
23
|
-
end_date: toString(period.end),
|
|
24
|
-
auto_categorized: false,
|
|
25
|
-
sort_by: toTransactionsSortKey(reviewUiState.sortKey),
|
|
26
|
-
sort_order: reviewUiState.sortOrder === 'ascending' ? 'asc' : 'desc',
|
|
27
|
-
page_token: pageToken,
|
|
28
|
-
page_size: PAGE_SIZE,
|
|
29
|
-
search_text: reviewUiState.searchString,
|
|
30
|
-
};
|
|
31
|
-
return zeniAPI.getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`);
|
|
32
|
-
};
|
|
33
|
-
let isFirstPage = true;
|
|
34
|
-
return fetchPage(null).pipe(expand((response) => {
|
|
35
|
-
if (!isSuccessResponse(response) || response.data == null) {
|
|
36
|
-
return EMPTY;
|
|
37
|
-
}
|
|
38
|
-
const nextToken = response.data.next_page_token ?? null;
|
|
39
|
-
if (nextToken == null || nextToken === storedPageToken) {
|
|
40
|
-
return EMPTY;
|
|
41
|
-
}
|
|
42
|
-
return fetchPage(nextToken);
|
|
43
|
-
}), mergeMap((response) => {
|
|
44
|
-
if (!isSuccessResponse(response) || response.data == null) {
|
|
45
|
-
return of(fetchTransactionCategorizationFailure({
|
|
46
|
-
selectedPeriod,
|
|
47
|
-
selectedTab: SELECTED_TAB,
|
|
48
|
-
status: response.status,
|
|
49
|
-
}));
|
|
50
|
-
}
|
|
51
|
-
const keepExistingListItems = !isFirstPage;
|
|
52
|
-
isFirstPage = false;
|
|
53
|
-
const transactionIds = response.data.transactions.map((t) => t.transaction_id);
|
|
54
|
-
const lineItemsByTransactionIds = getLineItemsByTransactionsIdsFromResponse(response.data.transactions);
|
|
55
|
-
const nextToken = response.data.next_page_token ?? null;
|
|
56
|
-
const isFinalPage = nextToken == null || nextToken === storedPageToken;
|
|
57
|
-
const updateActions = [
|
|
58
|
-
updateTransactions(response.data.transactions, (value) => value.transaction_id, 'merge'),
|
|
59
|
-
updateTransactionCategorizationUIState({
|
|
60
|
-
selectedTab: SELECTED_TAB,
|
|
61
|
-
uiState: {
|
|
62
|
-
...reviewUiState,
|
|
63
|
-
pageToken: nextToken,
|
|
64
|
-
},
|
|
65
|
-
}),
|
|
66
|
-
initializeTransactionCategorizationViewLocalData(SELECTED_TAB, transactionIds, selectedPeriod, keepExistingListItems, nextToken, response.data.total_count, lineItemsByTransactionIds, true, isUncategorizedExpenseCategoryEnabled),
|
|
67
|
-
updateTotalCountForTransactionCategorization({
|
|
68
|
-
selectedPeriod,
|
|
69
|
-
selectedTab: SELECTED_TAB,
|
|
70
|
-
totalCount: response.data.total_count,
|
|
71
|
-
}),
|
|
72
|
-
];
|
|
73
|
-
if (isFinalPage) {
|
|
74
|
-
updateActions.push(fetchTransactionCategorizationSuccess({
|
|
75
|
-
refreshViewInBackground: true,
|
|
76
|
-
selectedTab: SELECTED_TAB,
|
|
77
|
-
status: response.status,
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
return from(updateActions);
|
|
81
|
-
}), catchError((error) => of(fetchTransactionCategorizationFailure({
|
|
82
|
-
selectedPeriod,
|
|
83
|
-
selectedTab: SELECTED_TAB,
|
|
84
|
-
status: createZeniAPIStatus('Unexpected Error', 'background refetch review tab REST API call errored out' +
|
|
85
|
-
JSON.stringify(error)),
|
|
86
|
-
}))));
|
|
87
|
-
}));
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { EMPTY, of } from 'rxjs';
|
|
2
|
-
import { filter, mergeMap } from 'rxjs/operators';
|
|
3
|
-
import { convertToPeriod, toAbsoluteDay, } from '../../../../commonStateTypes/timePeriod';
|
|
4
|
-
import { getCurrentTenant } from '../../../../entity/tenant/tenantSelector';
|
|
5
|
-
import { backgroundRefetchReviewTab, syncTransactionCategorizationFromDetailSave, } from '../../reducers/transactionsViewReducer';
|
|
6
|
-
export const triggerReviewTabRefetchEpic = (actions$, state$) => actions$.pipe(filter(syncTransactionCategorizationFromDetailSave.match), mergeMap((action) => {
|
|
7
|
-
const { pendingReviewLineIds, transactionId, isUncategorizedExpenseCategoryEnabled } = action.payload;
|
|
8
|
-
if (pendingReviewLineIds.length === 0) {
|
|
9
|
-
return EMPTY;
|
|
10
|
-
}
|
|
11
|
-
const state = state$.value;
|
|
12
|
-
// Only trigger when the transaction was auto-only (not in review tab after reducer ran)
|
|
13
|
-
const reviewLocalData = state.expenseAutomationTransactionsViewState
|
|
14
|
-
.transactionCategorizationView.review
|
|
15
|
-
.transactionReviewLocalDataById[transactionId.id];
|
|
16
|
-
if (reviewLocalData != null) {
|
|
17
|
-
return EMPTY;
|
|
18
|
-
}
|
|
19
|
-
const currentTenant = getCurrentTenant(state);
|
|
20
|
-
const selectedPeriod = state.expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
|
|
21
|
-
const period = convertToPeriod(selectedPeriod);
|
|
22
|
-
const timePeriodStart = toAbsoluteDay(period.start);
|
|
23
|
-
const timePeriodEnd = toAbsoluteDay(period.end);
|
|
24
|
-
if (timePeriodStart == null || timePeriodEnd == null) {
|
|
25
|
-
return EMPTY;
|
|
26
|
-
}
|
|
27
|
-
return of(backgroundRefetchReviewTab({ start: timePeriodStart, end: timePeriodEnd }, isUncategorizedExpenseCategoryEnabled));
|
|
28
|
-
}));
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
|
|
4
|
-
import { RootState } from '../../../../reducer';
|
|
5
|
-
import { ZeniAPI } from '../../../../zeniAPI';
|
|
6
|
-
import { backgroundRefetchReviewTab, fetchTransactionCategorizationFailure, fetchTransactionCategorizationSuccess, initializeTransactionCategorizationViewLocalData, updateTotalCountForTransactionCategorization, updateTransactionCategorizationUIState } from '../../reducers/transactionsViewReducer';
|
|
7
|
-
export type ActionType = ReturnType<typeof backgroundRefetchReviewTab> | ReturnType<typeof updateTransactions> | ReturnType<typeof initializeTransactionCategorizationViewLocalData> | ReturnType<typeof fetchTransactionCategorizationFailure> | ReturnType<typeof fetchTransactionCategorizationSuccess> | ReturnType<typeof updateTotalCountForTransactionCategorization> | ReturnType<typeof updateTransactionCategorizationUIState>;
|
|
8
|
-
export declare const backgroundRefetchReviewTabEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.backgroundRefetchReviewTabEpic = void 0;
|
|
4
|
-
const rxjs_1 = require("rxjs");
|
|
5
|
-
const operators_1 = require("rxjs/operators");
|
|
6
|
-
const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
|
|
7
|
-
const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
|
|
8
|
-
const transactionReducer_1 = require("../../../../entity/transaction/transactionReducer");
|
|
9
|
-
const responsePayload_1 = require("../../../../responsePayload");
|
|
10
|
-
const transactionCategorizationLocalDataHelper_1 = require("../../helpers/transactionCategorizationLocalDataHelper");
|
|
11
|
-
const transactionsViewReducer_1 = require("../../reducers/transactionsViewReducer");
|
|
12
|
-
const transactionsViewState_1 = require("../../types/transactionsViewState");
|
|
13
|
-
const SELECTED_TAB = 'review';
|
|
14
|
-
const PAGE_SIZE = 25;
|
|
15
|
-
const backgroundRefetchReviewTabEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.backgroundRefetchReviewTab.match), (0, operators_1.switchMap)((action) => {
|
|
16
|
-
const { period, isUncategorizedExpenseCategoryEnabled } = action.payload;
|
|
17
|
-
const state = state$.value;
|
|
18
|
-
const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
|
|
19
|
-
const selectedPeriod = state.expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
|
|
20
|
-
const reviewUiState = state.expenseAutomationTransactionsViewState
|
|
21
|
-
.transactionCategorizationView.review.uiState;
|
|
22
|
-
const storedPageToken = reviewUiState.pageToken;
|
|
23
|
-
const fetchPage = (pageToken) => {
|
|
24
|
-
const queryParam = {
|
|
25
|
-
start_date: (0, timePeriod_1.toString)(period.start),
|
|
26
|
-
end_date: (0, timePeriod_1.toString)(period.end),
|
|
27
|
-
auto_categorized: false,
|
|
28
|
-
sort_by: (0, transactionsViewState_1.toTransactionsSortKey)(reviewUiState.sortKey),
|
|
29
|
-
sort_order: reviewUiState.sortOrder === 'ascending' ? 'asc' : 'desc',
|
|
30
|
-
page_token: pageToken,
|
|
31
|
-
page_size: PAGE_SIZE,
|
|
32
|
-
search_text: reviewUiState.searchString,
|
|
33
|
-
};
|
|
34
|
-
return zeniAPI.getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`);
|
|
35
|
-
};
|
|
36
|
-
let isFirstPage = true;
|
|
37
|
-
return fetchPage(null).pipe((0, operators_1.expand)((response) => {
|
|
38
|
-
if (!(0, responsePayload_1.isSuccessResponse)(response) || response.data == null) {
|
|
39
|
-
return rxjs_1.EMPTY;
|
|
40
|
-
}
|
|
41
|
-
const nextToken = response.data.next_page_token ?? null;
|
|
42
|
-
if (nextToken == null || nextToken === storedPageToken) {
|
|
43
|
-
return rxjs_1.EMPTY;
|
|
44
|
-
}
|
|
45
|
-
return fetchPage(nextToken);
|
|
46
|
-
}), (0, operators_1.mergeMap)((response) => {
|
|
47
|
-
if (!(0, responsePayload_1.isSuccessResponse)(response) || response.data == null) {
|
|
48
|
-
return (0, rxjs_1.of)((0, transactionsViewReducer_1.fetchTransactionCategorizationFailure)({
|
|
49
|
-
selectedPeriod,
|
|
50
|
-
selectedTab: SELECTED_TAB,
|
|
51
|
-
status: response.status,
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
const keepExistingListItems = !isFirstPage;
|
|
55
|
-
isFirstPage = false;
|
|
56
|
-
const transactionIds = response.data.transactions.map((t) => t.transaction_id);
|
|
57
|
-
const lineItemsByTransactionIds = (0, transactionCategorizationLocalDataHelper_1.getLineItemsByTransactionsIdsFromResponse)(response.data.transactions);
|
|
58
|
-
const nextToken = response.data.next_page_token ?? null;
|
|
59
|
-
const isFinalPage = nextToken == null || nextToken === storedPageToken;
|
|
60
|
-
const updateActions = [
|
|
61
|
-
(0, transactionReducer_1.updateTransactions)(response.data.transactions, (value) => value.transaction_id, 'merge'),
|
|
62
|
-
(0, transactionsViewReducer_1.updateTransactionCategorizationUIState)({
|
|
63
|
-
selectedTab: SELECTED_TAB,
|
|
64
|
-
uiState: {
|
|
65
|
-
...reviewUiState,
|
|
66
|
-
pageToken: nextToken,
|
|
67
|
-
},
|
|
68
|
-
}),
|
|
69
|
-
(0, transactionsViewReducer_1.initializeTransactionCategorizationViewLocalData)(SELECTED_TAB, transactionIds, selectedPeriod, keepExistingListItems, nextToken, response.data.total_count, lineItemsByTransactionIds, true, isUncategorizedExpenseCategoryEnabled),
|
|
70
|
-
(0, transactionsViewReducer_1.updateTotalCountForTransactionCategorization)({
|
|
71
|
-
selectedPeriod,
|
|
72
|
-
selectedTab: SELECTED_TAB,
|
|
73
|
-
totalCount: response.data.total_count,
|
|
74
|
-
}),
|
|
75
|
-
];
|
|
76
|
-
if (isFinalPage) {
|
|
77
|
-
updateActions.push((0, transactionsViewReducer_1.fetchTransactionCategorizationSuccess)({
|
|
78
|
-
refreshViewInBackground: true,
|
|
79
|
-
selectedTab: SELECTED_TAB,
|
|
80
|
-
status: response.status,
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
|
-
return (0, rxjs_1.from)(updateActions);
|
|
84
|
-
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, transactionsViewReducer_1.fetchTransactionCategorizationFailure)({
|
|
85
|
-
selectedPeriod,
|
|
86
|
-
selectedTab: SELECTED_TAB,
|
|
87
|
-
status: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'background refetch review tab REST API call errored out' +
|
|
88
|
-
JSON.stringify(error)),
|
|
89
|
-
}))));
|
|
90
|
-
}));
|
|
91
|
-
exports.backgroundRefetchReviewTabEpic = backgroundRefetchReviewTabEpic;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { RootState } from '../../../../reducer';
|
|
4
|
-
import { backgroundRefetchReviewTab, syncTransactionCategorizationFromDetailSave } from '../../reducers/transactionsViewReducer';
|
|
5
|
-
export type ActionType = ReturnType<typeof syncTransactionCategorizationFromDetailSave> | ReturnType<typeof backgroundRefetchReviewTab>;
|
|
6
|
-
export declare const triggerReviewTabRefetchEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => Observable<ActionType>;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.triggerReviewTabRefetchEpic = void 0;
|
|
4
|
-
const rxjs_1 = require("rxjs");
|
|
5
|
-
const operators_1 = require("rxjs/operators");
|
|
6
|
-
const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
|
|
7
|
-
const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
|
|
8
|
-
const transactionsViewReducer_1 = require("../../reducers/transactionsViewReducer");
|
|
9
|
-
const triggerReviewTabRefetchEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.syncTransactionCategorizationFromDetailSave.match), (0, operators_1.mergeMap)((action) => {
|
|
10
|
-
const { pendingReviewLineIds, transactionId, isUncategorizedExpenseCategoryEnabled } = action.payload;
|
|
11
|
-
if (pendingReviewLineIds.length === 0) {
|
|
12
|
-
return rxjs_1.EMPTY;
|
|
13
|
-
}
|
|
14
|
-
const state = state$.value;
|
|
15
|
-
// Only trigger when the transaction was auto-only (not in review tab after reducer ran)
|
|
16
|
-
const reviewLocalData = state.expenseAutomationTransactionsViewState
|
|
17
|
-
.transactionCategorizationView.review
|
|
18
|
-
.transactionReviewLocalDataById[transactionId.id];
|
|
19
|
-
if (reviewLocalData != null) {
|
|
20
|
-
return rxjs_1.EMPTY;
|
|
21
|
-
}
|
|
22
|
-
const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
|
|
23
|
-
const selectedPeriod = state.expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
|
|
24
|
-
const period = (0, timePeriod_1.convertToPeriod)(selectedPeriod);
|
|
25
|
-
const timePeriodStart = (0, timePeriod_1.toAbsoluteDay)(period.start);
|
|
26
|
-
const timePeriodEnd = (0, timePeriod_1.toAbsoluteDay)(period.end);
|
|
27
|
-
if (timePeriodStart == null || timePeriodEnd == null) {
|
|
28
|
-
return rxjs_1.EMPTY;
|
|
29
|
-
}
|
|
30
|
-
return (0, rxjs_1.of)((0, transactionsViewReducer_1.backgroundRefetchReviewTab)({ start: timePeriodStart, end: timePeriodEnd }, isUncategorizedExpenseCategoryEnabled));
|
|
31
|
-
}));
|
|
32
|
-
exports.triggerReviewTabRefetchEpic = triggerReviewTabRefetchEpic;
|