@zeniai/client-epic-state 4.19.41-betaJK2 → 4.19.41-betaML3

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 (47) hide show
  1. package/lib/epic.d.ts +3 -2
  2. package/lib/epic.js +3 -2
  3. package/lib/esm/epic.js +3 -2
  4. package/lib/esm/index.js +2 -4
  5. package/lib/esm/reducer.js +0 -6
  6. package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +87 -0
  7. package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +28 -0
  8. package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +17 -1
  9. package/lib/index.d.ts +2 -5
  10. package/lib/index.js +30 -33
  11. package/lib/reducer.d.ts +0 -6
  12. package/lib/reducer.js +0 -6
  13. package/lib/tsconfig.typecheck.tsbuildinfo +1 -0
  14. package/lib/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.d.ts +8 -0
  15. package/lib/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +91 -0
  16. package/lib/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.d.ts +6 -0
  17. package/lib/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +32 -0
  18. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +4 -1
  19. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +18 -2
  20. package/package.json +1 -1
  21. package/lib/entity/transactionActivityLog/transactionActivityLogPayload.d.ts +0 -27
  22. package/lib/entity/transactionActivityLog/transactionActivityLogPayload.js +0 -39
  23. package/lib/entity/transactionActivityLog/transactionActivityLogReducer.d.ts +0 -6
  24. package/lib/entity/transactionActivityLog/transactionActivityLogReducer.js +0 -27
  25. package/lib/entity/transactionActivityLog/transactionActivityLogSelector.d.ts +0 -4
  26. package/lib/entity/transactionActivityLog/transactionActivityLogSelector.js +0 -17
  27. package/lib/entity/transactionActivityLog/transactionActivityLogState.d.ts +0 -30
  28. package/lib/entity/transactionActivityLog/transactionActivityLogState.js +0 -13
  29. package/lib/esm/entity/transactionActivityLog/transactionActivityLogPayload.js +0 -34
  30. package/lib/esm/entity/transactionActivityLog/transactionActivityLogReducer.js +0 -23
  31. package/lib/esm/entity/transactionActivityLog/transactionActivityLogSelector.js +0 -10
  32. package/lib/esm/entity/transactionActivityLog/transactionActivityLogState.js +0 -9
  33. package/lib/esm/view/transactionActivityLogView/fetchTransactionActivityLogEpic.js +0 -35
  34. package/lib/esm/view/transactionActivityLogView/transactionActivityLogViewPayload.js +0 -1
  35. package/lib/esm/view/transactionActivityLogView/transactionActivityLogViewReducer.js +0 -46
  36. package/lib/esm/view/transactionActivityLogView/transactionActivityLogViewSelector.js +0 -16
  37. package/lib/esm/view/transactionActivityLogView/transactionActivityLogViewState.js +0 -1
  38. package/lib/view/transactionActivityLogView/fetchTransactionActivityLogEpic.d.ts +0 -8
  39. package/lib/view/transactionActivityLogView/fetchTransactionActivityLogEpic.js +0 -39
  40. package/lib/view/transactionActivityLogView/transactionActivityLogViewPayload.d.ts +0 -6
  41. package/lib/view/transactionActivityLogView/transactionActivityLogViewPayload.js +0 -2
  42. package/lib/view/transactionActivityLogView/transactionActivityLogViewReducer.d.ts +0 -17
  43. package/lib/view/transactionActivityLogView/transactionActivityLogViewReducer.js +0 -50
  44. package/lib/view/transactionActivityLogView/transactionActivityLogViewSelector.d.ts +0 -8
  45. package/lib/view/transactionActivityLogView/transactionActivityLogViewSelector.js +0 -19
  46. package/lib/view/transactionActivityLogView/transactionActivityLogViewState.d.ts +0 -5
  47. package/lib/view/transactionActivityLogView/transactionActivityLogViewState.js +0 -2
@@ -0,0 +1,8 @@
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>;
@@ -0,0 +1,91 @@
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;
@@ -0,0 +1,6 @@
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>;
@@ -0,0 +1,32 @@
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;
@@ -155,6 +155,9 @@ 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>;
158
+ }, "expenseAutomationTransactionsView/syncTransactionCategorizationFromDetailSave", never, never>, backgroundRefetchReviewTab: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[period: TimePeriod, isUncategorizedExpenseCategoryEnabled?: boolean | undefined], {
159
+ period: TimePeriod;
160
+ isUncategorizedExpenseCategoryEnabled: boolean | undefined;
161
+ }, "expenseAutomationTransactionsView/backgroundRefetchReviewTab", never, never>;
159
162
  declare const _default: import("redux").Reducer<TransactionsViewState>;
160
163
  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.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;
7
+ exports.backgroundRefetchReviewTab = 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,7 +769,23 @@ 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
+ },
772
788
  },
773
789
  });
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;
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, exports.backgroundRefetchReviewTab = _a.backgroundRefetchReviewTab;
775
791
  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-betaJK2",
3
+ "version": "4.19.41-betaML3",
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,27 +0,0 @@
1
- import { AccountBasePayload } from '../account/accountPayload';
2
- import { ClassBasePayload } from '../class/classPayload';
3
- import { AISummaryPayload } from '../transaction/payloadTypes/transactionLinePayload';
4
- import { TransactionActivityLog, TransactionActivityLogData } from './transactionActivityLogState';
5
- export interface TransactionActivityLogLinePayload {
6
- account?: AccountBasePayload;
7
- class?: ClassBasePayload;
8
- }
9
- export interface ActivityLogTransactionPayload {
10
- line_id: string;
11
- original_line: TransactionActivityLogLinePayload;
12
- updated_line: TransactionActivityLogLinePayload;
13
- }
14
- export interface TransactionActivityLogDataPayload {
15
- ai_summaries: AISummaryPayload[];
16
- transaction: ActivityLogTransactionPayload;
17
- }
18
- export interface TransactionActivityLogPayload {
19
- correlation_id: string;
20
- create_time: string;
21
- data: TransactionActivityLogDataPayload | null;
22
- event_type: string;
23
- processing_time_ms: number;
24
- status_code: string;
25
- }
26
- export declare const toTransactionActivityLogData: (data: TransactionActivityLogDataPayload) => TransactionActivityLogData;
27
- export declare const toTransactionActivityLog: (payload: TransactionActivityLogPayload) => TransactionActivityLog;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toTransactionActivityLog = exports.toTransactionActivityLogData = void 0;
4
- const zeniDayJS_1 = require("../../zeniDayJS");
5
- const accountPayload_1 = require("../account/accountPayload");
6
- const classPayload_1 = require("../class/classPayload");
7
- const transactionLinePayload_1 = require("../transaction/payloadTypes/transactionLinePayload");
8
- const transactionActivityLogState_1 = require("./transactionActivityLogState");
9
- const toTransactionActivityLogLine = (line) => {
10
- return {
11
- account: line.account
12
- ? (0, accountPayload_1.mapAccountBasePayloadToAccountBase)(line.account)
13
- : undefined,
14
- class: line.class ? (0, classPayload_1.mapClassBasePayloadToClassBase)(line.class) : undefined,
15
- };
16
- };
17
- const toTransaction = (transaction) => {
18
- return {
19
- lineId: transaction.line_id,
20
- originalLine: toTransactionActivityLogLine(transaction.original_line),
21
- updatedLine: toTransactionActivityLogLine(transaction.updated_line),
22
- };
23
- };
24
- const toTransactionActivityLogData = (data) => {
25
- return {
26
- aiSummaries: data.ai_summaries.map(transactionLinePayload_1.toAISummary),
27
- transaction: toTransaction(data.transaction),
28
- };
29
- };
30
- exports.toTransactionActivityLogData = toTransactionActivityLogData;
31
- const toTransactionActivityLog = (payload) => {
32
- return {
33
- id: `${payload.correlation_id}-${payload.create_time}`,
34
- data: payload.data != null ? (0, exports.toTransactionActivityLogData)(payload.data) : null,
35
- eventType: (0, transactionActivityLogState_1.toActivityLogEventType)(payload.event_type),
36
- createTime: (0, zeniDayJS_1.date)(payload.create_time),
37
- };
38
- };
39
- exports.toTransactionActivityLog = toTransactionActivityLog;
@@ -1,6 +0,0 @@
1
- import { TransactionActivityLogPayload } from './transactionActivityLogPayload';
2
- import { TransactionActivityLogState } from './transactionActivityLogState';
3
- export declare const initialState: TransactionActivityLogState;
4
- export declare const updateTransactionActivityLogs: import("@reduxjs/toolkit").ActionCreatorWithPayload<TransactionActivityLogPayload[], "transactionActivityLog/updateTransactionActivityLogs">, clearAllTransactionActivityLogs: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"transactionActivityLog/clearAllTransactionActivityLogs">;
5
- declare const _default: import("redux").Reducer<TransactionActivityLogState>;
6
- export default _default;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.clearAllTransactionActivityLogs = exports.updateTransactionActivityLogs = exports.initialState = void 0;
5
- const toolkit_1 = require("@reduxjs/toolkit");
6
- const transactionActivityLogPayload_1 = require("./transactionActivityLogPayload");
7
- exports.initialState = {
8
- transactionActivityLogById: {},
9
- };
10
- const transactionActivityLog = (0, toolkit_1.createSlice)({
11
- name: 'transactionActivityLog',
12
- initialState: exports.initialState,
13
- reducers: {
14
- updateTransactionActivityLogs(draft, action) {
15
- action.payload.forEach((transactionActivityLogPayload) => {
16
- const transactionActivityLog = (0, transactionActivityLogPayload_1.toTransactionActivityLog)(transactionActivityLogPayload);
17
- draft.transactionActivityLogById[transactionActivityLog.id] =
18
- transactionActivityLog;
19
- });
20
- },
21
- clearAllTransactionActivityLogs(draft) {
22
- draft.transactionActivityLogById = {};
23
- },
24
- },
25
- });
26
- _a = transactionActivityLog.actions, exports.updateTransactionActivityLogs = _a.updateTransactionActivityLogs, exports.clearAllTransactionActivityLogs = _a.clearAllTransactionActivityLogs;
27
- exports.default = transactionActivityLog.reducer;
@@ -1,4 +0,0 @@
1
- import { ID } from '../../commonStateTypes/common';
2
- import { TransactionActivityLog, TransactionActivityLogState } from './transactionActivityLogState';
3
- export declare function getTransactionActivityLogsByIds(transactionActivityLogState: TransactionActivityLogState, transactionActivityLogIds: ID[]): TransactionActivityLog[];
4
- export declare function getTransactionActivityLogById(transactionActivityLogState: TransactionActivityLogState, transactionActivityLogId: ID): TransactionActivityLog | undefined;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getTransactionActivityLogsByIds = getTransactionActivityLogsByIds;
7
- exports.getTransactionActivityLogById = getTransactionActivityLogById;
8
- const get_1 = __importDefault(require("lodash/get"));
9
- function getTransactionActivityLogsByIds(transactionActivityLogState, transactionActivityLogIds) {
10
- const transactionActivityLogs = transactionActivityLogIds
11
- .map((transactionActivityLogId) => getTransactionActivityLogById(transactionActivityLogState, transactionActivityLogId))
12
- .filter((value) => value != null);
13
- return transactionActivityLogs;
14
- }
15
- function getTransactionActivityLogById(transactionActivityLogState, transactionActivityLogId) {
16
- return (0, get_1.default)(transactionActivityLogState.transactionActivityLogById, transactionActivityLogId, undefined);
17
- }
@@ -1,30 +0,0 @@
1
- import { ID } from '../../commonStateTypes/common';
2
- import { ZeniDate } from '../../zeniDayJS';
3
- import { AccountBase } from '../account/accountState';
4
- import { ClassBase } from '../class/classState';
5
- import { AISummary } from '../transaction/stateTypes/transactionLine';
6
- export declare const ALL_ACTIVITY_LOG_EVENT_TYPE: readonly ["transaction.sync_database", "transaction_line.account.updated", "transaction_line.class.updated", "transaction_line.customer.updated", "transaction_line.vendor.updated"];
7
- export declare const toActivityLogEventType: (v: string) => "transaction.sync_database" | "transaction_line.account.updated" | "transaction_line.class.updated" | "transaction_line.customer.updated" | "transaction_line.vendor.updated";
8
- export type ActivityLogEventType = ReturnType<typeof toActivityLogEventType>;
9
- export interface ActivityLogLine {
10
- account?: AccountBase;
11
- class?: ClassBase;
12
- }
13
- export interface ActivityLogTransaction {
14
- lineId: ID;
15
- originalLine: ActivityLogLine;
16
- updatedLine: ActivityLogLine;
17
- }
18
- export interface TransactionActivityLogData {
19
- aiSummaries: AISummary[];
20
- transaction: ActivityLogTransaction;
21
- }
22
- export interface TransactionActivityLog {
23
- createTime: ZeniDate;
24
- data: TransactionActivityLogData | null;
25
- eventType: ActivityLogEventType;
26
- id: ID;
27
- }
28
- export interface TransactionActivityLogState {
29
- transactionActivityLogById: Record<ID, TransactionActivityLog>;
30
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toActivityLogEventType = exports.ALL_ACTIVITY_LOG_EVENT_TYPE = void 0;
4
- const stringToUnion_1 = require("../../commonStateTypes/stringToUnion");
5
- exports.ALL_ACTIVITY_LOG_EVENT_TYPE = [
6
- 'transaction.sync_database',
7
- 'transaction_line.account.updated',
8
- 'transaction_line.class.updated',
9
- 'transaction_line.customer.updated',
10
- 'transaction_line.vendor.updated',
11
- ];
12
- const toActivityLogEventType = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.ALL_ACTIVITY_LOG_EVENT_TYPE);
13
- exports.toActivityLogEventType = toActivityLogEventType;
@@ -1,34 +0,0 @@
1
- import { date } from '../../zeniDayJS';
2
- import { mapAccountBasePayloadToAccountBase, } from '../account/accountPayload';
3
- import { mapClassBasePayloadToClassBase, } from '../class/classPayload';
4
- import { toAISummary, } from '../transaction/payloadTypes/transactionLinePayload';
5
- import { toActivityLogEventType, } from './transactionActivityLogState';
6
- const toTransactionActivityLogLine = (line) => {
7
- return {
8
- account: line.account
9
- ? mapAccountBasePayloadToAccountBase(line.account)
10
- : undefined,
11
- class: line.class ? mapClassBasePayloadToClassBase(line.class) : undefined,
12
- };
13
- };
14
- const toTransaction = (transaction) => {
15
- return {
16
- lineId: transaction.line_id,
17
- originalLine: toTransactionActivityLogLine(transaction.original_line),
18
- updatedLine: toTransactionActivityLogLine(transaction.updated_line),
19
- };
20
- };
21
- export const toTransactionActivityLogData = (data) => {
22
- return {
23
- aiSummaries: data.ai_summaries.map(toAISummary),
24
- transaction: toTransaction(data.transaction),
25
- };
26
- };
27
- export const toTransactionActivityLog = (payload) => {
28
- return {
29
- id: `${payload.correlation_id}-${payload.create_time}`,
30
- data: payload.data != null ? toTransactionActivityLogData(payload.data) : null,
31
- eventType: toActivityLogEventType(payload.event_type),
32
- createTime: date(payload.create_time),
33
- };
34
- };
@@ -1,23 +0,0 @@
1
- import { createSlice } from '@reduxjs/toolkit';
2
- import { toTransactionActivityLog, } from './transactionActivityLogPayload';
3
- export const initialState = {
4
- transactionActivityLogById: {},
5
- };
6
- const transactionActivityLog = createSlice({
7
- name: 'transactionActivityLog',
8
- initialState,
9
- reducers: {
10
- updateTransactionActivityLogs(draft, action) {
11
- action.payload.forEach((transactionActivityLogPayload) => {
12
- const transactionActivityLog = toTransactionActivityLog(transactionActivityLogPayload);
13
- draft.transactionActivityLogById[transactionActivityLog.id] =
14
- transactionActivityLog;
15
- });
16
- },
17
- clearAllTransactionActivityLogs(draft) {
18
- draft.transactionActivityLogById = {};
19
- },
20
- },
21
- });
22
- export const { updateTransactionActivityLogs, clearAllTransactionActivityLogs } = transactionActivityLog.actions;
23
- export default transactionActivityLog.reducer;
@@ -1,10 +0,0 @@
1
- import recordGet from 'lodash/get';
2
- export function getTransactionActivityLogsByIds(transactionActivityLogState, transactionActivityLogIds) {
3
- const transactionActivityLogs = transactionActivityLogIds
4
- .map((transactionActivityLogId) => getTransactionActivityLogById(transactionActivityLogState, transactionActivityLogId))
5
- .filter((value) => value != null);
6
- return transactionActivityLogs;
7
- }
8
- export function getTransactionActivityLogById(transactionActivityLogState, transactionActivityLogId) {
9
- return recordGet(transactionActivityLogState.transactionActivityLogById, transactionActivityLogId, undefined);
10
- }
@@ -1,9 +0,0 @@
1
- import { stringToUnion } from '../../commonStateTypes/stringToUnion';
2
- export const ALL_ACTIVITY_LOG_EVENT_TYPE = [
3
- 'transaction.sync_database',
4
- 'transaction_line.account.updated',
5
- 'transaction_line.class.updated',
6
- 'transaction_line.customer.updated',
7
- 'transaction_line.vendor.updated',
8
- ];
9
- export const toActivityLogEventType = (v) => stringToUnion(v, ALL_ACTIVITY_LOG_EVENT_TYPE);
@@ -1,35 +0,0 @@
1
- import { from, of } from 'rxjs';
2
- import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
- import { updateTransactionActivityLogs } from '../../entity/transactionActivityLog/transactionActivityLogReducer';
4
- import { createZeniAPIStatus, isSuccessResponse } from '../../responsePayload';
5
- import { fetchTransactionActivityLog, updateTransactionActivityLogViewFetchStatus, updateTransactionActivityLogViewOnSuccess, } from './transactionActivityLogViewReducer';
6
- export const fetchTransactionActivityLogEpic = (actions$, _, zeniAPI) => actions$.pipe(filter(fetchTransactionActivityLog.match), switchMap((action) => {
7
- const { qboId } = action.payload;
8
- return zeniAPI
9
- .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/transactions/${qboId}/activity`)
10
- .pipe(mergeMap((response) => {
11
- if (isSuccessResponse(response) &&
12
- response.data != null &&
13
- response.data.activity != null) {
14
- const updateActions = [];
15
- updateActions.push(updateTransactionActivityLogViewOnSuccess({
16
- data: response.data.activity,
17
- qboId,
18
- }));
19
- updateActions.push(updateTransactionActivityLogs(response.data.activity));
20
- return from(updateActions);
21
- }
22
- else {
23
- return of(updateTransactionActivityLogViewFetchStatus({
24
- fetchState: 'Error',
25
- error: response.status,
26
- qboId,
27
- }));
28
- }
29
- }), catchError((error) => of(updateTransactionActivityLogViewFetchStatus({
30
- qboId,
31
- fetchState: 'Error',
32
- error: createZeniAPIStatus('Unexpected Error', 'fetch transaction activity log REST API call errored out' +
33
- JSON.stringify(error)),
34
- }))));
35
- }));
@@ -1,46 +0,0 @@
1
- import { createSlice } from '@reduxjs/toolkit';
2
- export const initialState = {
3
- transactionActivityLogIdsByQboId: {},
4
- transactionActivityLogFetchStateByQboId: {},
5
- };
6
- const transactionActivityLogView = createSlice({
7
- name: 'transactionActivityLogView',
8
- initialState,
9
- reducers: {
10
- fetchTransactionActivityLog: {
11
- prepare(qboId) {
12
- return {
13
- payload: { qboId },
14
- };
15
- },
16
- reducer(draft, action) {
17
- const { qboId } = action.payload;
18
- draft.transactionActivityLogFetchStateByQboId[qboId] = {
19
- fetchState: 'In-Progress',
20
- error: undefined,
21
- };
22
- draft.transactionActivityLogIdsByQboId[qboId] = [];
23
- },
24
- },
25
- updateTransactionActivityLogViewOnSuccess(draft, action) {
26
- const { data, qboId } = action.payload;
27
- draft.transactionActivityLogFetchStateByQboId[qboId] = {
28
- fetchState: 'Completed',
29
- error: undefined,
30
- };
31
- draft.transactionActivityLogIdsByQboId[qboId] = data.map((transactionActivityLog) => `${transactionActivityLog.correlation_id}-${transactionActivityLog.create_time}`);
32
- },
33
- updateTransactionActivityLogViewFetchStatus(draft, action) {
34
- const { fetchState, qboId, error } = action.payload;
35
- draft.transactionActivityLogFetchStateByQboId[qboId] = {
36
- fetchState,
37
- error,
38
- };
39
- },
40
- clearTransactionActivityLogView(draft) {
41
- Object.assign(draft, initialState);
42
- },
43
- },
44
- });
45
- export const { fetchTransactionActivityLog, updateTransactionActivityLogViewOnSuccess, clearTransactionActivityLogView, updateTransactionActivityLogViewFetchStatus, } = transactionActivityLogView.actions;
46
- export default transactionActivityLogView.reducer;
@@ -1,16 +0,0 @@
1
- import { createSelector } from '@reduxjs/toolkit';
2
- import { reduceFetchState } from '../../commonStateTypes/reduceFetchState';
3
- import { getTransactionActivityLogsByIds } from '../../entity/transactionActivityLog/transactionActivityLogSelector';
4
- export const getTransactionActivityLogView = createSelector((state) => state.transactionActivityLogViewState, (state) => state.transactionActivityLogState, (_state, qboId) => qboId, (transactionActivityLogViewState, transactionActivityLogState, qboId) => {
5
- const fetchStateAndError = transactionActivityLogViewState
6
- .transactionActivityLogFetchStateByQboId[qboId] ?? {
7
- fetchState: 'Not-Started',
8
- error: undefined,
9
- };
10
- const transactionActivityLogIds = transactionActivityLogViewState.transactionActivityLogIdsByQboId[qboId] ?? [];
11
- const transactionActivityLogs = getTransactionActivityLogsByIds(transactionActivityLogState, transactionActivityLogIds);
12
- return {
13
- ...reduceFetchState([fetchStateAndError]),
14
- transactionActivityLogs,
15
- };
16
- });
@@ -1,8 +0,0 @@
1
- import { ActionsObservable, StateObservable } from 'redux-observable';
2
- import { Observable } from 'rxjs';
3
- import { updateTransactionActivityLogs } from '../../entity/transactionActivityLog/transactionActivityLogReducer';
4
- import { RootState } from '../../reducer';
5
- import { ZeniAPI } from '../../zeniAPI';
6
- import { fetchTransactionActivityLog, updateTransactionActivityLogViewFetchStatus, updateTransactionActivityLogViewOnSuccess } from './transactionActivityLogViewReducer';
7
- export type ActionType = ReturnType<typeof fetchTransactionActivityLog> | ReturnType<typeof updateTransactionActivityLogs> | ReturnType<typeof updateTransactionActivityLogViewOnSuccess> | ReturnType<typeof updateTransactionActivityLogViewFetchStatus>;
8
- export declare const fetchTransactionActivityLogEpic: (actions$: ActionsObservable<ActionType>, _: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchTransactionActivityLogEpic = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const operators_1 = require("rxjs/operators");
6
- const transactionActivityLogReducer_1 = require("../../entity/transactionActivityLog/transactionActivityLogReducer");
7
- const responsePayload_1 = require("../../responsePayload");
8
- const transactionActivityLogViewReducer_1 = require("./transactionActivityLogViewReducer");
9
- const fetchTransactionActivityLogEpic = (actions$, _, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionActivityLogViewReducer_1.fetchTransactionActivityLog.match), (0, operators_1.switchMap)((action) => {
10
- const { qboId } = action.payload;
11
- return zeniAPI
12
- .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/transactions/${qboId}/activity`)
13
- .pipe((0, operators_1.mergeMap)((response) => {
14
- if ((0, responsePayload_1.isSuccessResponse)(response) &&
15
- response.data != null &&
16
- response.data.activity != null) {
17
- const updateActions = [];
18
- updateActions.push((0, transactionActivityLogViewReducer_1.updateTransactionActivityLogViewOnSuccess)({
19
- data: response.data.activity,
20
- qboId,
21
- }));
22
- updateActions.push((0, transactionActivityLogReducer_1.updateTransactionActivityLogs)(response.data.activity));
23
- return (0, rxjs_1.from)(updateActions);
24
- }
25
- else {
26
- return (0, rxjs_1.of)((0, transactionActivityLogViewReducer_1.updateTransactionActivityLogViewFetchStatus)({
27
- fetchState: 'Error',
28
- error: response.status,
29
- qboId,
30
- }));
31
- }
32
- }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, transactionActivityLogViewReducer_1.updateTransactionActivityLogViewFetchStatus)({
33
- qboId,
34
- fetchState: 'Error',
35
- error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'fetch transaction activity log REST API call errored out' +
36
- JSON.stringify(error)),
37
- }))));
38
- }));
39
- exports.fetchTransactionActivityLogEpic = fetchTransactionActivityLogEpic;