@zeniai/client-epic-state 5.0.37 → 5.0.38-betaNB1

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 (162) hide show
  1. package/lib/commonStateTypes/fiscalYearHelpers/formatZeniDateFY.d.ts +1 -0
  2. package/lib/commonStateTypes/fiscalYearHelpers/formatZeniDateFY.js +2 -1
  3. package/lib/commonStateTypes/viewAndReport/agingReportStateTypes.d.ts +1 -1
  4. package/lib/entity/accountRecon/accountReconPayload.d.ts +19 -1
  5. package/lib/entity/accountRecon/accountReconPayload.js +21 -0
  6. package/lib/entity/accountRecon/accountReconSelector.d.ts +5 -1
  7. package/lib/entity/accountRecon/accountReconSelector.js +4 -0
  8. package/lib/entity/accountRecon/accountReconState.d.ts +18 -0
  9. package/lib/entity/file/fileState.d.ts +4 -4
  10. package/lib/entity/file/fileState.js +4 -0
  11. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  12. package/lib/entity/snackbar/snackbarTypes.js +4 -0
  13. package/lib/entity/task/taskPayload.d.ts +3 -0
  14. package/lib/entity/task/taskPayload.js +5 -0
  15. package/lib/entity/task/taskState.d.ts +3 -0
  16. package/lib/entity/tenant/clearAllEpic.d.ts +5 -2
  17. package/lib/entity/tenant/clearAllEpic.js +6 -0
  18. package/lib/entity/tenant/epic/deleteConnectionEpic.d.ts +19 -0
  19. package/lib/entity/tenant/epic/deleteConnectionEpic.js +29 -0
  20. package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.d.ts +19 -0
  21. package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.js +31 -0
  22. package/lib/entity/tenant/epic/saveOAuthConnectionEpic.d.ts +19 -0
  23. package/lib/entity/tenant/epic/saveOAuthConnectionEpic.js +33 -0
  24. package/lib/entity/tenant/tenantPayload.d.ts +1 -0
  25. package/lib/entity/tenant/tenantReducer.d.ts +59 -1
  26. package/lib/entity/tenant/tenantReducer.js +139 -4
  27. package/lib/entity/tenant/tenantState.d.ts +7 -0
  28. package/lib/entity/transaction/stateTypes/attachment.d.ts +2 -2
  29. package/lib/epic.d.ts +9 -1
  30. package/lib/epic.js +12 -1
  31. package/lib/esm/commonStateTypes/fiscalYearHelpers/formatZeniDateFY.js +1 -0
  32. package/lib/esm/entity/accountRecon/accountReconPayload.js +21 -0
  33. package/lib/esm/entity/accountRecon/accountReconSelector.js +4 -0
  34. package/lib/esm/entity/file/fileState.js +4 -0
  35. package/lib/esm/entity/snackbar/snackbarTypes.js +4 -0
  36. package/lib/esm/entity/task/taskPayload.js +5 -0
  37. package/lib/esm/entity/tenant/clearAllEpic.js +6 -0
  38. package/lib/esm/entity/tenant/epic/deleteConnectionEpic.js +25 -0
  39. package/lib/esm/entity/tenant/epic/saveAPIKeyConnectionEpic.js +27 -0
  40. package/lib/esm/entity/tenant/epic/saveOAuthConnectionEpic.js +29 -0
  41. package/lib/esm/entity/tenant/tenantReducer.js +135 -2
  42. package/lib/esm/epic.js +12 -1
  43. package/lib/esm/index.js +15 -6
  44. package/lib/esm/init.js +71 -16
  45. package/lib/esm/reducer.js +9 -0
  46. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +7 -2
  47. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +2 -0
  48. package/lib/esm/view/expenseAutomationView/types/reconciliationViewState.js +20 -0
  49. package/lib/esm/view/featureNotificationView/epics/fetchRegisteredInterestsEpic.js +23 -0
  50. package/lib/esm/view/featureNotificationView/epics/notifyMeForFeatureEpic.js +25 -0
  51. package/lib/esm/view/featureNotificationView/featureNotificationViewPayload.js +11 -0
  52. package/lib/esm/view/featureNotificationView/featureNotificationViewReducer.js +106 -0
  53. package/lib/esm/view/featureNotificationView/featureNotificationViewSelector.js +4 -0
  54. package/lib/esm/view/featureNotificationView/featureNotificationViewState.js +1 -0
  55. package/lib/esm/view/taskManager/cannedResponsesView/cannedResponses.js +1 -0
  56. package/lib/esm/view/taskManager/cannedResponsesView/cannedResponsesPayload.js +12 -0
  57. package/lib/esm/view/taskManager/cannedResponsesView/cannedResponsesReducer.js +64 -0
  58. package/lib/esm/view/taskManager/cannedResponsesView/cannedResponsesSelector.js +3 -0
  59. package/lib/esm/view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic.js +17 -0
  60. package/lib/esm/view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic.js +21 -0
  61. package/lib/esm/view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic.js +29 -0
  62. package/lib/esm/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +3 -0
  63. package/lib/esm/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +5 -0
  64. package/lib/esm/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +1 -0
  65. package/lib/esm/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -0
  66. package/lib/esm/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +66 -0
  67. package/lib/esm/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +57 -0
  68. package/lib/esm/view/taskManager/taskDetailView/taskDetail.js +4 -0
  69. package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +60 -7
  70. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +12 -0
  71. package/lib/esm/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +56 -21
  72. package/lib/esm/view/taskManager/taskListView/epics/dragNDropTasksEpic.js +1 -0
  73. package/lib/esm/view/taskManager/taskListView/epics/fetchTaskListEpic.js +13 -4
  74. package/lib/esm/view/taskManager/taskListView/epics/updateTaskFromListViewEpic.js +3 -2
  75. package/lib/esm/view/taskManager/taskListView/taskList.js +7 -0
  76. package/lib/esm/view/taskManager/taskListView/taskListReducer.js +106 -12
  77. package/lib/esm/view/taskManager/taskListView/taskListSelector.js +48 -39
  78. package/lib/esm/view/zeniOAuthView/epics/approveOAuthConsentEpic.js +65 -0
  79. package/lib/esm/view/zeniOAuthView/zeniOAuthParamsParser.js +41 -0
  80. package/lib/esm/view/zeniOAuthView/zeniOAuthReducer.js +49 -0
  81. package/lib/esm/view/zeniOAuthView/zeniOAuthSelector.js +3 -0
  82. package/lib/esm/view/zeniOAuthView/zeniOAuthState.js +1 -0
  83. package/lib/index.d.ts +18 -6
  84. package/lib/index.js +67 -30
  85. package/lib/init.d.ts +5 -3
  86. package/lib/init.js +71 -16
  87. package/lib/reducer.d.ts +9 -0
  88. package/lib/reducer.js +9 -0
  89. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  90. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +19 -0
  91. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +7 -2
  92. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +2 -1
  93. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +2 -0
  94. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +24 -0
  95. package/lib/view/expenseAutomationView/types/reconciliationViewState.js +21 -0
  96. package/lib/view/featureNotificationView/epics/fetchRegisteredInterestsEpic.d.ts +16 -0
  97. package/lib/view/featureNotificationView/epics/fetchRegisteredInterestsEpic.js +27 -0
  98. package/lib/view/featureNotificationView/epics/notifyMeForFeatureEpic.d.ts +14 -0
  99. package/lib/view/featureNotificationView/epics/notifyMeForFeatureEpic.js +29 -0
  100. package/lib/view/featureNotificationView/featureNotificationViewPayload.d.ts +23 -0
  101. package/lib/view/featureNotificationView/featureNotificationViewPayload.js +15 -0
  102. package/lib/view/featureNotificationView/featureNotificationViewReducer.d.ts +19 -0
  103. package/lib/view/featureNotificationView/featureNotificationViewReducer.js +110 -0
  104. package/lib/view/featureNotificationView/featureNotificationViewSelector.d.ts +6 -0
  105. package/lib/view/featureNotificationView/featureNotificationViewSelector.js +11 -0
  106. package/lib/view/featureNotificationView/featureNotificationViewState.d.ts +26 -0
  107. package/lib/view/featureNotificationView/featureNotificationViewState.js +2 -0
  108. package/lib/view/taskManager/cannedResponsesView/cannedResponses.d.ts +19 -0
  109. package/lib/view/taskManager/cannedResponsesView/cannedResponses.js +2 -0
  110. package/lib/view/taskManager/cannedResponsesView/cannedResponsesPayload.d.ts +21 -0
  111. package/lib/view/taskManager/cannedResponsesView/cannedResponsesPayload.js +15 -0
  112. package/lib/view/taskManager/cannedResponsesView/cannedResponsesReducer.d.ts +30 -0
  113. package/lib/view/taskManager/cannedResponsesView/cannedResponsesReducer.js +68 -0
  114. package/lib/view/taskManager/cannedResponsesView/cannedResponsesSelector.d.ts +3 -0
  115. package/lib/view/taskManager/cannedResponsesView/cannedResponsesSelector.js +6 -0
  116. package/lib/view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic.d.ts +7 -0
  117. package/lib/view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic.js +21 -0
  118. package/lib/view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic.d.ts +7 -0
  119. package/lib/view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic.js +25 -0
  120. package/lib/view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic.d.ts +7 -0
  121. package/lib/view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic.js +33 -0
  122. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.d.ts +2 -1
  123. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +3 -0
  124. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.d.ts +2 -1
  125. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +5 -0
  126. package/lib/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +1 -0
  127. package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -0
  128. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.d.ts +9 -0
  129. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +70 -0
  130. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.d.ts +9 -0
  131. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +61 -0
  132. package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +2 -0
  133. package/lib/view/taskManager/taskDetailView/taskDetail.js +4 -0
  134. package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +10 -1
  135. package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +61 -8
  136. package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +5 -0
  137. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +12 -0
  138. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.d.ts +6 -7
  139. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +56 -22
  140. package/lib/view/taskManager/taskListView/epics/dragNDropTasksEpic.js +1 -0
  141. package/lib/view/taskManager/taskListView/epics/fetchTaskListEpic.js +13 -4
  142. package/lib/view/taskManager/taskListView/epics/updateTaskFromListViewEpic.js +3 -2
  143. package/lib/view/taskManager/taskListView/taskList.d.ts +14 -1
  144. package/lib/view/taskManager/taskListView/taskList.js +8 -1
  145. package/lib/view/taskManager/taskListView/taskListPayload.d.ts +3 -0
  146. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +9 -6
  147. package/lib/view/taskManager/taskListView/taskListReducer.js +107 -13
  148. package/lib/view/taskManager/taskListView/taskListSelector.d.ts +9 -3
  149. package/lib/view/taskManager/taskListView/taskListSelector.js +48 -39
  150. package/lib/view/vendorFiling1099/vendorFiling1099List/vendorFiling1099ListState.d.ts +1 -1
  151. package/lib/view/zeniOAuthView/epics/approveOAuthConsentEpic.d.ts +27 -0
  152. package/lib/view/zeniOAuthView/epics/approveOAuthConsentEpic.js +69 -0
  153. package/lib/view/zeniOAuthView/zeniOAuthParamsParser.d.ts +16 -0
  154. package/lib/view/zeniOAuthView/zeniOAuthParamsParser.js +44 -0
  155. package/lib/view/zeniOAuthView/zeniOAuthReducer.d.ts +29 -0
  156. package/lib/view/zeniOAuthView/zeniOAuthReducer.js +53 -0
  157. package/lib/view/zeniOAuthView/zeniOAuthSelector.d.ts +5 -0
  158. package/lib/view/zeniOAuthView/zeniOAuthSelector.js +9 -0
  159. package/lib/view/zeniOAuthView/zeniOAuthState.d.ts +4 -0
  160. package/lib/view/zeniOAuthView/zeniOAuthState.js +2 -0
  161. package/package.json +1 -1
  162. package/lib/tsconfig.typecheck.tsbuildinfo +0 -1
package/lib/reducer.d.ts CHANGED
@@ -105,6 +105,7 @@ import { MissingReceiptsViewState as ExpenseAutomationMissingReceiptsViewState }
105
105
  import { ReconciliationViewState as ExpenseAutomationReconciliationViewState } from './view/expenseAutomationView/types/reconciliationViewState';
106
106
  import { TransactionsViewState as ExpenseAutomationTransactionsViewState } from './view/expenseAutomationView/types/transactionsViewState';
107
107
  import { FileViewState } from './view/fileView/fileViewState';
108
+ import { FeatureNotificationViewState } from './view/featureNotificationView/featureNotificationViewState';
108
109
  import { FinanceStatementState } from './view/financeStatement/financeStatementState';
109
110
  import { ForecastListState } from './view/forecastList/forecastListState';
110
111
  import { GlobalMerchantAutoCompleteState } from './view/globalMerchantView/globalMerchantAutoCompleteView/globalMerchantAutoCompleteViewState';
@@ -190,6 +191,7 @@ import { ZeniAccountSetupViewState } from './view/spendManagement/zeniAccounts/z
190
191
  import { ZeniAccountsConfigState } from './view/spendManagement/zeniAccounts/zeniAccountsConfig/zeniAccountsConfigState';
191
192
  import { SubscriptionViewState } from './view/subscriptionView/subscriptionViewState';
192
193
  import { TagViewState } from './view/tagView/tagViewState';
194
+ import { CannedResponsesViewState } from './view/taskManager/cannedResponsesView/cannedResponses';
193
195
  import { TaskDetailViewState } from './view/taskManager/taskDetailView/taskDetail';
194
196
  import { TaskGroupTemplateViewState } from './view/taskManager/taskGroupTemplateView/taskGroupTemplateViewState';
195
197
  import { TaskGroupViewState } from './view/taskManager/taskGroupView/taskGroupViewState';
@@ -216,6 +218,7 @@ import { VendorTabViewState } from './view/vendorTabView/vendorTabViewState';
216
218
  import { VendorTypeListState } from './view/vendorTypeList/vendorTypeListState';
217
219
  import { ZeniAccStatementListState } from './view/zeniAccStatementList/zeniAccStatementList';
218
220
  import { ZeniAccountsPromoCardState } from './view/zeniAccountsPromoCard/zeniAccountsPromoCardState';
221
+ import { ZeniOAuthViewState } from './view/zeniOAuthView/zeniOAuthState';
219
222
  type EntitiesState = {
220
223
  accountGroupState: AccountGroupState;
221
224
  accountingSummaryState: AccountingSummaryState;
@@ -309,6 +312,7 @@ type ViewsState = {
309
312
  billPaySetupApproverViewState: BillPaySetupApproverViewState;
310
313
  billPaySetupViewState: BillPaySetupViewState;
311
314
  billsBulkActionViewState: BillsBulkActionViewState;
315
+ cannedResponsesState: CannedResponsesViewState;
312
316
  cardBalanceState: CardBalanceState;
313
317
  cardPaymentViewState: CardPaymentViewState;
314
318
  cardUserOnboardingState: CardUserOnboardingState;
@@ -349,6 +353,7 @@ type ViewsState = {
349
353
  expenseAutomationTransactionsViewState: ExpenseAutomationTransactionsViewState;
350
354
  expenseAutomationViewState: ExpenseAutomationViewState;
351
355
  expressPayState: ExpressPayState;
356
+ featureNotificationViewState: FeatureNotificationViewState;
352
357
  fileViewState: FileViewState;
353
358
  financeStatementState: FinanceStatementState;
354
359
  forecastListState: ForecastListState;
@@ -438,6 +443,7 @@ type ViewsState = {
438
443
  zeniAccountSetupViewState: ZeniAccountSetupViewState;
439
444
  zeniAccountsPromoCardState: ZeniAccountsPromoCardState;
440
445
  zeniAccStatementListState: ZeniAccStatementListState;
446
+ zeniOAuthViewState: ZeniOAuthViewState;
441
447
  };
442
448
  export type RootState = EntitiesState & ViewsState;
443
449
  export declare const initialRootState: RootState;
@@ -504,6 +510,7 @@ declare const reducers: import("redux").Reducer<import("redux").CombinedState<{
504
510
  expenseAutomationTransactionsViewState: ExpenseAutomationTransactionsViewState;
505
511
  expenseAutomationViewState: ExpenseAutomationViewState;
506
512
  expressPayState: ExpressPayState;
513
+ featureNotificationViewState: FeatureNotificationViewState;
507
514
  fileViewState: FileViewState;
508
515
  financeStatementState: FinanceStatementState;
509
516
  forecastListState: ForecastListState;
@@ -554,6 +561,7 @@ declare const reducers: import("redux").Reducer<import("redux").CombinedState<{
554
561
  settingsViewState: SettingsViewState;
555
562
  setupViewState: SetupViewState;
556
563
  subscriptionViewState: SubscriptionViewState;
564
+ cannedResponsesState: CannedResponsesViewState;
557
565
  taskDetailState: TaskDetailViewState;
558
566
  taskGroupTemplateViewState: TaskGroupTemplateViewState;
559
567
  taskGroupViewState: TaskGroupViewState;
@@ -594,6 +602,7 @@ declare const reducers: import("redux").Reducer<import("redux").CombinedState<{
594
602
  zeniAccountSetupViewState: ZeniAccountSetupViewState;
595
603
  zeniAccStatementListState: ZeniAccStatementListState;
596
604
  zeniAccountsPromoCardState: ZeniAccountsPromoCardState;
605
+ zeniOAuthViewState: ZeniOAuthViewState;
597
606
  accountGroupState: AccountGroupState;
598
607
  accountReconState: AccountReconState;
599
608
  accountingSummaryState: AccountingSummaryState;
package/lib/reducer.js CHANGED
@@ -146,6 +146,7 @@ const reconciliationViewReducer_1 = __importStar(require("./view/expenseAutomati
146
146
  const transactionsViewReducer_1 = __importStar(require("./view/expenseAutomationView/reducers/transactionsViewReducer"));
147
147
  const fileViewReducer_1 = __importDefault(require("./view/fileView/fileViewReducer"));
148
148
  const fileViewState_1 = require("./view/fileView/fileViewState");
149
+ const featureNotificationViewReducer_1 = __importStar(require("./view/featureNotificationView/featureNotificationViewReducer"));
149
150
  const financeStatementReducer_1 = __importStar(require("./view/financeStatement/financeStatementReducer"));
150
151
  const forecastListReducer_1 = __importStar(require("./view/forecastList/forecastListReducer"));
151
152
  const globalMerchantAutoCompleteViewReducer_1 = __importStar(require("./view/globalMerchantView/globalMerchantAutoCompleteView/globalMerchantAutoCompleteViewReducer"));
@@ -231,6 +232,7 @@ const zeniAccountSetupViewReducer_1 = __importStar(require("./view/spendManageme
231
232
  const zeniAccountsConfigReducer_1 = __importStar(require("./view/spendManagement/zeniAccounts/zeniAccountsConfig/zeniAccountsConfigReducer"));
232
233
  const subscriptionViewReducer_1 = __importStar(require("./view/subscriptionView/subscriptionViewReducer"));
233
234
  const tagViewReducer_1 = __importStar(require("./view/tagView/tagViewReducer"));
235
+ const cannedResponsesReducer_1 = __importStar(require("./view/taskManager/cannedResponsesView/cannedResponsesReducer"));
234
236
  const taskDetailReducer_1 = __importStar(require("./view/taskManager/taskDetailView/taskDetailReducer"));
235
237
  const taskGroupTemplateViewReducer_1 = __importStar(require("./view/taskManager/taskGroupTemplateView/taskGroupTemplateViewReducer"));
236
238
  const taskGroupViewReducer_1 = __importStar(require("./view/taskManager/taskGroupView/taskGroupViewReducer"));
@@ -257,6 +259,7 @@ const vendorTabViewReducer_1 = __importStar(require("./view/vendorTabView/vendor
257
259
  const vendorTypeListReducer_1 = __importStar(require("./view/vendorTypeList/vendorTypeListReducer"));
258
260
  const zeniAccStatementListReducer_1 = __importStar(require("./view/zeniAccStatementList/zeniAccStatementListReducer"));
259
261
  const zeniAccountsPromoCardReducer_1 = __importStar(require("./view/zeniAccountsPromoCard/zeniAccountsPromoCardReducer"));
262
+ const zeniOAuthReducer_1 = __importStar(require("./view/zeniOAuthView/zeniOAuthReducer"));
260
263
  // Note: Please maintain strict alphabetical order
261
264
  const initialEntitiesState = {
262
265
  accountGroupState: accountGroupReducer_1.initialState,
@@ -392,6 +395,7 @@ const initialViewsState = {
392
395
  expenseAutomationTransactionsViewState: transactionsViewReducer_1.initialState,
393
396
  expenseAutomationViewState: expenseAutomationViewReducer_1.initialState,
394
397
  expressPayState: expressPayReducer_1.initialState,
398
+ featureNotificationViewState: featureNotificationViewReducer_1.initialState,
395
399
  fileViewState: fileViewState_1.initialFileViewState,
396
400
  financeStatementState: financeStatementReducer_1.initialFinanceStatementState,
397
401
  forecastListState: forecastListReducer_1.initialState,
@@ -442,6 +446,7 @@ const initialViewsState = {
442
446
  setupViewState: setupViewReducer_1.initialState,
443
447
  subscriptionViewState: subscriptionViewReducer_1.initialState,
444
448
  tagViewState: tagViewReducer_1.initialState,
449
+ cannedResponsesState: cannedResponsesReducer_1.initialState,
445
450
  taskDetailState: taskDetailReducer_1.initialState,
446
451
  taskGroupTemplateViewState: taskGroupTemplateViewReducer_1.initialState,
447
452
  taskGroupViewState: taskGroupViewReducer_1.initialState,
@@ -481,6 +486,7 @@ const initialViewsState = {
481
486
  zeniAccountSetupViewState: zeniAccountSetupViewReducer_1.initialState,
482
487
  zeniAccStatementListState: zeniAccStatementListReducer_1.initialState,
483
488
  zeniAccountsPromoCardState: zeniAccountsPromoCardReducer_1.initialState,
489
+ zeniOAuthViewState: zeniOAuthReducer_1.initialState,
484
490
  };
485
491
  exports.initialRootState = {
486
492
  ...initialEntitiesState,
@@ -621,6 +627,7 @@ const viewReducers = {
621
627
  expenseAutomationTransactionsViewState: transactionsViewReducer_1.default,
622
628
  expenseAutomationViewState: expenseAutomationViewReducer_1.default,
623
629
  expressPayState: expressPayReducer_1.default,
630
+ featureNotificationViewState: featureNotificationViewReducer_1.default,
624
631
  fileViewState: fileViewReducer_1.default,
625
632
  financeStatementState: financeStatementReducer_1.default,
626
633
  forecastListState: forecastListReducer_1.default,
@@ -671,6 +678,7 @@ const viewReducers = {
671
678
  settingsViewState: settingsViewReducer_1.default,
672
679
  setupViewState: setupViewReducer_1.default,
673
680
  subscriptionViewState: subscriptionViewReducer_1.default,
681
+ cannedResponsesState: cannedResponsesReducer_1.default,
674
682
  taskDetailState: taskDetailReducer_1.default,
675
683
  taskGroupTemplateViewState: taskGroupTemplateViewReducer_1.default,
676
684
  taskGroupViewState: taskGroupViewReducer_1.default,
@@ -711,6 +719,7 @@ const viewReducers = {
711
719
  zeniAccountSetupViewState: zeniAccountSetupViewReducer_1.default,
712
720
  zeniAccStatementListState: zeniAccStatementListReducer_1.default,
713
721
  zeniAccountsPromoCardState: zeniAccountsPromoCardReducer_1.default,
722
+ zeniOAuthViewState: zeniOAuthReducer_1.default,
714
723
  };
715
724
  const reducers = (0, redux_1.combineReducers)({
716
725
  ...entityReducers,
@@ -37,7 +37,7 @@ export declare const getLineItemsByTransactionsIdsFromResponse: (transactions: S
37
37
  export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLocalData: TransactionReviewLocalDataSelectorView[], selectedTab: TransactionsTab) => Record<ID, string[]>;
38
38
  export declare const mergeTabSpecificLineItems: (currentTabSpecificLineItems: TabSpecificLineItems, selectedTab: TransactionsTab, newLineItems: TabSpecificLineItems) => TabSpecificLineItems;
39
39
  export declare const getSnackbarMessageForTransactionReview: (updatedCount: number, failedCount: number, categorizedCount: number) => {
40
- messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "ai_accountant_trigger_job";
40
+ messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "snooze_task" | "unsnooze_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "ai_accountant_trigger_job" | "oauth_consent_approve" | "oauth_consent_invalid_request";
41
41
  messageText: "notification" | "failed" | "success";
42
42
  type: "error" | "success" | "info";
43
43
  variables: {
@@ -31,6 +31,24 @@ interface ExclusionInfoPayload {
31
31
  export interface ExcludedAccountPayload extends AccountAndPaymentAccountPayload {
32
32
  exclusion_info: ExclusionInfoPayload;
33
33
  }
34
+ export interface ReconciliationSummaryPayload {
35
+ accounts: {
36
+ done: number;
37
+ failed: number;
38
+ in_progress: number;
39
+ total: number;
40
+ };
41
+ accounts_to_connect_count: number;
42
+ auto_matched: {
43
+ matched_txns: number;
44
+ total_txns: number;
45
+ };
46
+ needs_review: {
47
+ account_count: number;
48
+ txn_count: number;
49
+ };
50
+ time_saved_percentage: number;
51
+ }
34
52
  export interface ReconciliationPayload {
35
53
  accounts: AccountAndPaymentAccountPayload[];
36
54
  files: FilePayload[];
@@ -39,6 +57,7 @@ export interface ReconciliationPayload {
39
57
  detection_info?: DetectionInfoPayload;
40
58
  detection_reason?: string;
41
59
  excluded_accounts?: ExcludedAccountPayload[];
60
+ summary?: ReconciliationSummaryPayload;
42
61
  }
43
62
  export type ReconciliationResponse = ZeniAPIResponse<ReconciliationPayload>;
44
63
  export interface SaveReconciliationReviewPayload {
@@ -6,6 +6,7 @@ const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
7
7
  const accountState_1 = require("../../../entity/account/accountState");
8
8
  const accountReconState_1 = require("../../../entity/accountRecon/accountReconState");
9
+ const reconciliationViewState_1 = require("../types/reconciliationViewState");
9
10
  // Initial state
10
11
  exports.initialReconciliationTabsState = {
11
12
  balances: {
@@ -79,6 +80,7 @@ exports.initialState = {
79
80
  },
80
81
  },
81
82
  excludedAccountIDs: [],
83
+ summary: undefined,
82
84
  };
83
85
  // Create slice with reducers
84
86
  const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
@@ -147,7 +149,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
147
149
  fetchReconciliationSuccess: {
148
150
  reducer(draft, action) {
149
151
  if (action.payload.accountId == null) {
150
- updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? []);
152
+ updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? [], action.payload.reconciliation.summary);
151
153
  }
152
154
  else if (action.payload.reconciliation.reconciliation.length > 0 &&
153
155
  action.payload.reconciliation.accounts.length > 0) {
@@ -531,7 +533,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
531
533
  _a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.excludeAccountFromReconciliation = _a.excludeAccountFromReconciliation, exports.excludeAccountFromReconciliationSuccess = _a.excludeAccountFromReconciliationSuccess, exports.excludeAccountFromReconciliationFailure = _a.excludeAccountFromReconciliationFailure, exports.includeAccountInReconciliation = _a.includeAccountInReconciliation, exports.includeAccountInReconciliationSuccess = _a.includeAccountInReconciliationSuccess, exports.includeAccountInReconciliationFailure = _a.includeAccountInReconciliationFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
532
534
  // Export reducer
533
535
  exports.default = expenseAutomationReconciliationView.reducer;
534
- function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts) {
536
+ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts, summary) {
535
537
  draft.excludedAccountIDs = excludedAccounts.map((ea) => ea.account_id);
536
538
  draft.excludedAccountExclusionInfo = {};
537
539
  excludedAccounts.forEach((ea) => {
@@ -613,6 +615,9 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
613
615
  draft.fetchState = 'Completed';
614
616
  draft.error = undefined;
615
617
  }
618
+ if (summary !== undefined) {
619
+ draft.summary = (0, reconciliationViewState_1.toReconciliationViewSummary)(summary);
620
+ }
616
621
  }
617
622
  function updateReconciliationByAccountID(draft, accounts, selectedPeriod, accountId, reconciliationData, refreshViewInBackground) {
618
623
  const oldRecord = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId];
@@ -9,7 +9,7 @@ import { BankStatusCodeType } from '../../../entity/accountRecon/accountReconSta
9
9
  import { ClassBase } from '../../../entity/class/classState';
10
10
  import { Vendor } from '../../../entity/vendor/vendorState';
11
11
  import { PlaidConnectionDetails } from '../../spendManagement/plaidAccount/plaidAccountViewState';
12
- import { AccountReconciliationLocalData, ActionFetchStates, ReconListUIState, ReconciliationTabsState, ReconciliationViewTabType } from '../types/reconciliationViewState';
12
+ import { AccountReconciliationLocalData, ActionFetchStates, ReconListUIState, ReconciliationTabsState, ReconciliationViewSummary, ReconciliationViewTabType } from '../types/reconciliationViewState';
13
13
  export declare const ALL_ACCOUNT_RECON_SECTION_IDS: readonly ["assets", "liabilities"];
14
14
  export declare const toAccountReconSectionID: (v: string) => "assets" | "liabilities";
15
15
  export type AccountReconSectionID = ReturnType<typeof toAccountReconSectionID>;
@@ -41,6 +41,7 @@ export interface ExpenseAutomationReconciliationViewSelector {
41
41
  selectedAccountId?: ID;
42
42
  selectedDrawerAccountId?: ID;
43
43
  selectedReconAccount?: AccountReconciliationByAccount;
44
+ summary?: ReconciliationViewSummary;
44
45
  }
45
46
  export interface AccountReconciliationBySection {
46
47
  accountIDs: ID[];
@@ -121,6 +121,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
121
121
  excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
122
122
  includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
123
123
  excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
124
+ summary: reconciliationViewState.summary,
124
125
  };
125
126
  }
126
127
  const allAccountIDs = accountReconForMonthYearPeriod.accountIDs;
@@ -429,6 +430,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
429
430
  excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
430
431
  includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
431
432
  excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
433
+ summary: reconciliationViewState.summary,
432
434
  };
433
435
  });
434
436
  const isAccountReconReport = (reportId) => {
@@ -7,6 +7,29 @@ import { BankStatusCodeType } from '../../../entity/accountRecon/accountReconSta
7
7
  import { CustomerBase } from '../../../entity/customer/customerState';
8
8
  import { VendorBase } from '../../../entity/vendor/vendorState';
9
9
  import { ZeniAPIStatus } from '../../../responsePayload';
10
+ import { ReconciliationSummaryPayload } from '../payload/reconciliationPayload';
11
+ export interface ReconciliationSummaryAccounts {
12
+ done: number;
13
+ failed: number;
14
+ inProgress: number;
15
+ total: number;
16
+ }
17
+ export interface ReconciliationSummaryAutoMatched {
18
+ matchedTxns: number;
19
+ totalTxns: number;
20
+ }
21
+ export interface ReconciliationSummaryNeedsReview {
22
+ accountCount: number;
23
+ txnCount: number;
24
+ }
25
+ export interface ReconciliationViewSummary {
26
+ accounts: ReconciliationSummaryAccounts;
27
+ accountsToConnectCount: number;
28
+ autoMatched: ReconciliationSummaryAutoMatched;
29
+ needsReview: ReconciliationSummaryNeedsReview;
30
+ timeSavedPercentage: number;
31
+ }
32
+ export declare function toReconciliationViewSummary(payload: ReconciliationSummaryPayload): ReconciliationViewSummary;
10
33
  export declare const RECONCILE_ACTIONS: readonly ["reconcile", "save_reconcile_for_later", "exclude"];
11
34
  export declare const toReconcileActions: (v: string) => "reconcile" | "save_reconcile_for_later" | "exclude";
12
35
  export type ReconcileActionType = ReturnType<typeof toReconcileActions>;
@@ -110,6 +133,7 @@ export interface ReconciliationViewState extends FetchStateAndError {
110
133
  statementUploadChosen: boolean;
111
134
  selectedAccountId?: ID;
112
135
  selectedDrawerAccountId?: ID;
136
+ summary?: ReconciliationViewSummary;
113
137
  }
114
138
  export interface BankConnectionStatus {
115
139
  connectionInProgress: boolean;
@@ -1,7 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toReconciliationTabsType = exports.toReconcileActions = exports.RECONCILE_ACTIONS = void 0;
4
+ exports.toReconciliationViewSummary = toReconciliationViewSummary;
4
5
  const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
6
+ function toReconciliationViewSummary(payload) {
7
+ return {
8
+ accounts: {
9
+ done: payload.accounts.done,
10
+ failed: payload.accounts.failed,
11
+ inProgress: payload.accounts.in_progress,
12
+ total: payload.accounts.total,
13
+ },
14
+ accountsToConnectCount: payload.accounts_to_connect_count,
15
+ autoMatched: {
16
+ matchedTxns: payload.auto_matched.matched_txns,
17
+ totalTxns: payload.auto_matched.total_txns,
18
+ },
19
+ needsReview: {
20
+ accountCount: payload.needs_review.account_count,
21
+ txnCount: payload.needs_review.txn_count,
22
+ },
23
+ timeSavedPercentage: payload.time_saved_percentage,
24
+ };
25
+ }
5
26
  exports.RECONCILE_ACTIONS = [
6
27
  'reconcile',
7
28
  'save_reconcile_for_later',
@@ -0,0 +1,16 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { RootState } from '../../../reducer';
3
+ import { ZeniAPI } from '../../../zeniAPI';
4
+ import { fetchRegisteredInterests, fetchRegisteredInterestsFailure, fetchRegisteredInterestsSuccess } from '../featureNotificationViewReducer';
5
+ export type ActionType = ReturnType<typeof fetchRegisteredInterests> | ReturnType<typeof fetchRegisteredInterestsSuccess> | ReturnType<typeof fetchRegisteredInterestsFailure>;
6
+ export declare const fetchRegisteredInterestsEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<{
7
+ payload: {
8
+ interests: import("../featureNotificationViewState").FeatureInterest[];
9
+ };
10
+ type: "featureNotificationView/fetchRegisteredInterestsSuccess";
11
+ } | {
12
+ payload: {
13
+ status: import("../../../responsePayload").ZeniAPIStatus<Record<string, unknown>>;
14
+ };
15
+ type: "featureNotificationView/fetchRegisteredInterestsFailure";
16
+ }>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchRegisteredInterestsEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../responsePayload");
7
+ const featureNotificationViewPayload_1 = require("../featureNotificationViewPayload");
8
+ const featureNotificationViewReducer_1 = require("../featureNotificationViewReducer");
9
+ const fetchRegisteredInterestsEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(featureNotificationViewReducer_1.fetchRegisteredInterests.match), (0, operators_1.switchMap)((action) => zeniAPI
10
+ .getJSON(`${zeniAPI.apiEndPoints.notificationMicroServiceBaseUrl}/1.0/feature-interests?feature=${encodeURIComponent(action.payload.feature)}`)
11
+ .pipe((0, operators_1.mergeMap)((response) => {
12
+ if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
13
+ const interests = response.data.feature_interests.map(featureNotificationViewPayload_1.toFeatureInterest);
14
+ return (0, rxjs_1.from)([(0, featureNotificationViewReducer_1.fetchRegisteredInterestsSuccess)(interests)]);
15
+ }
16
+ const status = response.status ??
17
+ (0, responsePayload_1.createZeniAPIStatus)('Failed to fetch registered interests. Please try again.');
18
+ return (0, rxjs_1.from)([(0, featureNotificationViewReducer_1.fetchRegisteredInterestsFailure)(status)]);
19
+ }), (0, operators_1.catchError)((error) => {
20
+ const message = error instanceof Error
21
+ ? error.message
22
+ : 'Unexpected error fetching registered interests.';
23
+ return (0, rxjs_1.from)([
24
+ (0, featureNotificationViewReducer_1.fetchRegisteredInterestsFailure)((0, responsePayload_1.createZeniAPIStatus)(message)),
25
+ ]);
26
+ }))));
27
+ exports.fetchRegisteredInterestsEpic = fetchRegisteredInterestsEpic;
@@ -0,0 +1,14 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { RootState } from '../../../reducer';
3
+ import { ZeniAPI } from '../../../zeniAPI';
4
+ import { notifyMeForFeature, notifyMeForFeatureFailure, notifyMeForFeatureSuccess } from '../featureNotificationViewReducer';
5
+ export type ActionType = ReturnType<typeof notifyMeForFeature> | ReturnType<typeof notifyMeForFeatureSuccess> | ReturnType<typeof notifyMeForFeatureFailure>;
6
+ export declare const notifyMeForFeatureEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<{
7
+ payload: import("../featureNotificationViewPayload").FeatureInterestDataPayload;
8
+ type: "featureNotificationView/notifyMeForFeatureSuccess";
9
+ } | {
10
+ payload: {
11
+ status: import("../../../responsePayload").ZeniAPIStatus<Record<string, unknown>>;
12
+ };
13
+ type: "featureNotificationView/notifyMeForFeatureFailure";
14
+ }>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.notifyMeForFeatureEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../responsePayload");
7
+ const featureNotificationViewReducer_1 = require("../featureNotificationViewReducer");
8
+ const notifyMeForFeatureEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(featureNotificationViewReducer_1.notifyMeForFeature.match), (0, operators_1.switchMap)((action) => zeniAPI
9
+ .postAndGetJSON(`${zeniAPI.apiEndPoints.notificationMicroServiceBaseUrl}/1.0/feature-interests`, {
10
+ additional_info: action.payload.additionalInfo,
11
+ email: action.payload.email,
12
+ feature: action.payload.feature,
13
+ })
14
+ .pipe((0, operators_1.mergeMap)((response) => {
15
+ if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
16
+ return (0, rxjs_1.from)([(0, featureNotificationViewReducer_1.notifyMeForFeatureSuccess)(response.data)]);
17
+ }
18
+ const status = response.status ??
19
+ (0, responsePayload_1.createZeniAPIStatus)('Failed to register interest. Please try again.');
20
+ return (0, rxjs_1.from)([(0, featureNotificationViewReducer_1.notifyMeForFeatureFailure)(status)]);
21
+ }), (0, operators_1.catchError)((error) => {
22
+ const message = error instanceof Error
23
+ ? error.message
24
+ : 'Unexpected error registering interest.';
25
+ return (0, rxjs_1.from)([
26
+ (0, featureNotificationViewReducer_1.notifyMeForFeatureFailure)((0, responsePayload_1.createZeniAPIStatus)(message)),
27
+ ]);
28
+ }))));
29
+ exports.notifyMeForFeatureEpic = notifyMeForFeatureEpic;
@@ -0,0 +1,23 @@
1
+ import { ZeniAPIResponse } from '../../responsePayload';
2
+ import { FeatureInterest } from './featureNotificationViewState';
3
+ /**
4
+ * Backend payload shapes for the FeatureInterest API exposed by
5
+ * `@repo:notifications`. snake_case is preserved here verbatim; the
6
+ * `toFeatureInterest` mapper converts to the camelCase state shape.
7
+ */
8
+ export interface FeatureInterestDataPayload {
9
+ create_time: string;
10
+ feature: string;
11
+ interest_id: string;
12
+ notified: boolean;
13
+ update_time: string;
14
+ additional_info?: string | null;
15
+ email?: string | null;
16
+ notified_time?: string | null;
17
+ }
18
+ export interface FeatureInterestListPayload {
19
+ feature_interests: FeatureInterestDataPayload[];
20
+ }
21
+ export type FeatureInterestResponse = ZeniAPIResponse<FeatureInterestDataPayload>;
22
+ export type FeatureInterestListResponse = ZeniAPIResponse<FeatureInterestListPayload>;
23
+ export declare const toFeatureInterest: (payload: FeatureInterestDataPayload) => FeatureInterest;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toFeatureInterest = void 0;
4
+ const zeniDayJS_1 = require("../../zeniDayJS");
5
+ const toFeatureInterest = (payload) => ({
6
+ interestId: payload.interest_id,
7
+ feature: payload.feature,
8
+ notified: payload.notified,
9
+ createTime: (0, zeniDayJS_1.date)(payload.create_time),
10
+ updateTime: (0, zeniDayJS_1.date)(payload.update_time),
11
+ additionalInfo: payload.additional_info ?? undefined,
12
+ email: payload.email ?? undefined,
13
+ notifiedTime: payload.notified_time != null ? (0, zeniDayJS_1.date)(payload.notified_time) : undefined,
14
+ });
15
+ exports.toFeatureInterest = toFeatureInterest;
@@ -0,0 +1,19 @@
1
+ import { ZeniAPIStatus } from '../../responsePayload';
2
+ import { FeatureInterestDataPayload } from './featureNotificationViewPayload';
3
+ import { FeatureInterest, FeatureNotificationViewState } from './featureNotificationViewState';
4
+ export declare const initialState: FeatureNotificationViewState;
5
+ export declare const clearFeatureNotificationView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"featureNotificationView/clearFeatureNotificationView">, fetchRegisteredInterests: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[feature: string], {
6
+ feature: string;
7
+ }, "featureNotificationView/fetchRegisteredInterests", never, never>, fetchRegisteredInterestsFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[status: ZeniAPIStatus<Record<string, unknown>>], {
8
+ status: ZeniAPIStatus<Record<string, unknown>>;
9
+ }, "featureNotificationView/fetchRegisteredInterestsFailure", never, never>, fetchRegisteredInterestsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[interests: FeatureInterest[]], {
10
+ interests: FeatureInterest[];
11
+ }, "featureNotificationView/fetchRegisteredInterestsSuccess", never, never>, notifyMeForFeature: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[feature: string, additionalInfo: string, email: string], {
12
+ feature: string;
13
+ additionalInfo: string;
14
+ email: string;
15
+ }, "featureNotificationView/notifyMeForFeature", never, never>, notifyMeForFeatureFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[status: ZeniAPIStatus<Record<string, unknown>>], {
16
+ status: ZeniAPIStatus<Record<string, unknown>>;
17
+ }, "featureNotificationView/notifyMeForFeatureFailure", never, never>, notifyMeForFeatureSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: FeatureInterestDataPayload], FeatureInterestDataPayload, "featureNotificationView/notifyMeForFeatureSuccess", never, never>;
18
+ declare const _default: import("redux").Reducer<FeatureNotificationViewState>;
19
+ export default _default;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.notifyMeForFeatureSuccess = exports.notifyMeForFeatureFailure = exports.notifyMeForFeature = exports.fetchRegisteredInterestsSuccess = exports.fetchRegisteredInterestsFailure = exports.fetchRegisteredInterests = exports.clearFeatureNotificationView = exports.initialState = void 0;
5
+ const toolkit_1 = require("@reduxjs/toolkit");
6
+ const featureNotificationViewPayload_1 = require("./featureNotificationViewPayload");
7
+ exports.initialState = {
8
+ fetchRegisteredInterestsState: {
9
+ fetchState: 'Not-Started',
10
+ error: undefined,
11
+ },
12
+ notifyMeForFeatureState: {
13
+ fetchState: 'Not-Started',
14
+ error: undefined,
15
+ },
16
+ registeredInterests: [],
17
+ };
18
+ const featureNotificationView = (0, toolkit_1.createSlice)({
19
+ name: 'featureNotificationView',
20
+ initialState: exports.initialState,
21
+ reducers: {
22
+ notifyMeForFeature: {
23
+ prepare(feature, additionalInfo, email) {
24
+ return { payload: { feature, additionalInfo, email } };
25
+ },
26
+ reducer(draft,
27
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
28
+ _action) {
29
+ draft.notifyMeForFeatureState = {
30
+ fetchState: 'In-Progress',
31
+ error: undefined,
32
+ };
33
+ },
34
+ },
35
+ notifyMeForFeatureSuccess: {
36
+ prepare(payload) {
37
+ return { payload };
38
+ },
39
+ reducer(draft, action) {
40
+ draft.notifyMeForFeatureState = {
41
+ fetchState: 'Completed',
42
+ error: undefined,
43
+ };
44
+ const interest = (0, featureNotificationViewPayload_1.toFeatureInterest)(action.payload);
45
+ // Idempotent: if a row for this (feature, additional_info) already
46
+ // exists in the slice, replace it; otherwise append.
47
+ const existingIndex = draft.registeredInterests.findIndex((r) => r.feature === interest.feature &&
48
+ r.additionalInfo === interest.additionalInfo);
49
+ if (existingIndex >= 0) {
50
+ draft.registeredInterests[existingIndex] = interest;
51
+ }
52
+ else {
53
+ draft.registeredInterests.push(interest);
54
+ }
55
+ },
56
+ },
57
+ notifyMeForFeatureFailure: {
58
+ prepare(status) {
59
+ return { payload: { status } };
60
+ },
61
+ reducer(draft, action) {
62
+ draft.notifyMeForFeatureState = {
63
+ fetchState: 'Error',
64
+ error: action.payload.status,
65
+ };
66
+ },
67
+ },
68
+ fetchRegisteredInterests: {
69
+ prepare(feature) {
70
+ return { payload: { feature } };
71
+ },
72
+ reducer(draft,
73
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
74
+ _action) {
75
+ draft.fetchRegisteredInterestsState = {
76
+ fetchState: 'In-Progress',
77
+ error: undefined,
78
+ };
79
+ },
80
+ },
81
+ fetchRegisteredInterestsSuccess: {
82
+ prepare(interests) {
83
+ return { payload: { interests } };
84
+ },
85
+ reducer(draft, action) {
86
+ draft.fetchRegisteredInterestsState = {
87
+ fetchState: 'Completed',
88
+ error: undefined,
89
+ };
90
+ draft.registeredInterests = action.payload.interests;
91
+ },
92
+ },
93
+ fetchRegisteredInterestsFailure: {
94
+ prepare(status) {
95
+ return { payload: { status } };
96
+ },
97
+ reducer(draft, action) {
98
+ draft.fetchRegisteredInterestsState = {
99
+ fetchState: 'Error',
100
+ error: action.payload.status,
101
+ };
102
+ },
103
+ },
104
+ clearFeatureNotificationView(draft) {
105
+ Object.assign(draft, exports.initialState);
106
+ },
107
+ },
108
+ });
109
+ _a = featureNotificationView.actions, exports.clearFeatureNotificationView = _a.clearFeatureNotificationView, exports.fetchRegisteredInterests = _a.fetchRegisteredInterests, exports.fetchRegisteredInterestsFailure = _a.fetchRegisteredInterestsFailure, exports.fetchRegisteredInterestsSuccess = _a.fetchRegisteredInterestsSuccess, exports.notifyMeForFeature = _a.notifyMeForFeature, exports.notifyMeForFeatureFailure = _a.notifyMeForFeatureFailure, exports.notifyMeForFeatureSuccess = _a.notifyMeForFeatureSuccess;
110
+ exports.default = featureNotificationView.reducer;