@zeniai/client-epic-state 5.1.20-betaDI2 → 5.1.20-betaRD2
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 -2
- package/lib/epic.js +1 -2
- package/lib/esm/epic.js +1 -2
- package/lib/esm/index.js +1 -2
- package/lib/esm/view/companyTaskManagerView/epics/fetchTaskManagerMetricsEpic.js +1 -8
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +49 -11
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +48 -4
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +107 -19
- package/lib/esm/view/spendManagement/commonSetup/setupViewReducer.js +5 -1
- package/lib/esm/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +0 -1
- package/lib/esm/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -9
- package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +1 -2
- package/lib/index.d.ts +1 -2
- package/lib/index.js +8 -10
- package/lib/view/companyTaskManagerView/epics/fetchTaskManagerMetricsEpic.js +1 -8
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +47 -9
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.d.ts +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +47 -3
- package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +7 -0
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +4 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +108 -20
- package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +16 -0
- package/lib/view/spendManagement/commonSetup/setupViewReducer.js +5 -1
- package/lib/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +0 -1
- package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -9
- package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +0 -1
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +1 -2
- package/package.json +1 -1
- package/lib/esm/view/taskManager/taskDetailView/epics/sendCommentMentionNotificationEpic.js +0 -44
- package/lib/view/taskManager/taskDetailView/epics/sendCommentMentionNotificationEpic.d.ts +0 -20
- package/lib/view/taskManager/taskDetailView/epics/sendCommentMentionNotificationEpic.js +0 -48
|
@@ -6,7 +6,8 @@ import { fetchAccountList } from '../../../accountList/accountListReducer';
|
|
|
6
6
|
import { fetchClassList } from '../../../classList/classListReducer';
|
|
7
7
|
import { fetchOwnerList } from '../../../ownerList/ownerListReducer';
|
|
8
8
|
import { fetchProjectList } from '../../../projectList/projectListReducer';
|
|
9
|
-
import { fetchTransactionCategorization, fetchTransactionCategorizationView, } from '../../reducers/transactionsViewReducer';
|
|
9
|
+
import { fetchTransactionCategorization, fetchTransactionCategorizationView, restoreFullDatasetSnapshot, } from '../../reducers/transactionsViewReducer';
|
|
10
|
+
import { TRANSACTIONS_TABS, } from '../../types/transactionsViewState';
|
|
10
11
|
export const fetchTransactionCategorizationViewEpic = (actions$, state$) => actions$.pipe(filter(fetchTransactionCategorizationView.match), mergeMap((action) => {
|
|
11
12
|
const { selectedTab, cacheOverride, keepExistingListItems, pageToken, period, refreshViewInBackground, searchString, resetListItems, isUncategorizedExpenseCategoryEnabled, } = action.payload;
|
|
12
13
|
const updateActions = [];
|
|
@@ -16,8 +17,14 @@ export const fetchTransactionCategorizationViewEpic = (actions$, state$) => acti
|
|
|
16
17
|
month: period.start.month,
|
|
17
18
|
year: period.start.year,
|
|
18
19
|
};
|
|
19
|
-
const
|
|
20
|
-
|
|
20
|
+
const periodId = toMonthYearPeriodId(monthYearPeriod);
|
|
21
|
+
const transactionIds = transactionIdsBySelectedPeriod[periodId] ?? [];
|
|
22
|
+
const hasUsableSnapshot = (tabKey) => {
|
|
23
|
+
const snapshot = expenseAutomationTransactionsViewState.transactionCategorizationView[tabKey].fullDatasetSnapshot;
|
|
24
|
+
return (snapshot != null &&
|
|
25
|
+
snapshot.periodId === periodId &&
|
|
26
|
+
snapshot.transactionIds.length > 0);
|
|
27
|
+
};
|
|
21
28
|
const accountList = state$.value.accountListState.byReportId['accountList'];
|
|
22
29
|
if (accountList.hasValidState() === false &&
|
|
23
30
|
accountList.fetchState === 'Not-Started') {
|
|
@@ -39,10 +46,47 @@ export const fetchTransactionCategorizationViewEpic = (actions$, state$) => acti
|
|
|
39
46
|
vendorOwnerList.fetchState === 'Not-Started') {
|
|
40
47
|
updateActions.push(fetchOwnerList());
|
|
41
48
|
}
|
|
42
|
-
|
|
49
|
+
// When clearing search (searchString === ''), restore from the pre-search
|
|
50
|
+
// snapshot if one exists — avoids a round-trip since all data is already
|
|
51
|
+
// in the entity store. Fall back to a normal fetch if no snapshot (the
|
|
52
|
+
// tab was never loaded before the search was applied).
|
|
53
|
+
if (searchString === '' && hasUsableSnapshot(selectedTab)) {
|
|
54
|
+
updateActions.push(restoreFullDatasetSnapshot({ selectedTab, period }));
|
|
55
|
+
}
|
|
56
|
+
else if (cacheOverride === true ||
|
|
43
57
|
fetchState === 'Not-Started' ||
|
|
44
58
|
transactionIds.length === 0) {
|
|
45
59
|
updateActions.push(fetchTransactionCategorization(selectedTab, period, cacheOverride, keepExistingListItems, searchString, pageToken, refreshViewInBackground, resetListItems, isUncategorizedExpenseCategoryEnabled));
|
|
46
60
|
}
|
|
61
|
+
// On the initial load of a tab (searchString undefined = non-search fetch),
|
|
62
|
+
// preload every other tab that hasn't been fetched yet for this period.
|
|
63
|
+
// This makes switching to the other tab instant instead of triggering a
|
|
64
|
+
// fresh fetch on click. refreshViewInBackground=true keeps it silent.
|
|
65
|
+
if (searchString === undefined) {
|
|
66
|
+
TRANSACTIONS_TABS.filter((tab) => tab !== selectedTab).forEach((otherTab) => {
|
|
67
|
+
const otherTabFetchState = expenseAutomationTransactionsViewState.transactionCategorizationView[otherTab].fetchState;
|
|
68
|
+
if (otherTabFetchState === 'Not-Started') {
|
|
69
|
+
updateActions.push(fetchTransactionCategorization(otherTab, period, false, false, undefined, undefined, true, undefined, isUncategorizedExpenseCategoryEnabled));
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// When search changes (searchString defined, including empty string to
|
|
74
|
+
// clear), also update every other tab so all tabs always reflect the same
|
|
75
|
+
// search query. Skip if the other tab already has this search string to
|
|
76
|
+
// avoid redundant work on noop updates. On clear, restore from snapshot
|
|
77
|
+
// if available; otherwise issue a background fetch.
|
|
78
|
+
if (searchString !== undefined) {
|
|
79
|
+
TRANSACTIONS_TABS.filter((tab) => tab !== selectedTab).forEach((otherTab) => {
|
|
80
|
+
const otherTabSearchString = expenseAutomationTransactionsViewState.transactionCategorizationView[otherTab].uiState.searchString;
|
|
81
|
+
if (searchString !== otherTabSearchString) {
|
|
82
|
+
if (searchString === '' && hasUsableSnapshot(otherTab)) {
|
|
83
|
+
updateActions.push(restoreFullDatasetSnapshot({ selectedTab: otherTab, period }));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
updateActions.push(fetchTransactionCategorization(otherTab, period, true, keepExistingListItems, searchString, undefined, true, true, isUncategorizedExpenseCategoryEnabled));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
47
91
|
return from(updateActions);
|
|
48
92
|
}));
|
|
@@ -38,6 +38,7 @@ export const initialTransactionTabViewState = {
|
|
|
38
38
|
hasValidState() {
|
|
39
39
|
return this.fetchState == 'Completed';
|
|
40
40
|
},
|
|
41
|
+
fullDatasetSnapshot: undefined,
|
|
41
42
|
transactionReviewLocalDataById: {},
|
|
42
43
|
transactionIdsBySelectedPeriod: {},
|
|
43
44
|
selectedCheckBoxTransactionIds: [],
|
|
@@ -153,27 +154,62 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
153
154
|
draft.transactionCategorizationView[selectedTab].fetchState =
|
|
154
155
|
'In-Progress';
|
|
155
156
|
draft.transactionCategorizationView[selectedTab].error = undefined;
|
|
157
|
+
// A foreground fetch supersedes any in-flight background preload.
|
|
158
|
+
// Reset refreshStatus so a cancelled preload doesn't leave the
|
|
159
|
+
// spinner stuck at In-Progress.
|
|
160
|
+
draft.transactionCategorizationView[selectedTab].refreshStatus = {
|
|
161
|
+
fetchState: 'Not-Started',
|
|
162
|
+
error: undefined,
|
|
163
|
+
};
|
|
156
164
|
}
|
|
157
165
|
draft.transactionCategorizationView[selectedTab].uiState.pageToken =
|
|
158
166
|
pageToken ?? null;
|
|
159
|
-
|
|
160
|
-
|
|
167
|
+
// Only overwrite when explicitly set; undefined means a non-search fetch
|
|
168
|
+
// (tab switch, period change) should preserve the existing search string.
|
|
169
|
+
if (searchString !== undefined) {
|
|
170
|
+
draft.transactionCategorizationView[selectedTab].uiState.searchString =
|
|
171
|
+
searchString;
|
|
172
|
+
}
|
|
161
173
|
draft.transactionCategorizationView[selectedTab].error = undefined;
|
|
174
|
+
const monthYearPeriod = {
|
|
175
|
+
month: period.start.month,
|
|
176
|
+
year: period.start.year,
|
|
177
|
+
};
|
|
178
|
+
const periodId = toMonthYearPeriodId(monthYearPeriod);
|
|
179
|
+
const transactionIdsBySelectedPeriod = draft.transactionCategorizationView[selectedTab]
|
|
180
|
+
.transactionIdsBySelectedPeriod[periodId] ?? [];
|
|
181
|
+
// Snapshot before any list mutation so clearing the search restores
|
|
182
|
+
// instantly without an API round-trip — for BOTH active and synced tabs.
|
|
183
|
+
// Active-tab search dispatches resetListItems=false, so this must live
|
|
184
|
+
// outside the resetListItems block. fullDatasetSnapshot == null prevents
|
|
185
|
+
// overwriting the original snapshot on search refinement ('ama'→'amazon').
|
|
186
|
+
if (searchString !== undefined &&
|
|
187
|
+
searchString !== '' &&
|
|
188
|
+
transactionIdsBySelectedPeriod.length > 0 &&
|
|
189
|
+
draft.transactionCategorizationView[selectedTab].fullDatasetSnapshot ==
|
|
190
|
+
null) {
|
|
191
|
+
draft.transactionCategorizationView[selectedTab].fullDatasetSnapshot =
|
|
192
|
+
{
|
|
193
|
+
parentTotalCount: draft.parentTotalCountByTab[selectedTab][periodId],
|
|
194
|
+
periodId,
|
|
195
|
+
totalCount: draft.transactionCategorizationView[selectedTab].uiState
|
|
196
|
+
.totalCount[periodId],
|
|
197
|
+
transactionIds: [...transactionIdsBySelectedPeriod],
|
|
198
|
+
transactionReviewLocalDataById: {
|
|
199
|
+
...draft.transactionCategorizationView[selectedTab]
|
|
200
|
+
.transactionReviewLocalDataById,
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
}
|
|
162
204
|
// Reset list when we change the sort order and fetch list again
|
|
163
205
|
if (resetListItems === true) {
|
|
164
|
-
const monthYearPeriod = {
|
|
165
|
-
month: period.start.month,
|
|
166
|
-
year: period.start.year,
|
|
167
|
-
};
|
|
168
|
-
const transactionIdsBySelectedPeriod = draft.transactionCategorizationView[selectedTab]
|
|
169
|
-
.transactionIdsBySelectedPeriod[toMonthYearPeriodId(monthYearPeriod)];
|
|
170
206
|
transactionIdsBySelectedPeriod.forEach((transactionId) => {
|
|
171
207
|
delete draft.transactionCategorizationView[selectedTab]
|
|
172
208
|
.transactionReviewLocalDataById[transactionId];
|
|
173
209
|
});
|
|
174
210
|
draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds =
|
|
175
211
|
draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds.filter((selectedCheckBoxTransactionId) => transactionIdsBySelectedPeriod.includes(selectedCheckBoxTransactionId));
|
|
176
|
-
draft.transactionCategorizationView[selectedTab].transactionIdsBySelectedPeriod[
|
|
212
|
+
draft.transactionCategorizationView[selectedTab].transactionIdsBySelectedPeriod[periodId] = [];
|
|
177
213
|
draft.transactionCategorizationView[selectedTab].refreshStatus = {
|
|
178
214
|
fetchState: 'Not-Started',
|
|
179
215
|
error: undefined,
|
|
@@ -305,10 +341,12 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
305
341
|
}
|
|
306
342
|
},
|
|
307
343
|
updateTransactionFilters(draft, action) {
|
|
308
|
-
const {
|
|
309
|
-
//
|
|
310
|
-
//
|
|
311
|
-
|
|
344
|
+
const { filters } = action.payload;
|
|
345
|
+
// Filters are tab-agnostic (payee/category/class/amount), so apply to
|
|
346
|
+
// all tabs so switching tabs after filtering shows consistent results.
|
|
347
|
+
TRANSACTIONS_TABS.forEach((tab) => {
|
|
348
|
+
draft.transactionCategorizationView[tab].filters = filters;
|
|
349
|
+
});
|
|
312
350
|
},
|
|
313
351
|
saveTransactionCategorization: {
|
|
314
352
|
prepare(selectedTab, transactionIds, cotTrackingByTransactionId, isUncategorizedExpenseCategoryEnabled) {
|
|
@@ -660,19 +698,66 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
660
698
|
resetOtherTabsFetchState(draft, action) {
|
|
661
699
|
const { tabs, refreshViewInBackground } = action.payload;
|
|
662
700
|
tabs.forEach((tab) => {
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
701
|
+
const tabFetchState = draft.transactionCategorizationView[tab].fetchState;
|
|
702
|
+
if (refreshViewInBackground !== true) {
|
|
703
|
+
// Foreground fetch completed: mark other tabs as Completed.
|
|
666
704
|
draft.transactionCategorizationView[tab].fetchState = 'Completed';
|
|
667
705
|
draft.transactionCategorizationView[tab].error = undefined;
|
|
668
706
|
}
|
|
669
|
-
else {
|
|
707
|
+
else if (tabFetchState !== 'In-Progress') {
|
|
708
|
+
// Background fetch completed: reset the other tab's refreshStatus,
|
|
709
|
+
// but only when it is not mid-load. During a dual-search the active
|
|
710
|
+
// tab has its own foreground fetch in flight — clobbering its
|
|
711
|
+
// fetchState here would drop the skeleton and show an empty list.
|
|
670
712
|
draft.transactionCategorizationView[tab].refreshStatus = {
|
|
671
713
|
fetchState: 'Not-Started',
|
|
672
714
|
error: undefined,
|
|
673
715
|
};
|
|
674
716
|
}
|
|
717
|
+
// If tabFetchState === 'In-Progress' and refreshViewInBackground === true,
|
|
718
|
+
// leave the other tab's state untouched — it has its own active fetch.
|
|
719
|
+
});
|
|
720
|
+
},
|
|
721
|
+
restoreFullDatasetSnapshot(draft, action) {
|
|
722
|
+
const { selectedTab, period } = action.payload;
|
|
723
|
+
const periodId = toMonthYearPeriodId({
|
|
724
|
+
month: period.start.month,
|
|
725
|
+
year: period.start.year,
|
|
726
|
+
});
|
|
727
|
+
const snapshot = draft.transactionCategorizationView[selectedTab].fullDatasetSnapshot;
|
|
728
|
+
if (snapshot == null || snapshot.periodId !== periodId) {
|
|
729
|
+
return;
|
|
730
|
+
}
|
|
731
|
+
draft.transactionCategorizationView[selectedTab]
|
|
732
|
+
.transactionIdsBySelectedPeriod[periodId] = snapshot.transactionIds;
|
|
733
|
+
// Merge back per-transaction local data; skip entries that were updated
|
|
734
|
+
// during the search (e.g. a save that happened while filtered results
|
|
735
|
+
// were showing) so those saves are not overwritten.
|
|
736
|
+
Object.entries(snapshot.transactionReviewLocalDataById).forEach(([transactionId, localData]) => {
|
|
737
|
+
if (draft.transactionCategorizationView[selectedTab]
|
|
738
|
+
.transactionReviewLocalDataById[transactionId] == null) {
|
|
739
|
+
draft.transactionCategorizationView[selectedTab]
|
|
740
|
+
.transactionReviewLocalDataById[transactionId] = localData;
|
|
741
|
+
}
|
|
675
742
|
});
|
|
743
|
+
if (snapshot.totalCount != null) {
|
|
744
|
+
draft.transactionCategorizationView[selectedTab].uiState.totalCount[periodId] = snapshot.totalCount;
|
|
745
|
+
}
|
|
746
|
+
if (snapshot.parentTotalCount != null) {
|
|
747
|
+
draft.parentTotalCountByTab[selectedTab][periodId] =
|
|
748
|
+
snapshot.parentTotalCount;
|
|
749
|
+
}
|
|
750
|
+
draft.transactionCategorizationView[selectedTab].uiState.searchString =
|
|
751
|
+
'';
|
|
752
|
+
draft.transactionCategorizationView[selectedTab].uiState.pageToken = null;
|
|
753
|
+
draft.transactionCategorizationView[selectedTab].fetchState = 'Completed';
|
|
754
|
+
draft.transactionCategorizationView[selectedTab].refreshStatus = {
|
|
755
|
+
fetchState: 'Not-Started',
|
|
756
|
+
error: undefined,
|
|
757
|
+
};
|
|
758
|
+
draft.transactionCategorizationView[selectedTab].error = undefined;
|
|
759
|
+
draft.transactionCategorizationView[selectedTab].fullDatasetSnapshot =
|
|
760
|
+
undefined;
|
|
676
761
|
},
|
|
677
762
|
fetchTransactionCategorizationFailure(draft, action) {
|
|
678
763
|
const { selectedTab, selectedPeriod } = action.payload;
|
|
@@ -1002,6 +1087,7 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
1002
1087
|
if (allReviewed) {
|
|
1003
1088
|
if (existsInReview) {
|
|
1004
1089
|
removeTransactionFromTabView(reviewTabView, txnId);
|
|
1090
|
+
reviewTabView.fullDatasetSnapshot = undefined;
|
|
1005
1091
|
}
|
|
1006
1092
|
return;
|
|
1007
1093
|
}
|
|
@@ -1048,11 +1134,13 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
1048
1134
|
reducer(draft, action) {
|
|
1049
1135
|
const { transactionId } = action.payload;
|
|
1050
1136
|
for (const tab of TRANSACTIONS_TABS) {
|
|
1051
|
-
|
|
1137
|
+
const tabView = draft.transactionCategorizationView[tab];
|
|
1138
|
+
removeTransactionFromTabView(tabView, transactionId);
|
|
1139
|
+
tabView.fullDatasetSnapshot = undefined;
|
|
1052
1140
|
}
|
|
1053
1141
|
},
|
|
1054
1142
|
},
|
|
1055
1143
|
},
|
|
1056
1144
|
});
|
|
1057
|
-
export const { fetchTransactionCategorization, updateTransactionCategorizationUIState, updateTransactionFilters, initializeTransactionCategorizationViewLocalData, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdateForCategorization, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, setAllItemsToCategoryClassInLocalDataForCategorization, updateTotalCountForTransactionCategorization, updateParentTotalCountForTab, fetchTransactionCategorizationSuccess, resetOtherTabsFetchState, fetchTransactionCategorizationView, updateSelectedCheckboxTransactionIds, clearExpenseAutomationTransactionsViewPerTabView, clearExpenseAutomationTransactionsView, setEntityRecommendationForLineIdsForCategorization, markCategoryClassRecommendationsInProgressForCategorization, markCategoryClassRecommendationsCompletedForCategorization, markCategoryClassRecommendationsFailureForCategorization, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, removeTransactionFromAllTabs, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, } = expenseAutomationTransactionsView.actions;
|
|
1145
|
+
export const { fetchTransactionCategorization, updateTransactionCategorizationUIState, updateTransactionFilters, initializeTransactionCategorizationViewLocalData, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdateForCategorization, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, setAllItemsToCategoryClassInLocalDataForCategorization, updateTotalCountForTransactionCategorization, updateParentTotalCountForTab, fetchTransactionCategorizationSuccess, resetOtherTabsFetchState, restoreFullDatasetSnapshot, fetchTransactionCategorizationView, updateSelectedCheckboxTransactionIds, clearExpenseAutomationTransactionsViewPerTabView, clearExpenseAutomationTransactionsView, setEntityRecommendationForLineIdsForCategorization, markCategoryClassRecommendationsInProgressForCategorization, markCategoryClassRecommendationsCompletedForCategorization, markCategoryClassRecommendationsFailureForCategorization, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, removeTransactionFromAllTabs, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, } = expenseAutomationTransactionsView.actions;
|
|
1058
1146
|
export default expenseAutomationTransactionsView.reducer;
|
|
@@ -111,7 +111,11 @@ const setupView = createSlice({
|
|
|
111
111
|
saveSetupViewDataInLocalStore(draft, action) {
|
|
112
112
|
const setupViewLocalData = action.payload;
|
|
113
113
|
if (setupViewLocalData.companyDetails != null) {
|
|
114
|
-
|
|
114
|
+
const syncToken = setupViewLocalData.companyDetails.syncToken ?? draft.companyDetails.localData?.syncToken;
|
|
115
|
+
draft.companyDetails.localData = {
|
|
116
|
+
...setupViewLocalData.companyDetails,
|
|
117
|
+
...(syncToken != null ? { syncToken } : {}),
|
|
118
|
+
};
|
|
115
119
|
}
|
|
116
120
|
if (setupViewLocalData.primaryContactDetails != null) {
|
|
117
121
|
draft.primaryContactDetails.localData =
|
|
@@ -28,7 +28,6 @@ export const initializeTaskToLocalStoreEpic = (actions$, state$) => actions$.pip
|
|
|
28
28
|
recurringStartDate: task.recurringStartDate,
|
|
29
29
|
timeSpent: task.timeSpent,
|
|
30
30
|
isPrivate: task.isPrivate,
|
|
31
|
-
taskGroupId: task.taskGroupIds[0],
|
|
32
31
|
};
|
|
33
32
|
const actions = [
|
|
34
33
|
saveTaskUpdatesToLocalStore({ taskDetailLocalData, taskId }),
|
|
@@ -12,17 +12,9 @@ export const saveTaskDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe(f
|
|
|
12
12
|
const { taskId, taskGroupId } = action.payload;
|
|
13
13
|
const state = state$.value;
|
|
14
14
|
const isTaskListFetched = state.taskListState.fetchState === 'Completed';
|
|
15
|
-
// For an edit, prefer the locally-edited group (Bug 12). If absent,
|
|
16
|
-
// fall back to the entity's current group. For a create, use the
|
|
17
|
-
// taskGroupId from the action payload.
|
|
18
|
-
const localTaskGroupId = taskId != null
|
|
19
|
-
? state.taskDetailState.editTaskStateById[taskId]?.taskDetailLocalData
|
|
20
|
-
.taskGroupId
|
|
21
|
-
: undefined;
|
|
22
15
|
const updatedTaskGroupId = taskId == null
|
|
23
16
|
? taskGroupId
|
|
24
|
-
: (
|
|
25
|
-
getTaskById(state.taskState, taskId)?.taskGroupIds[0]);
|
|
17
|
+
: getTaskById(state.taskState, taskId)?.taskGroupIds[0];
|
|
26
18
|
const payload = prepareTaskPayload(state, taskId, updatedTaskGroupId);
|
|
27
19
|
const saveTaskApi = taskId != null
|
|
28
20
|
? zeniAPI.putAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks/${taskId}`, payload)
|
|
@@ -151,8 +151,7 @@ const showFormFooter = (taskDetailLocalData, taskDetailInStore) => {
|
|
|
151
151
|
!isEqual(taskDetailLocalData.recurringFrequency, taskDetailInStore.recurringFrequency) ||
|
|
152
152
|
!isEqual(taskDetailLocalData.recurringDaysOfWeek, taskDetailInStore.recurringDaysOfWeek) ||
|
|
153
153
|
!isEqual(taskDetailLocalData.recurringStartDate, taskDetailInStore.recurringStartDate) ||
|
|
154
|
-
!isEqual(taskDetailLocalData.timeSpent, taskDetailInStore.timeSpent)
|
|
155
|
-
!isEqual(taskDetailLocalData.taskGroupId, taskDetailInStore.taskGroupIds[0])) {
|
|
154
|
+
!isEqual(taskDetailLocalData.timeSpent, taskDetailInStore.timeSpent)) {
|
|
156
155
|
return true;
|
|
157
156
|
}
|
|
158
157
|
return false;
|
package/lib/index.d.ts
CHANGED
|
@@ -563,7 +563,6 @@ import { CannedResponse, CannedResponsesViewState } from './view/taskManager/can
|
|
|
563
563
|
import { deleteCannedResponse, fetchCannedResponses, saveCannedResponse } from './view/taskManager/cannedResponsesView/cannedResponsesReducer';
|
|
564
564
|
import { getCannedResponsesView } from './view/taskManager/cannedResponsesView/cannedResponsesSelector';
|
|
565
565
|
import { EditTaskLocalData, initialTaskDetail, initialTaskDetailLocalData } from './view/taskManager/taskDetailView/taskDetail';
|
|
566
|
-
import { sendCommentMentionNotification } from './view/taskManager/taskDetailView/epics/sendCommentMentionNotificationEpic';
|
|
567
566
|
import { archiveTask, deleteTask, discardTaskUpdatesInLocalStore, fetchTaskDetailPage, saveTaskDetail, saveTaskUpdatesToLocalStore, snoozeTask, unsnoozeTask } from './view/taskManager/taskDetailView/taskDetailReducer';
|
|
568
567
|
import { TaskDetailSelectorView, allTaskPriority, allTaskStatus, getTaskDetail } from './view/taskManager/taskDetailView/taskDetailSelector';
|
|
569
568
|
import { createTaskFromTaskGroupTemplate } from './view/taskManager/taskGroupTemplateView/taskGroupTemplateViewReducer';
|
|
@@ -893,7 +892,7 @@ export { fetchGlobalMerchantRecommendation, createGlobalMerchant, updateCreateGl
|
|
|
893
892
|
export { approveVendorGlobalReview, rejectVendorGlobalReview, fetchVendorGlobalReviewView, updateSelectedGlobalMerchant, updateVendorGlobalReviewViewUIState, getVendorGlobalReviewView, getTenantMerchantByMerchantId, toVendorGlobalReviewColumnSortKeyType, VendorGlobalReview, VendorGlobalReviewViewUIState, VendorGlobalReviewViewColumnSortKey, VendorGlobalReviewViewSelectorView, VendorGlobalReviewViewState, VendorGlobalReviewViewLocalData, updateVendorGlobalReviewViewLocalData, GlobalReviewPageCurrentSelectionByColumn, GlobalRecommendationFetchSource, };
|
|
894
893
|
export { fetchArAging, updateArAgingUIState, fetchArAgingDetail, updateArAgingDetailUIState, ArAgingReport, ArAgingDetail, NestedAgingBalancesByCustomer, getArAgingReport, getArAgingDetailForCustomer, updateArAgingNodeCollapseState, };
|
|
895
894
|
export { toRecurringBillFrequency, toRecurringBillFrequencyStrict, RecurringBillFrequency, RecurringBillDetail, RecurringBillConfig, RecurringBillStatus, RecurringBillPaymentStatus, };
|
|
896
|
-
export { Task, TaskPayload, TaskListSelectorView, TaskWithUserDetails, TaskListViewSortKey, TaskListUIState, TaskDetailSelectorView, EditTaskLocalData, TaskStatusCodeType, PriorityCodeType, getTaskGroupById, TaskStatus, TaskPriority, TaskCodeType, getAllTasks, fetchTaskListPage, getTaskDetail, fetchTaskDetailPage, saveTaskUpdatesToLocalStore, saveTaskDetail, archiveTask, CannedResponse, CannedResponsesViewState, fetchCannedResponses, saveCannedResponse, deleteCannedResponse, getCannedResponsesView, updateTaskListSearchText, updateTaskListUIState, allTaskStatus, allTaskPriority, TaskListFilters, updateTaskFilters, TASK_LIST_FILTER_CATEGORIES, TASK_LIST_GROUP_BY_CATEGORIES, TaskListFilterCategoryField, deleteTask, discardTaskUpdatesInLocalStore, TaskFilterCategory, TaskType, TaskGroupWithTasksList, TaskListLocalData, bulkUpdateTaskList, createNewTaskGroup, initiateTaskListLocalData, deleteTaskGroup, updateTaskListLocalData, dragNDropTasks, updateTaskGroupName, TaskGroupState, TaskGroupKey, toTaskListGroupByKeyType, toTaskListGroupByKeyTypeStrict, getTaskUpdates, fetchAllTaskGroups, initialTaskDetail, getDueDateValueFromDueDateGroupId, toPriorityCodeType, toTaskStatusCodeType, DueDateGroupKey, toDueDateGroupKeyType, updateTaskFromListView, updateTaskListTab, removeTaskFromList,
|
|
895
|
+
export { Task, TaskPayload, TaskListSelectorView, TaskWithUserDetails, TaskListViewSortKey, TaskListUIState, TaskDetailSelectorView, EditTaskLocalData, TaskStatusCodeType, PriorityCodeType, getTaskGroupById, TaskStatus, TaskPriority, TaskCodeType, getAllTasks, fetchTaskListPage, getTaskDetail, fetchTaskDetailPage, saveTaskUpdatesToLocalStore, saveTaskDetail, archiveTask, CannedResponse, CannedResponsesViewState, fetchCannedResponses, saveCannedResponse, deleteCannedResponse, getCannedResponsesView, updateTaskListSearchText, updateTaskListUIState, allTaskStatus, allTaskPriority, TaskListFilters, updateTaskFilters, TASK_LIST_FILTER_CATEGORIES, TASK_LIST_GROUP_BY_CATEGORIES, TaskListFilterCategoryField, deleteTask, discardTaskUpdatesInLocalStore, TaskFilterCategory, TaskType, TaskGroupWithTasksList, TaskListLocalData, bulkUpdateTaskList, createNewTaskGroup, initiateTaskListLocalData, deleteTaskGroup, updateTaskListLocalData, dragNDropTasks, updateTaskGroupName, TaskGroupState, TaskGroupKey, toTaskListGroupByKeyType, toTaskListGroupByKeyTypeStrict, getTaskUpdates, fetchAllTaskGroups, initialTaskDetail, getDueDateValueFromDueDateGroupId, toPriorityCodeType, toTaskStatusCodeType, DueDateGroupKey, toDueDateGroupKeyType, updateTaskFromListView, updateTaskListTab, removeTaskFromList, snoozeTask, unsnoozeTask, convertHHMMStrToMinutes, initialTaskDetailLocalData, TaskListTab, ALL_TASK_LIST_TABS, };
|
|
897
896
|
export { Tag, TagState, TagViewState, getAllTags, TagViewSelectorView, fetchTagList, createTag, deleteTag, };
|
|
898
897
|
export { CardPayment, CardPaymentViewState, SetupIntentData, CardPaymentSelectorView, getAllCardsAndBankPaymentMethods, createCardSetupIntent, confirmCardSetupIntent, addCardPaymentSource, fetchPaymentSources, resetCardPaymentErrorStatuses, clearCardPaymentView, AddCardPaymentSourceType, };
|
|
899
898
|
export { getAuditReportGroupViewSelectorView, getAuditRuleGroupViewSelectorView, getUserFromAllUsers, AuditReportGroupSelectorView, AuditReportGroupViewSelectorView, AuditRuleGroupViewSelectorView, fetchAuditRuleGroupView, fetchAuditReportGroupView, saveReasonForAuditRule, AuditRuleGroup, AuditRuleGroupReport, AuditReportRule, AuditRuleEntityType, AuditRuleEntityIdType, AuditRuleBypassReason, clearAuditReportGroupViewByCompanyId, };
|
package/lib/index.js
CHANGED
|
@@ -68,14 +68,14 @@ exports.startDebitCardSetPinWait = exports.completeDebitCardSetPinWait = exports
|
|
|
68
68
|
exports.fetchScheduleAccruedDetails = exports.cancelScheduleAccruedJournalEntry = exports.deleteScheduleAccruedDetail = exports.createNewSchedulesAccrued = exports.updateJeScheduleTransactionKeys = exports.updateJeScheduleLocalDataById = exports.updateExpenseAutomationJESchedulesUIState = exports.retryExpenseAutomationJESchedule = exports.removeJeScheduleTransactionKey = exports.initializeJeScheduleLocalData = exports.initializeJeAccountSettingsView = exports.ignoreExpenseAutomationJESchedule = exports.fetchExpenseAutomationJESchedulesPage = exports.clearExpenseAutomationJESchedulesView = exports.clearExpenseAutomationJEScheduleLocalData = exports.updateApAgingDetailUIState = exports.getApAgingDetailForVendor = exports.fetchApAgingDetail = exports.updateApAgingUIState = exports.getApAgingReport = exports.fetchApAging = exports.aggregatedReportView = exports.fetchAggregatedReport = exports.toTimeSeriesDuration = exports.convertToTimeSeriesSelectionRange = exports.TIME_SERIES_DURATIONS = exports.anyCardOnHold = exports.getChargeCardById = exports.setCurrentDisplayedCardId = exports.setFirstViewCompleteAfterActivation = exports.setFirstViewAfterActivation = exports.completeCardUserOnboardingActivationWait = exports.startCardUserOnboardingActivationWait = exports.fetchChargeCardsRecurringExpenses = exports.updateChargeCardsSpendLimit = exports.closeChargeCards = exports.unlockChargeCards = exports.lockChargeCards = exports.revokeChargeCardsInvite = exports.updateRowActionCardId = exports.revokeCardInvite = exports.resendCardInvite = exports.updateChargeCardSpendLimitSuccessOrFailure = exports.updateChargeCardSpendLimit = exports.startCVVActivationWait = exports.completeCVVActivationWait = exports.fetchChargeCardTransactionAttachments = exports.updateChargeCardTransactionIsViewReceiptClicked = exports.updateChargeCardTransactionReceiptsShowTickFetchStatus = exports.updateDebitCardPinAttempt = void 0;
|
|
69
69
|
exports.getFetchStateForScheduleListByType = exports.updatedJELinkWithRecommendedLocalData = exports.resetJELinkInLocalData = exports.updateAmountsInScheduleDetail = exports.updatedJELinkInLocalData = exports.getThirdPartyIDFromQBOURL = exports.getQBOUrlForLink = exports.updatedSelectedJELinkRowIndex = exports.updateAccruedJEScheduleAccruedByListKey = exports.updateScheduleListDownloadState = exports.updateScheduleDetailsLocalData = exports.createNewSchedules = exports.deleteScheduleDetail = exports.saveScheduleDetails = exports.fetchScheduleDetailsPage = exports.getAccruedScheduleDetailsView = exports.getScheduleDetailsView = exports.fetchScheduleDetails = exports.updateSelectedJEScheduleKey = exports.updateScheduleListSortState = exports.updateScheduleListScrollState = exports.updateScheduleListSearchText = exports.updateScheduleListSubTab = exports.toScheduleSubTabType = exports.toScheduleListTabsFileTypeStrict = exports.toScheduleTypesTypeStrict = exports.toScheduleTypesType = exports.getFetchStateForScheduleAccountList = exports.updateScheduleListLocalData = exports.fetchSchedulesAccount = exports.fetchDownloadSchedules = exports.fetchAccruedScheduleList = exports.fetchScheduleList = exports.getAccruedScheduleListReport = exports.getScheduleListReport = exports.ALL_SCHEDULES_TYPES = exports.getJEScheduleTransactionKey = exports.resetAccruedDetailNewScheduleState = exports.resetSelectedJEAccruedScheduleKey = exports.updateSelectedJEAccruedScheduleKey = exports.updateScheduleAccruedDetailsLocalData = exports.updateLinkBillExpenseLocalData = exports.clearSelectedJELinkRowIndex = exports.fetchRecommendedTransactionRowIndex = exports.updatedJELinkInLocalDataAccruedExpenses = exports.updatedJEAccruedLinkWithRecommendedLocalData = exports.updateAmountsInScheduleAccruedDetail = exports.saveScheduleAccruedDetails = exports.resetJEAccruedLinkInLocalData = exports.fetchScheduleAccruedDetailsPage = void 0;
|
|
70
70
|
exports.fetchTaskListPage = exports.getAllTasks = exports.getTaskGroupById = exports.toRecurringBillFrequencyStrict = exports.toRecurringBillFrequency = exports.updateArAgingNodeCollapseState = exports.getArAgingDetailForCustomer = exports.getArAgingReport = exports.updateArAgingDetailUIState = exports.fetchArAgingDetail = exports.updateArAgingUIState = exports.fetchArAging = exports.updateVendorGlobalReviewViewLocalData = exports.toVendorGlobalReviewColumnSortKeyType = exports.getTenantMerchantByMerchantId = exports.getVendorGlobalReviewView = exports.updateVendorGlobalReviewViewUIState = exports.updateSelectedGlobalMerchant = exports.fetchVendorGlobalReviewView = exports.rejectVendorGlobalReview = exports.approveVendorGlobalReview = exports.getGlobalMerchantView = exports.clearGlobalMerchantView = exports.updateCreateGlobalMerchantLocalData = exports.createGlobalMerchant = exports.fetchGlobalMerchantRecommendation = exports.getVendorDetailSelectorView = exports.saveVendorDetailsView = exports.updateReviewVendorDetailLocalData = exports.clearGlobalMerchantAutoCompleteResults = exports.fetchGlobalMerchantAutoCompleteView = exports.updateVendorFirstReviewSortUiState = exports.updateVendorFirstReviewViewLocalData = exports.saveVendorFirstReviewView = exports.clearRecentlySavedErroredVendorData = exports.updateVendorFirstReviewViewPageToken = exports.resetVendorFirstReviewLocalData = exports.updateVendorFirstReviewViewScrollYOffset = exports.fetchVendorFirstReviewAttachments = exports.fetchVendorFirstReviewView = exports.getVendorFirstReviewAttachmentView = exports.getVendorFirstReviewView = exports.getGlobalMerchantAutoCompleteResults = exports.toVendorFirstReviewViewColumnKeyType = exports.getVendorTabView = exports.updateVendorTabViewTab = exports.fetchVendorTabView = exports.resetMarkAsCompleteStatus = exports.markAsCompleteScheduleDetail = exports.getDefaultSelectedTimeframeForScheduleType = void 0;
|
|
71
|
-
exports.confirmCardSetupIntent = exports.createCardSetupIntent = exports.getAllCardsAndBankPaymentMethods = exports.deleteTag = exports.createTag = exports.fetchTagList = exports.getAllTags = exports.ALL_TASK_LIST_TABS = exports.initialTaskDetailLocalData = exports.convertHHMMStrToMinutes = exports.unsnoozeTask = exports.snoozeTask = exports.
|
|
72
|
-
exports.getNotifications = exports.getLastNotificationTime = exports.pushToastNotification = exports.isFeatureInterestRegistered = exports.getRegisteredInterestsByFeature = exports.getRegisteredInterests = exports.getFeatureNotificationView = exports.notifyMeForFeature = exports.fetchRegisteredInterests = exports.clearFeatureNotificationView = exports.getNotificationsForSelectedSubTab = exports.getExternalNotificationsForSelectedSubTab = exports.getNotificationView = exports.updateNotificationViewUIState = exports.updateNotificationViewSubTab = exports.updateNotificationViewCurrentTabAndSubTab = exports.updateNotificationViewTabState = exports.updateNotificationViewNotificationStatus = exports.updateNotificationViewAllNotificationsStatus = exports.fetchNotificationUnreadCountSuccess = exports.fetchNotificationUnreadCount = exports.fetchNotificationView = exports.toNotificationTabTypeStrict = exports.toNotificationSubTabTypeStrict = exports.updateCommentsNotificationsStatuses = exports.updateCommentsNotifications = exports.toNotificationModeStrict = exports.parseOAuthParams = exports.getZeniOAuthApproveRedirectUrl = exports.getZeniOAuthApproveFetchState = exports.getZeniOAuthApproveError = exports.clearZeniOAuthView = exports.approveOAuthConsentSuccess = exports.approveOAuthConsentFailure = exports.approveOAuthConsent = exports.fetchZeniAccountsPromoCard = exports.getZeniAccountsPromoCard = exports.getAuthenticationView = exports.fetchCollaborationAuthToken = exports.clearAuditReportGroupViewByCompanyId = exports.saveReasonForAuditRule = exports.fetchAuditReportGroupView = exports.fetchAuditRuleGroupView = exports.getUserFromAllUsers = exports.getAuditRuleGroupViewSelectorView = exports.getAuditReportGroupViewSelectorView = exports.clearCardPaymentView = exports.resetCardPaymentErrorStatuses = exports.fetchPaymentSources =
|
|
73
|
-
exports.toAiAccountantOperationType = exports.toAiAccountantJobStatus = exports.toAiAccountantEnrollmentStatus = exports.getAllowedOperationsForStatus = exports.getTreasuryFundsMaximumYield = exports.getTreasurySetupViewDetails = exports.updateTreasuryVideoViewed = exports.updateTreasuryPromoRemindMeLaterClicked = exports.updateTreasuryPromoIntroClosedByOutsideClick = exports.updateFundAllocationLocalData = exports.fetchPortfolioAllocation = exports.updatePortfolioAllocation = exports.fetchTreasuryFunds = exports.clearTreasurySetupView = exports.fetchTreasurySetupView = exports.acceptTreasuryTerms = exports.getExpressPayView = exports.resetExpressPayLocalData = exports.submitExpressPay = exports.updateExpressPayFormLocalData = exports.fetchExpressPayInitialDetails = exports.getIntlWireVerificationView = exports.updateVerificationFormLocalData = exports.submitInternationalVerificationForm = exports.fetchInternationalVerificationForm = exports.createTaskFromTaskGroupTemplate = exports.getCompanyTaskManagerView = exports.fetchTaskManagerMetrics = exports.fetchCompanyTaskManagerView = exports.fetchCockpitContext = exports.toRecurringFrequency = exports.toDayOfWeek = exports.getRecurringEndDateFromCount = exports.getMinAllowedEndDate = exports.SEMI_WEEKLY_REQUIRED_DAYS_COUNT = exports.ALL_WEEK_DAYS = exports.updateReferViewed = exports.getRewardsPlanCard = exports.fetchRewardsPlan = exports.resendReferralInvite = exports.updateReferralListSortUiState = exports.saveReferralFormDataInLocalStore = exports.clearReferrals = exports.sendReferralInvite = exports.fetchReferrals = exports.AmountStatusTypes = exports.StatusTypes = exports.toReferralListViewSortKeyType = exports.getInviteFormView =
|
|
74
|
-
exports.clearSession = exports.addQuestionPayload = exports.upsertOrAddQuestionAnswerPayload = exports.upsertAnswerPayload = exports.updateAiCfoAnswerCardPolicyWizardPlan = exports.setSessions = exports.setNewSession = exports.getSuggestedQuestionsForPageContext = exports.getAiCfoView = exports.clearAiCfoSidePanelHostPageContext = exports.applyAiCfoSidePanelHostPageTransition = exports.fetchSuggestedQuestionsFailure = exports.fetchSuggestedQuestionsSuccess = exports.fetchSuggestedQuestions = exports.updateResponseState = exports.deleteChatSession = exports.acceptMasterTOS = exports.fetchChatHistory = exports.stopSubmitQuestion = exports.stopSubmit = exports.createSessionAndSubmit = exports.clearLastContextMessage = exports.clearDeleteChatSessionStatus = exports.clearCurrentSessionId = exports.clearAiCfoView = exports.setSession = exports.clearInput = exports.updateCotCollapsedState = exports.updateCurrentInput = exports.updateAiCfoViewScrollPosition = exports.submitQuestion = exports.createSession = exports.fetchChatSessionsForUser = exports.getAiAccountantCockpitView = exports.updateAiAccountantUIState = exports.triggerAiAccountantJob = exports.setSelectedTenantIdsForJobTrigger = exports.fetchAiAccountantJobs = exports.fetchAiAccountantCustomers = exports.clearAiAccountantView = exports.cancelAiAccountantOnboarding = exports.getAiAccountantJobsByTenantId = exports.getAiAccountantCustomers = exports.updateAiAccountantJobs = exports.updateAiAccountantCustomer = exports.updateAiAccountantCustomers = exports.clearAllAiAccountantCustomers = exports.toAiAccountantJob = exports.toAiAccountantEnrollment =
|
|
75
|
-
exports.getCardPolicyMccCategories = exports.getAllCardPolicyTemplates = exports.clearCardPolicy = exports.updatePolicyRecommendationFromUploadSuccess = exports.updatePolicyRecommendationFromUploadFailure = exports.updatePolicyDocumentExtractionSuccess = exports.updatePolicyDocumentExtractionFailure = exports.updateCreatedCardPolicyTemplate = exports.updateCardPolicyVendorOptionsFailure = exports.updateCardPolicyVendorOptions = exports.updateCardPolicyTemplates = exports.updateCardPolicyStats = exports.updateCardPolicyMccCategoriesFailure = exports.updateCardPolicyMccCategories = exports.removeCardPolicyTemplate = exports.fetchCardPolicyVendorOptions = exports.fetchCardPolicyRecommendationFromUpload = exports.fetchCardPolicyMccCategories = exports.extractPolicyDocument = exports.clearPolicyDocumentExtraction = exports.toMessageType = exports.toMessageSender = exports.ALL_SYNTHETIC_AI_CFO_ANSWER_KINDS = exports.toInteractiveFormTypeStrict = exports.toInteractiveFormType = exports.toAiCfoAnswerResponseTypeStrict = exports.toAiCfoAnswerResponseType = exports.toAiCfoAnswerStateTypeStrict = exports.toAiCfoAnswerStateType = exports.toAiCfoChartTypeStrict = exports.toAiCfoChartType = exports.toAiCfoVisualizationTypeStrict = exports.toAiCfoVisualizationType = exports.ALL_INTERACTIVE_FORM_TYPES = exports.ALL_AI_CFO_ANSWER_RESPONSE_TYPES = exports.ALL_AI_CFO_ANSWER_STATE_TYPES = exports.ALL_AI_CFO_VISUALIZATION_TYPES = exports.ALL_AI_CFO_CHARTS_TYPES = exports.getSyntheticAiCfoAnswerByQuestionAnswerId = exports.getSyntheticAiCfoAnswersForChatSession = exports.getAiCfoSelectorView = exports.getAllQuestionsForChatSession = exports.getQuestionAnswerByIdForChatSession = exports.getAllQuestionAnswersForChatSession = exports.clearSyntheticAiCfoAnswers = exports.removeSyntheticAiCfoAnswer = exports.updateSyntheticAiCfoAnswer = exports.appendSyntheticAiCfoAnswer = exports.toAiCfoVisualization =
|
|
76
|
-
exports.getLastCreateCardPolicyTemplateErrors = exports.getLastCreateCardPolicySourceChatSessionId = exports.getCreateCardPolicyTemplateRequestState = exports.getAiCardPolicyFormDraft = exports.updateManualCardPolicyFormDraft = exports.updateCreateCardPolicyTemplateRequestState = exports.updateAiCardPolicyFormDraftFromUploadPlan = exports.updateAiCardPolicyFormDraft = exports.seedManualCardPolicyFormDraft = exports.seedAiCardPolicyFormDraft = exports.createCardPolicyTemplates = exports.clearManualCardPolicyFormDraft = exports.clearCreateCardPolicy = exports.clearAiCardPolicyFormDraft = exports.applyExtractedPolicyToManualCardPolicyDraft = exports.applyExtractedPolicyToAiCardPolicyDraft = exports.toUpdateCardPolicyTemplateRequestBody = exports.toExtractedCardPolicyRules = exports.toCreateCardPolicyTemplatesRequestBody = exports.toCreateCardPolicyTemplateRequestBody = exports.toCardPolicyVendorSearchOption = exports.toCardPolicyTemplateList = exports.toCardPolicyTemplate = exports.toCardPolicyStats = exports.toCardPolicyEditFormDraft = exports.toBulkCreateCardPolicyTemplateError = exports.toCardPolicyTemplateStatus = exports.toCardPolicyTemplateMode = exports.ALL_CARD_POLICY_TEMPLATE_STATUSES = exports.ALL_CARD_POLICY_TEMPLATE_MODES = exports.getUploadedPolicyDocumentFileName = exports.getPolicyRecommendationFromUploadFetchState = exports.getPolicyRecommendationFromUploadError = exports.getPolicyRecommendationFromUploadChatSessionId = exports.getPolicyRecommendationFromUploadAnswerId = exports.getPolicyDocumentExtractionFetchState = exports.getPolicyDocumentExtractionError = exports.getExtractedCardPolicyRules = exports.getCardPolicyVendorSearchString = exports.getCardPolicyVendorSearchOptions = exports.getCardPolicyVendorSearchFetchState = exports.getCardPolicyTemplatesByIds = exports.getCardPolicyTemplateById = exports.getCardPolicySuggestedBlockMerchants = exports.getCardPolicySuggestedBlockCategories = exports.getCardPolicySuggestedAllowMerchants = exports.getCardPolicySuggestedAllowCategories = exports.getCardPolicyStats = exports.getCardPolicyMccCategoriesFetchState =
|
|
77
|
-
exports.fetchTreasuryStatementList = exports.getTreasuryTransferMoney = exports.clearTreasuryTransferMoney = exports.updateTreasuryTransferMoneyLocalData = exports.executeTreasuryTransferMoney = exports.getTreasuryDetail = exports.updateTreasuryTransactionListUIState = exports.fetchTreasuryTransactionList = exports.fetchTreasuryOverviewDetail = exports.getUpdateCardPolicyFetchState = exports.getCardPolicyFormDraft = exports.getCardPolicyDetailView = exports.getCardPolicyDetailFetchState = exports.updateCardPolicyFormDraft = exports.updateCardPolicyFetchStatus = exports.updateCardPolicyDetailFetchStatus = exports.updateCardPolicy = exports.fetchCardPolicyDetail = exports.clearCardPolicyDetail = exports.getCardPolicyTemplateIds = exports.getCardPolicyListView = exports.getCardPolicyListFetchState = exports.getArchiveCardPolicyFetchState = exports.updateCardPolicyListFetchStatus = exports.updateArchiveCardPolicyFetchStatus = exports.prependCardPolicyTemplateIds = exports.fetchCardPolicyList = exports.clearCardPolicyList = exports.archiveCardPolicy = exports.toManualCardPolicyTemplateRequestFromDraft = exports.toBulkCardPolicyTemplateRequestsFromDraft = exports.toCardPolicyTemplateRequestFromDraft = exports.applyAiCardPolicyFormDraftUpdate = exports.deriveAiPolicyReviewRowsFromInputs = exports.buildManualCardPolicyFormDraftSeed = exports.buildUploadReviewRows = exports.buildEmptyLimitRows = exports.buildAiCardPolicyFormDraftSeed = exports.toVendorChipFieldValue = exports.toMccCategoryChipFieldValue = exports.buildVendorChipId = exports.buildMccCategoryChipId = exports.VENDOR_CHIP_ID_PREFIX = exports.MCC_CHIP_ID_PREFIX = exports.toMccCategoryLike = exports.CARD_POLICY_LIMIT_ROW_ID_TRANSACTION = exports.CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT = exports.getManualCardPolicyFormDraft = exports.getLastCreatedCardPolicyTemplateIds =
|
|
78
|
-
exports.getCashManagementOverviewBanner = exports.getCashManagementOverview = exports.bufferAmountToRisk = exports.RISK_BUFFER_AMOUNT = exports.getAutoSweepFlow = exports.updateCashManagementSettingsFetchStatus = exports.updateCashManagementSettings = exports.updateAutoSweepSettingsFetchStatus = exports.updateAutoSweepRisk = exports.updateAutoSweepDraft = exports.saveAutoSweepSettings = exports.clearAutoSweepFlow = exports.fetchCashManagementOverviewPage = exports.fetchCashManagementBanner = exports.toKycProvidedDocumentTypeFromAllowed = exports.toKycProvidedDocumentType = exports.DEFAULT_SESSION_CONFIG = exports.SessionManager = exports.getTransactionActivityLogView = exports.fetchTransactionActivityLog = exports.BULK_UPLOAD_BAR_COMPLETE_HOLD_MS = exports.BULK_UPLOAD_AUTOMATCHING_TIMEOUT_MS = exports.getAutoTransferRuleHistory = exports.getAutoTransferRuleById = exports.getAutoTransferRules = exports.clearRuleUpdateLocalData = exports.updateRuleLocalData = exports.fetchAutoTransferReviewDetail = exports.fetchAutoTransferRuleHistory = exports.deleteAutoTransferRule = exports.updateAutoTransferRule = exports.createAutoTransferRule = exports.fetchAutoTransferRules = exports.getTreasuryTaxLetters = exports.fetchTreasuryTaxLetterList =
|
|
71
|
+
exports.addCardPaymentSource = exports.confirmCardSetupIntent = exports.createCardSetupIntent = exports.getAllCardsAndBankPaymentMethods = exports.deleteTag = exports.createTag = exports.fetchTagList = exports.getAllTags = exports.ALL_TASK_LIST_TABS = exports.initialTaskDetailLocalData = exports.convertHHMMStrToMinutes = exports.unsnoozeTask = exports.snoozeTask = exports.removeTaskFromList = exports.updateTaskListTab = exports.updateTaskFromListView = exports.toDueDateGroupKeyType = exports.toTaskStatusCodeType = exports.toPriorityCodeType = exports.getDueDateValueFromDueDateGroupId = exports.initialTaskDetail = exports.fetchAllTaskGroups = exports.getTaskUpdates = exports.toTaskListGroupByKeyTypeStrict = exports.toTaskListGroupByKeyType = exports.updateTaskGroupName = exports.dragNDropTasks = exports.updateTaskListLocalData = exports.deleteTaskGroup = exports.initiateTaskListLocalData = exports.createNewTaskGroup = exports.bulkUpdateTaskList = exports.discardTaskUpdatesInLocalStore = exports.deleteTask = exports.TASK_LIST_GROUP_BY_CATEGORIES = exports.TASK_LIST_FILTER_CATEGORIES = exports.updateTaskFilters = exports.allTaskPriority = exports.allTaskStatus = exports.updateTaskListUIState = exports.updateTaskListSearchText = exports.getCannedResponsesView = exports.deleteCannedResponse = exports.saveCannedResponse = exports.fetchCannedResponses = exports.archiveTask = exports.saveTaskDetail = exports.saveTaskUpdatesToLocalStore = exports.fetchTaskDetailPage = exports.getTaskDetail = void 0;
|
|
72
|
+
exports.getReferralListView = exports.getNotifications = exports.getLastNotificationTime = exports.pushToastNotification = exports.isFeatureInterestRegistered = exports.getRegisteredInterestsByFeature = exports.getRegisteredInterests = exports.getFeatureNotificationView = exports.notifyMeForFeature = exports.fetchRegisteredInterests = exports.clearFeatureNotificationView = exports.getNotificationsForSelectedSubTab = exports.getExternalNotificationsForSelectedSubTab = exports.getNotificationView = exports.updateNotificationViewUIState = exports.updateNotificationViewSubTab = exports.updateNotificationViewCurrentTabAndSubTab = exports.updateNotificationViewTabState = exports.updateNotificationViewNotificationStatus = exports.updateNotificationViewAllNotificationsStatus = exports.fetchNotificationUnreadCountSuccess = exports.fetchNotificationUnreadCount = exports.fetchNotificationView = exports.toNotificationTabTypeStrict = exports.toNotificationSubTabTypeStrict = exports.updateCommentsNotificationsStatuses = exports.updateCommentsNotifications = exports.toNotificationModeStrict = exports.parseOAuthParams = exports.getZeniOAuthApproveRedirectUrl = exports.getZeniOAuthApproveFetchState = exports.getZeniOAuthApproveError = exports.clearZeniOAuthView = exports.approveOAuthConsentSuccess = exports.approveOAuthConsentFailure = exports.approveOAuthConsent = exports.fetchZeniAccountsPromoCard = exports.getZeniAccountsPromoCard = exports.getAuthenticationView = exports.fetchCollaborationAuthToken = exports.clearAuditReportGroupViewByCompanyId = exports.saveReasonForAuditRule = exports.fetchAuditReportGroupView = exports.fetchAuditRuleGroupView = exports.getUserFromAllUsers = exports.getAuditRuleGroupViewSelectorView = exports.getAuditReportGroupViewSelectorView = exports.clearCardPaymentView = exports.resetCardPaymentErrorStatuses = exports.fetchPaymentSources = void 0;
|
|
73
|
+
exports.toAiAccountantCustomer = exports.toAiAccountantOperationType = exports.toAiAccountantJobStatus = exports.toAiAccountantEnrollmentStatus = exports.getAllowedOperationsForStatus = exports.getTreasuryFundsMaximumYield = exports.getTreasurySetupViewDetails = exports.updateTreasuryVideoViewed = exports.updateTreasuryPromoRemindMeLaterClicked = exports.updateTreasuryPromoIntroClosedByOutsideClick = exports.updateFundAllocationLocalData = exports.fetchPortfolioAllocation = exports.updatePortfolioAllocation = exports.fetchTreasuryFunds = exports.clearTreasurySetupView = exports.fetchTreasurySetupView = exports.acceptTreasuryTerms = exports.getExpressPayView = exports.resetExpressPayLocalData = exports.submitExpressPay = exports.updateExpressPayFormLocalData = exports.fetchExpressPayInitialDetails = exports.getIntlWireVerificationView = exports.updateVerificationFormLocalData = exports.submitInternationalVerificationForm = exports.fetchInternationalVerificationForm = exports.createTaskFromTaskGroupTemplate = exports.getCompanyTaskManagerView = exports.fetchTaskManagerMetrics = exports.fetchCompanyTaskManagerView = exports.fetchCockpitContext = exports.toRecurringFrequency = exports.toDayOfWeek = exports.getRecurringEndDateFromCount = exports.getMinAllowedEndDate = exports.SEMI_WEEKLY_REQUIRED_DAYS_COUNT = exports.ALL_WEEK_DAYS = exports.updateReferViewed = exports.getRewardsPlanCard = exports.fetchRewardsPlan = exports.resendReferralInvite = exports.updateReferralListSortUiState = exports.saveReferralFormDataInLocalStore = exports.clearReferrals = exports.sendReferralInvite = exports.fetchReferrals = exports.AmountStatusTypes = exports.StatusTypes = exports.toReferralListViewSortKeyType = exports.getInviteFormView = void 0;
|
|
74
|
+
exports.clearAiCfo = exports.clearSession = exports.addQuestionPayload = exports.upsertOrAddQuestionAnswerPayload = exports.upsertAnswerPayload = exports.updateAiCfoAnswerCardPolicyWizardPlan = exports.setSessions = exports.setNewSession = exports.getSuggestedQuestionsForPageContext = exports.getAiCfoView = exports.clearAiCfoSidePanelHostPageContext = exports.applyAiCfoSidePanelHostPageTransition = exports.fetchSuggestedQuestionsFailure = exports.fetchSuggestedQuestionsSuccess = exports.fetchSuggestedQuestions = exports.updateResponseState = exports.deleteChatSession = exports.acceptMasterTOS = exports.fetchChatHistory = exports.stopSubmitQuestion = exports.stopSubmit = exports.createSessionAndSubmit = exports.clearLastContextMessage = exports.clearDeleteChatSessionStatus = exports.clearCurrentSessionId = exports.clearAiCfoView = exports.setSession = exports.clearInput = exports.updateCotCollapsedState = exports.updateCurrentInput = exports.updateAiCfoViewScrollPosition = exports.submitQuestion = exports.createSession = exports.fetchChatSessionsForUser = exports.getAiAccountantCockpitView = exports.updateAiAccountantUIState = exports.triggerAiAccountantJob = exports.setSelectedTenantIdsForJobTrigger = exports.fetchAiAccountantJobs = exports.fetchAiAccountantCustomers = exports.clearAiAccountantView = exports.cancelAiAccountantOnboarding = exports.getAiAccountantJobsByTenantId = exports.getAiAccountantCustomers = exports.updateAiAccountantJobs = exports.updateAiAccountantCustomer = exports.updateAiAccountantCustomers = exports.clearAllAiAccountantCustomers = exports.toAiAccountantJob = exports.toAiAccountantEnrollment = void 0;
|
|
75
|
+
exports.getCardPolicyMccCategoriesError = exports.getCardPolicyMccCategories = exports.getAllCardPolicyTemplates = exports.clearCardPolicy = exports.updatePolicyRecommendationFromUploadSuccess = exports.updatePolicyRecommendationFromUploadFailure = exports.updatePolicyDocumentExtractionSuccess = exports.updatePolicyDocumentExtractionFailure = exports.updateCreatedCardPolicyTemplate = exports.updateCardPolicyVendorOptionsFailure = exports.updateCardPolicyVendorOptions = exports.updateCardPolicyTemplates = exports.updateCardPolicyStats = exports.updateCardPolicyMccCategoriesFailure = exports.updateCardPolicyMccCategories = exports.removeCardPolicyTemplate = exports.fetchCardPolicyVendorOptions = exports.fetchCardPolicyRecommendationFromUpload = exports.fetchCardPolicyMccCategories = exports.extractPolicyDocument = exports.clearPolicyDocumentExtraction = exports.toMessageType = exports.toMessageSender = exports.ALL_SYNTHETIC_AI_CFO_ANSWER_KINDS = exports.toInteractiveFormTypeStrict = exports.toInteractiveFormType = exports.toAiCfoAnswerResponseTypeStrict = exports.toAiCfoAnswerResponseType = exports.toAiCfoAnswerStateTypeStrict = exports.toAiCfoAnswerStateType = exports.toAiCfoChartTypeStrict = exports.toAiCfoChartType = exports.toAiCfoVisualizationTypeStrict = exports.toAiCfoVisualizationType = exports.ALL_INTERACTIVE_FORM_TYPES = exports.ALL_AI_CFO_ANSWER_RESPONSE_TYPES = exports.ALL_AI_CFO_ANSWER_STATE_TYPES = exports.ALL_AI_CFO_VISUALIZATION_TYPES = exports.ALL_AI_CFO_CHARTS_TYPES = exports.getSyntheticAiCfoAnswerByQuestionAnswerId = exports.getSyntheticAiCfoAnswersForChatSession = exports.getAiCfoSelectorView = exports.getAllQuestionsForChatSession = exports.getQuestionAnswerByIdForChatSession = exports.getAllQuestionAnswersForChatSession = exports.clearSyntheticAiCfoAnswers = exports.removeSyntheticAiCfoAnswer = exports.updateSyntheticAiCfoAnswer = exports.appendSyntheticAiCfoAnswer = exports.toAiCfoVisualization = void 0;
|
|
76
|
+
exports.getLastCreatedCardPolicyTemplateId = exports.getLastCreateCardPolicyTemplateErrors = exports.getLastCreateCardPolicySourceChatSessionId = exports.getCreateCardPolicyTemplateRequestState = exports.getAiCardPolicyFormDraft = exports.updateManualCardPolicyFormDraft = exports.updateCreateCardPolicyTemplateRequestState = exports.updateAiCardPolicyFormDraftFromUploadPlan = exports.updateAiCardPolicyFormDraft = exports.seedManualCardPolicyFormDraft = exports.seedAiCardPolicyFormDraft = exports.createCardPolicyTemplates = exports.clearManualCardPolicyFormDraft = exports.clearCreateCardPolicy = exports.clearAiCardPolicyFormDraft = exports.applyExtractedPolicyToManualCardPolicyDraft = exports.applyExtractedPolicyToAiCardPolicyDraft = exports.toUpdateCardPolicyTemplateRequestBody = exports.toExtractedCardPolicyRules = exports.toCreateCardPolicyTemplatesRequestBody = exports.toCreateCardPolicyTemplateRequestBody = exports.toCardPolicyVendorSearchOption = exports.toCardPolicyTemplateList = exports.toCardPolicyTemplate = exports.toCardPolicyStats = exports.toCardPolicyEditFormDraft = exports.toBulkCreateCardPolicyTemplateError = exports.toCardPolicyTemplateStatus = exports.toCardPolicyTemplateMode = exports.ALL_CARD_POLICY_TEMPLATE_STATUSES = exports.ALL_CARD_POLICY_TEMPLATE_MODES = exports.getUploadedPolicyDocumentFileName = exports.getPolicyRecommendationFromUploadFetchState = exports.getPolicyRecommendationFromUploadError = exports.getPolicyRecommendationFromUploadChatSessionId = exports.getPolicyRecommendationFromUploadAnswerId = exports.getPolicyDocumentExtractionFetchState = exports.getPolicyDocumentExtractionError = exports.getExtractedCardPolicyRules = exports.getCardPolicyVendorSearchString = exports.getCardPolicyVendorSearchOptions = exports.getCardPolicyVendorSearchFetchState = exports.getCardPolicyTemplatesByIds = exports.getCardPolicyTemplateById = exports.getCardPolicySuggestedBlockMerchants = exports.getCardPolicySuggestedBlockCategories = exports.getCardPolicySuggestedAllowMerchants = exports.getCardPolicySuggestedAllowCategories = exports.getCardPolicyStats = exports.getCardPolicyMccCategoriesFetchState = void 0;
|
|
77
|
+
exports.getTreasuryStatements = exports.fetchTreasuryStatementList = exports.getTreasuryTransferMoney = exports.clearTreasuryTransferMoney = exports.updateTreasuryTransferMoneyLocalData = exports.executeTreasuryTransferMoney = exports.getTreasuryDetail = exports.updateTreasuryTransactionListUIState = exports.fetchTreasuryTransactionList = exports.fetchTreasuryOverviewDetail = exports.getUpdateCardPolicyFetchState = exports.getCardPolicyFormDraft = exports.getCardPolicyDetailView = exports.getCardPolicyDetailFetchState = exports.updateCardPolicyFormDraft = exports.updateCardPolicyFetchStatus = exports.updateCardPolicyDetailFetchStatus = exports.updateCardPolicy = exports.fetchCardPolicyDetail = exports.clearCardPolicyDetail = exports.getCardPolicyTemplateIds = exports.getCardPolicyListView = exports.getCardPolicyListFetchState = exports.getArchiveCardPolicyFetchState = exports.updateCardPolicyListFetchStatus = exports.updateArchiveCardPolicyFetchStatus = exports.prependCardPolicyTemplateIds = exports.fetchCardPolicyList = exports.clearCardPolicyList = exports.archiveCardPolicy = exports.toManualCardPolicyTemplateRequestFromDraft = exports.toBulkCardPolicyTemplateRequestsFromDraft = exports.toCardPolicyTemplateRequestFromDraft = exports.applyAiCardPolicyFormDraftUpdate = exports.deriveAiPolicyReviewRowsFromInputs = exports.buildManualCardPolicyFormDraftSeed = exports.buildUploadReviewRows = exports.buildEmptyLimitRows = exports.buildAiCardPolicyFormDraftSeed = exports.toVendorChipFieldValue = exports.toMccCategoryChipFieldValue = exports.buildVendorChipId = exports.buildMccCategoryChipId = exports.VENDOR_CHIP_ID_PREFIX = exports.MCC_CHIP_ID_PREFIX = exports.toMccCategoryLike = exports.CARD_POLICY_LIMIT_ROW_ID_TRANSACTION = exports.CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT = exports.getManualCardPolicyFormDraft = exports.getLastCreatedCardPolicyTemplateIds = void 0;
|
|
78
|
+
exports.getCashManagementOverviewBanner = exports.getCashManagementOverview = exports.bufferAmountToRisk = exports.RISK_BUFFER_AMOUNT = exports.getAutoSweepFlow = exports.updateCashManagementSettingsFetchStatus = exports.updateCashManagementSettings = exports.updateAutoSweepSettingsFetchStatus = exports.updateAutoSweepRisk = exports.updateAutoSweepDraft = exports.saveAutoSweepSettings = exports.clearAutoSweepFlow = exports.fetchCashManagementOverviewPage = exports.fetchCashManagementBanner = exports.toKycProvidedDocumentTypeFromAllowed = exports.toKycProvidedDocumentType = exports.DEFAULT_SESSION_CONFIG = exports.SessionManager = exports.getTransactionActivityLogView = exports.fetchTransactionActivityLog = exports.BULK_UPLOAD_BAR_COMPLETE_HOLD_MS = exports.BULK_UPLOAD_AUTOMATCHING_TIMEOUT_MS = exports.getAutoTransferRuleHistory = exports.getAutoTransferRuleById = exports.getAutoTransferRules = exports.clearRuleUpdateLocalData = exports.updateRuleLocalData = exports.fetchAutoTransferReviewDetail = exports.fetchAutoTransferRuleHistory = exports.deleteAutoTransferRule = exports.updateAutoTransferRule = exports.createAutoTransferRule = exports.fetchAutoTransferRules = exports.getTreasuryTaxLetters = exports.fetchTreasuryTaxLetterList = void 0;
|
|
79
79
|
const allowedValue_1 = require("./commonStateTypes/allowedValue");
|
|
80
80
|
Object.defineProperty(exports, "isAllowedValueWithCode", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithCode; } });
|
|
81
81
|
Object.defineProperty(exports, "isAllowedValueWithID", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithID; } });
|
|
@@ -1944,8 +1944,6 @@ Object.defineProperty(exports, "getCannedResponsesView", { enumerable: true, get
|
|
|
1944
1944
|
const taskDetail_1 = require("./view/taskManager/taskDetailView/taskDetail");
|
|
1945
1945
|
Object.defineProperty(exports, "initialTaskDetail", { enumerable: true, get: function () { return taskDetail_1.initialTaskDetail; } });
|
|
1946
1946
|
Object.defineProperty(exports, "initialTaskDetailLocalData", { enumerable: true, get: function () { return taskDetail_1.initialTaskDetailLocalData; } });
|
|
1947
|
-
const sendCommentMentionNotificationEpic_1 = require("./view/taskManager/taskDetailView/epics/sendCommentMentionNotificationEpic");
|
|
1948
|
-
Object.defineProperty(exports, "sendCommentMentionNotification", { enumerable: true, get: function () { return sendCommentMentionNotificationEpic_1.sendCommentMentionNotification; } });
|
|
1949
1947
|
const taskDetailReducer_1 = require("./view/taskManager/taskDetailView/taskDetailReducer");
|
|
1950
1948
|
Object.defineProperty(exports, "archiveTask", { enumerable: true, get: function () { return taskDetailReducer_1.archiveTask; } });
|
|
1951
1949
|
Object.defineProperty(exports, "deleteTask", { enumerable: true, get: function () { return taskDetailReducer_1.deleteTask; } });
|
|
@@ -6,14 +6,7 @@ const operators_1 = require("rxjs/operators");
|
|
|
6
6
|
const responsePayload_1 = require("../../../responsePayload");
|
|
7
7
|
const companyTaskManagerViewReducer_1 = require("../companyTaskManagerViewReducer");
|
|
8
8
|
const fetchTaskManagerMetricsEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(companyTaskManagerViewReducer_1.fetchTaskManagerMetrics.match), (0, operators_1.switchMap)(() => {
|
|
9
|
-
|
|
10
|
-
// dashboard pending count. The task-manager dashboard counts every
|
|
11
|
-
// task (subtasks included) — cockpit's default of include_subtasks=false
|
|
12
|
-
// made it understate by every pending subtask, drifting from dashboard.
|
|
13
|
-
const query = JSON.stringify({
|
|
14
|
-
is_filter_by_logged_in_user: true,
|
|
15
|
-
include_subtasks: true,
|
|
16
|
-
});
|
|
9
|
+
const query = JSON.stringify({ is_filter_by_logged_in_user: true });
|
|
17
10
|
return zeniAPI
|
|
18
11
|
.getJSON(`${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/cockpit-panels/tasks-es-metrics?query=${encodeURIComponent(query)}`)
|
|
19
12
|
.pipe((0, operators_1.mergeMap)((response) => {
|
|
@@ -11,11 +11,15 @@ const transactionCategorizationLocalDataHelper_1 = require("../../helpers/transa
|
|
|
11
11
|
const transactionsViewReducer_1 = require("../../reducers/transactionsViewReducer");
|
|
12
12
|
const completedSubTab_1 = require("../../types/completedSubTab");
|
|
13
13
|
const transactionsViewState_1 = require("../../types/transactionsViewState");
|
|
14
|
-
const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.fetchTransactionCategorization.match),
|
|
14
|
+
const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.fetchTransactionCategorization.match),
|
|
15
|
+
// Per-tab switchMap: cancels in-flight requests for the same tab on a new
|
|
16
|
+
// request, but allows both tabs to fetch concurrently (e.g. dual search).
|
|
17
|
+
(0, operators_1.groupBy)((action) => action.payload.selectedTab), (0, operators_1.mergeMap)((group$) => group$.pipe((0, operators_1.switchMap)((action) => {
|
|
15
18
|
const { expenseAutomationViewState: { selectedPeriodByTenantId }, expenseAutomationTransactionsViewState, } = state$.value;
|
|
16
19
|
const { period, keepExistingListItems, selectedTab, refreshViewInBackground, } = action.payload;
|
|
17
20
|
const uiState = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTab].uiState;
|
|
18
21
|
const { pageToken, sortOrder, sortKey } = uiState;
|
|
22
|
+
const requestSearchString = uiState.searchString;
|
|
19
23
|
const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state$.value);
|
|
20
24
|
const selectedPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
|
|
21
25
|
const queryParam = {
|
|
@@ -27,6 +31,10 @@ const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => action
|
|
|
27
31
|
page_token: pageToken,
|
|
28
32
|
page_size: 25,
|
|
29
33
|
search_text: uiState.searchString,
|
|
34
|
+
// Always scope to the active tab's auto_categorized status;
|
|
35
|
+
// cross-status search (omit or true) is reserved for Receipts
|
|
36
|
+
// manual-match.
|
|
37
|
+
search_all_statuses: false,
|
|
30
38
|
sub_tab: selectedTab === 'autoCategorized'
|
|
31
39
|
? expenseAutomationTransactionsViewState.selectedTransactionCategorizationCompletedSubTab
|
|
32
40
|
: completedSubTab_1.DEFAULT_COMPLETED_SUB_TAB,
|
|
@@ -34,15 +42,37 @@ const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => action
|
|
|
34
42
|
return zeniAPI
|
|
35
43
|
.getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`)
|
|
36
44
|
.pipe((0, operators_1.mergeMap)((response) => {
|
|
45
|
+
// Stale-response guard: if search was cleared while this
|
|
46
|
+
// request was in-flight (restoreFullDatasetSnapshot ran),
|
|
47
|
+
// discard results and errors to avoid overwriting the restored
|
|
48
|
+
// IDs/counts or marking the tab as Error. Covers both the
|
|
49
|
+
// success and failure branches. switchMap only cancels on a new
|
|
50
|
+
// fetchTransactionCategorization for the same tab; restore
|
|
51
|
+
// doesn't dispatch one, so we guard here instead.
|
|
52
|
+
const currentSearchString = state$.value.expenseAutomationTransactionsViewState
|
|
53
|
+
.transactionCategorizationView[selectedTab].uiState
|
|
54
|
+
.searchString;
|
|
55
|
+
if (currentSearchString !== requestSearchString) {
|
|
56
|
+
return rxjs_1.EMPTY;
|
|
57
|
+
}
|
|
37
58
|
if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
|
|
38
59
|
const updateActions = [];
|
|
39
60
|
updateActions.push((0, transactionReducer_1.updateTransactions)(response.data.transactions, (value) => value.transaction_id, 'merge'));
|
|
40
61
|
const transactionIds = response.data.transactions.map((transaction) => transaction.transaction_id);
|
|
41
62
|
const lineItemsByTransactionIds = (0, transactionCategorizationLocalDataHelper_1.getLineItemsByTransactionsIdsFromResponse)(response.data.transactions);
|
|
63
|
+
// Only propagate the fields the response provides (pageToken).
|
|
64
|
+
// Do NOT spread the captured uiState — that would re-apply
|
|
65
|
+
// searchString/sortKey/etc. from request-start and overwrite
|
|
66
|
+
// any state changes made during the in-flight request (e.g.
|
|
67
|
+
// user clearing search triggers restoreFullDatasetSnapshot
|
|
68
|
+
// before this response lands).
|
|
69
|
+
// pageToken is also set by saveTransactionCategorizationLocalData
|
|
70
|
+
// via initializeTransactionCategorizationViewLocalDataEpic, so
|
|
71
|
+
// null values are handled correctly there regardless of the
|
|
72
|
+
// != null guard in updateTransactionCategorizationUIState.
|
|
42
73
|
updateActions.push((0, transactionsViewReducer_1.updateTransactionCategorizationUIState)({
|
|
43
74
|
selectedTab,
|
|
44
75
|
uiState: {
|
|
45
|
-
...uiState,
|
|
46
76
|
pageToken: response.data.next_page_token ?? null,
|
|
47
77
|
},
|
|
48
78
|
}));
|
|
@@ -76,11 +106,19 @@ const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => action
|
|
|
76
106
|
status: response.status,
|
|
77
107
|
}));
|
|
78
108
|
}
|
|
79
|
-
}), (0, operators_1.catchError)((error) =>
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
109
|
+
}), (0, operators_1.catchError)((error) => {
|
|
110
|
+
const currentSearchString = state$.value.expenseAutomationTransactionsViewState
|
|
111
|
+
.transactionCategorizationView[selectedTab].uiState
|
|
112
|
+
.searchString;
|
|
113
|
+
if (currentSearchString !== requestSearchString) {
|
|
114
|
+
return rxjs_1.EMPTY;
|
|
115
|
+
}
|
|
116
|
+
return (0, rxjs_1.of)((0, transactionsViewReducer_1.fetchTransactionCategorizationFailure)({
|
|
117
|
+
selectedPeriod,
|
|
118
|
+
selectedTab,
|
|
119
|
+
status: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'fetch Transaction Categorization REST API call errored out' +
|
|
120
|
+
JSON.stringify(error)),
|
|
121
|
+
}));
|
|
122
|
+
}));
|
|
123
|
+
}))));
|
|
86
124
|
exports.fetchTransactionCategorizationEpic = fetchTransactionCategorizationEpic;
|
|
@@ -5,6 +5,6 @@ import { fetchAccountList } from '../../../accountList/accountListReducer';
|
|
|
5
5
|
import { fetchClassList } from '../../../classList/classListReducer';
|
|
6
6
|
import { fetchOwnerList } from '../../../ownerList/ownerListReducer';
|
|
7
7
|
import { fetchProjectList } from '../../../projectList/projectListReducer';
|
|
8
|
-
import { fetchTransactionCategorization, fetchTransactionCategorizationView } from '../../reducers/transactionsViewReducer';
|
|
9
|
-
export type ActionType = ReturnType<typeof fetchTransactionCategorizationView> | ReturnType<typeof fetchTransactionCategorization> | ReturnType<typeof fetchAccountList> | ReturnType<typeof fetchClassList> | ReturnType<typeof fetchOwnerList> | ReturnType<typeof fetchProjectList>;
|
|
8
|
+
import { fetchTransactionCategorization, fetchTransactionCategorizationView, restoreFullDatasetSnapshot } from '../../reducers/transactionsViewReducer';
|
|
9
|
+
export type ActionType = ReturnType<typeof fetchTransactionCategorizationView> | ReturnType<typeof fetchTransactionCategorization> | ReturnType<typeof restoreFullDatasetSnapshot> | ReturnType<typeof fetchAccountList> | ReturnType<typeof fetchClassList> | ReturnType<typeof fetchOwnerList> | ReturnType<typeof fetchProjectList>;
|
|
10
10
|
export declare const fetchTransactionCategorizationViewEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => Observable<ActionType>;
|