@zeniai/client-epic-state 5.0.68 → 5.0.69-beta0RJ

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 (40) hide show
  1. package/lib/entity/scheduleActivityLog/scheduleActivityLogPayload.d.ts +36 -0
  2. package/lib/entity/scheduleActivityLog/scheduleActivityLogPayload.js +82 -0
  3. package/lib/entity/scheduleActivityLog/scheduleActivityLogReducer.d.ts +6 -0
  4. package/lib/entity/scheduleActivityLog/scheduleActivityLogReducer.js +27 -0
  5. package/lib/entity/scheduleActivityLog/scheduleActivityLogSelector.d.ts +4 -0
  6. package/lib/entity/scheduleActivityLog/scheduleActivityLogSelector.js +17 -0
  7. package/lib/entity/scheduleActivityLog/scheduleActivityLogState.d.ts +56 -0
  8. package/lib/entity/scheduleActivityLog/scheduleActivityLogState.js +23 -0
  9. package/lib/epic.d.ts +2 -1
  10. package/lib/epic.js +2 -1
  11. package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogPayload.js +76 -0
  12. package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogReducer.js +23 -0
  13. package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogSelector.js +10 -0
  14. package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogState.js +19 -0
  15. package/lib/esm/epic.js +2 -1
  16. package/lib/esm/index.js +2 -0
  17. package/lib/esm/reducer.js +6 -0
  18. package/lib/esm/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.js +67 -0
  19. package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewPayload.js +1 -0
  20. package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewReducer.js +47 -0
  21. package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewSelector.js +33 -0
  22. package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewState.js +1 -0
  23. package/lib/esm/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.js +4 -0
  24. package/lib/index.d.ts +3 -0
  25. package/lib/index.js +6 -1
  26. package/lib/reducer.d.ts +6 -0
  27. package/lib/reducer.js +6 -0
  28. package/lib/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.d.ts +11 -0
  29. package/lib/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.js +72 -0
  30. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewPayload.d.ts +8 -0
  31. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewPayload.js +2 -0
  32. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewReducer.d.ts +17 -0
  33. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewReducer.js +51 -0
  34. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewSelector.d.ts +8 -0
  35. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewSelector.js +36 -0
  36. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewState.d.ts +5 -0
  37. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewState.js +2 -0
  38. package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.d.ts +2 -1
  39. package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.js +4 -0
  40. package/package.json +2 -2
@@ -0,0 +1,76 @@
1
+ import { date } from '../../zeniDayJS';
2
+ import { mapAccountBasePayloadToAccountBase, } from '../account/accountPayload';
3
+ import { mapClassBasePayloadToClassBase, } from '../class/classPayload';
4
+ import { toAISummary, } from '../transaction/payloadTypes/transactionLinePayload';
5
+ import { mapVendorBasePayloadToVendorBase, } from '../vendor/vendorPayload';
6
+ import { toScheduleActivityLogEventType, } from './scheduleActivityLogState';
7
+ export const toScheduleActivityLogId = (correlationId, eventType, lineId) => `${correlationId}-${eventType}-${lineId ?? '1'}`;
8
+ // Phase 2: deduped one-time warns so a single malformed backend payload does
9
+ // not spam the console on every render. Keys are intentionally specific (id +
10
+ // side) so distinct gaps still surface.
11
+ const warnedPayloadKeys = new Set();
12
+ const warnPayloadOnce = (key, message, payload) => {
13
+ if (warnedPayloadKeys.has(key)) {
14
+ return;
15
+ }
16
+ warnedPayloadKeys.add(key);
17
+ console.warn(message, payload);
18
+ };
19
+ const toScheduleActivityLogLine = (line) => {
20
+ // Tolerate a null/undefined line; treat every field as missing rather than
21
+ // throwing on `undefined.schedule_memo`. Caller is responsible for emitting
22
+ // any contextual warn (we don't have id here).
23
+ const safe = line ?? {};
24
+ const memo = safe.schedule_memo ?? safe.transaction_memo;
25
+ return {
26
+ account: safe.account
27
+ ? mapAccountBasePayloadToAccountBase(safe.account)
28
+ : undefined,
29
+ class: safe.accounting_class
30
+ ? mapClassBasePayloadToClassBase(safe.accounting_class)
31
+ : undefined,
32
+ vendor: safe.vendor
33
+ ? mapVendorBasePayloadToVendorBase(safe.vendor)
34
+ : undefined,
35
+ memo,
36
+ description: safe.line_description,
37
+ };
38
+ };
39
+ const toTransaction = (transaction, correlationId, userId) => {
40
+ if (transaction == null) {
41
+ return undefined;
42
+ }
43
+ if (transaction.original_line == null) {
44
+ warnPayloadOnce(`missingLine:${correlationId}:original_line`, '[scheduleActivityLog] missing line payload', { correlationId, side: 'original_line' });
45
+ }
46
+ if (transaction.updated_line == null) {
47
+ warnPayloadOnce(`missingLine:${correlationId}:updated_line`, '[scheduleActivityLog] missing line payload', { correlationId, side: 'updated_line' });
48
+ }
49
+ return {
50
+ lineId: transaction.line_id,
51
+ originalLine: toScheduleActivityLogLine(transaction.original_line),
52
+ updatedLine: toScheduleActivityLogLine(transaction.updated_line),
53
+ correlationId,
54
+ userId,
55
+ };
56
+ };
57
+ export const toScheduleActivityLogData = (data, correlationId, eventType) => {
58
+ if (data.transaction == null) {
59
+ warnPayloadOnce(`missingTransaction:${correlationId}`, '[scheduleActivityLog] data.transaction missing', { correlationId, eventType });
60
+ }
61
+ return {
62
+ aiSummaries: (data.ai_summaries ?? []).map(toAISummary),
63
+ transaction: toTransaction(data.transaction, correlationId, data.user_id),
64
+ user: undefined,
65
+ };
66
+ };
67
+ export const toScheduleActivityLog = (payload) => {
68
+ return {
69
+ id: toScheduleActivityLogId(payload.correlation_id, payload.event_type, payload.data?.transaction?.line_id),
70
+ data: payload.data != null
71
+ ? toScheduleActivityLogData(payload.data, payload.correlation_id, payload.event_type)
72
+ : null,
73
+ eventType: toScheduleActivityLogEventType(payload.event_type),
74
+ createTime: date(payload.create_time),
75
+ };
76
+ };
@@ -0,0 +1,23 @@
1
+ import { createSlice } from '@reduxjs/toolkit';
2
+ import { toScheduleActivityLog, } from './scheduleActivityLogPayload';
3
+ export const initialState = {
4
+ scheduleActivityLogById: {},
5
+ };
6
+ const scheduleActivityLog = createSlice({
7
+ name: 'scheduleActivityLog',
8
+ initialState,
9
+ reducers: {
10
+ updateScheduleActivityLogs(draft, action) {
11
+ action.payload.forEach((scheduleActivityLogPayload) => {
12
+ const scheduleActivityLog = toScheduleActivityLog(scheduleActivityLogPayload);
13
+ draft.scheduleActivityLogById[scheduleActivityLog.id] =
14
+ scheduleActivityLog;
15
+ });
16
+ },
17
+ clearAllScheduleActivityLogs(draft) {
18
+ draft.scheduleActivityLogById = {};
19
+ },
20
+ },
21
+ });
22
+ export const { updateScheduleActivityLogs, clearAllScheduleActivityLogs } = scheduleActivityLog.actions;
23
+ export default scheduleActivityLog.reducer;
@@ -0,0 +1,10 @@
1
+ import recordGet from 'lodash/get';
2
+ export function getScheduleActivityLogsByIds(scheduleActivityLogState, scheduleActivityLogIds) {
3
+ const scheduleActivityLogs = scheduleActivityLogIds
4
+ .map((scheduleActivityLogId) => getScheduleActivityLogById(scheduleActivityLogState, scheduleActivityLogId))
5
+ .filter((value) => value != null);
6
+ return scheduleActivityLogs;
7
+ }
8
+ export function getScheduleActivityLogById(scheduleActivityLogState, scheduleActivityLogId) {
9
+ return recordGet(scheduleActivityLogState.scheduleActivityLogById, scheduleActivityLogId, undefined);
10
+ }
@@ -0,0 +1,19 @@
1
+ import { stringToUnion } from '../../commonStateTypes/stringToUnion';
2
+ /**
3
+ * Phase 1 retains a small placeholder union; Phase 2 will extend with real
4
+ * schedule event types (schedule.created, agent_je.detected, agent_je.drafted,
5
+ * je.posted, schedule.user_update.<field>, etc.) once the backend contract is
6
+ * finalised. Keeping the union narrow lets `toScheduleActivityLogEventType`
7
+ * fall back to the raw string for unknown events without throwing.
8
+ */
9
+ export const ALL_SCHEDULE_ACTIVITY_LOG_EVENT_TYPE = [
10
+ 'schedule.created',
11
+ 'schedule.user_update',
12
+ 'agent_je.detected',
13
+ 'agent_je.eligible',
14
+ 'agent_je.deleted',
15
+ 'agent_je.drafted',
16
+ 'je.posted',
17
+ 'transaction.sync_database',
18
+ ];
19
+ export const toScheduleActivityLogEventType = (v) => stringToUnion(v, ALL_SCHEDULE_ACTIVITY_LOG_EVENT_TYPE);
package/lib/esm/epic.js CHANGED
@@ -286,6 +286,7 @@ import { fetchRevenueClassesViewEpic, } from './view/revenueClassesView/revenueC
286
286
  import { fetchRevenueForTimeframeClassesViewEpic, } from './view/revenueClassesView/revenueForTimeframeClassesViewEpic';
287
287
  import { fetchReviewCompanyViewEpic, } from './view/reviewCompanyView/fetchReviewCompanyViewEpic';
288
288
  import { retryBankAccountConnectionEpic, } from './view/reviewCompanyView/retryBankAccountConnectionEpic';
289
+ import { fetchScheduleActivityLogEpic, } from './view/scheduleActivityLogView/fetchScheduleActivityLogEpic';
289
290
  import { cancelScheduleAccruedJournalEntryEpic, } from './view/scheduleView/scheduleAccruedDetailView/epics/cancelScheduleAccruedJournalEntryEpic';
290
291
  import { createNewSchedulesAccruedEpic, } from './view/scheduleView/scheduleAccruedDetailView/epics/createNewSchedulesAccruedEpic';
291
292
  import { deleteScheduleAccruedDetailEpic, } from './view/scheduleView/scheduleAccruedDetailView/epics/deleteScheduleAccruedDetailEpic';
@@ -578,7 +579,7 @@ import { fetchZeniAccStatementPageEpic, } from './view/zeniAccStatementList/fetc
578
579
  import { fetchZeniAccountsPromoCardEpic, } from './view/zeniAccountsPromoCard/zeniAccountsPromoCardEpic';
579
580
  import { approveOAuthConsentEpic, } from './view/zeniOAuthView/epics/approveOAuthConsentEpic';
580
581
  // Note: Please maintain strict alphabetical order
581
- const combinedEpics = combineEpics(acceptBillPayTermsEpic, acceptBillPayUpdatedTermsEpic, acceptChargeCardTermsEpic, acceptEmployeeRemiTermsEpic, acceptMasterTOSEpic, acceptRemiTermsEpic, acceptTreasuryTermsEpic, acceptZeniAccountTermsEpic, addCardPaymentSourceEpic, approveOAuthConsentEpic, approveOrRejectBillEpic, approveOrRejectBillsBulkActionEpic, approveOrRejectRemiEpic, approveOrRejectRemisBulkActionEpic, approveVendorGlobalReviewEpic, archiveTaskEpic, backgroundRefetchReviewTabEpic, bulkUpdateTaskListEpic, cancelAiAccountantOnboardingEpic, cancelAndDeleteBillEpic, cancelAndDeleteRemiEpic, cancelOrDeleteBillsBulkActionEpic, cancelOrDeleteRemisBulkActionEpic, cancelScheduleAccruedJournalEntryEpic, changeZeniPersonRolesEpic, checkDepositEpic, clearAllEpic, closeChargeCardEpic, closeChargeCardsEpic, companyManagementSavePendingUpdatesEpic, companyManagementSaveUpdatesEpic, confirmCardSetupIntentEpic, convertAmountToHomeCurrencyEpic, createAddressEpic, createAutoTransferRuleEpic, createBankAccountEpic, createCardSetupIntentEpic, createCheckingAccountEpic, createCompanyAddressEpic, createCompanyOfficersEpic, createCompanyUserAddressEpic, createGlobalMerchantEpic, createInternationalBankAccountEpic, createNewSchedulesAccruedEpic, createNewSchedulesEpic, createNewTaskGroupEpic, createPaymentInstrumentEpic, createSessionAndSubmitEpic, createSessionEpic, createTagEpic, createTaskFromTaskGroupTemplateEpic, createUserBankAccountEpic, deleteAccountStatementEpic, deleteAutoTransferRuleEpic, excludeAccountFromReconciliationEpic, includeAccountInReconciliationEpic, deleteBankAccountEpic, deleteBillEpic, deleteChatSessionEpic, deleteConnectionEpic, deleteBillPayApprovalRuleEpic, deleteFileEpic, deleteFileListEpic, deleteInternationalBankAccountEpic, deletePaymentInstrumentEpic, deletePersonEpic, deleteRemiApprovalRuleEpic, deleteRemiEpic, deleteScheduleAccruedDetailEpic, deleteScheduleDetailEpic, deleteTagEpic, deleteTaskEpic, snoozeTaskEpic, unsnoozeTaskEpic, deleteTaskGroupEpic, deleteTransactionAttachmentEpic, deleteUserBankAccountEpic, doMagicLinkSignInEpic, doSignInEpic, doSignOutEpic, sendEmailMagicLinkToUserEpic, sessionHeartbeatEpic, verifyDeviceWithTwoFAEpic, downloadAccountingProviderAttachmentEpic, dragNDropTasksEpic, enableChargeCardAutoPayEpic, enableSetupEpic, establishOnboardingPlaidConnectionEpic, establishPlaidConnectionEpic, expressInterestChargeCardEpic, fetchAccountListEpic, fetchAccountListForAccountTypesEpic, fetchAccountSettingsListForAccountTypesEpic, fetchAccruedScheduleListEpic, fetchActiveTenantEpic, fetchAddressEpic, fetchAiAccountantCustomersEpic, fetchAiAccountantJobsEpic, fetchAllCockpitViewsEpic, fetchAllExpenseAutomationTabsEpic, fetchAllPeopleRequiredViewsEpic, fetchAllTagsEpic, fetchAllTaskGroupsEpic, fetchAllTenantsEpic, fetchAndUpdateVendorRecommendationsEpic, fetchAggregatedReportEpic, fetchApAgingDetailEpic, fetchApAgingEpic, fetchArAgingDetailEpic, fetchArAgingEpic, fetchAuditReportGroupViewEpic, fetchAuditRuleGroupViewEpic, fetchAutoTransferReviewDetailEpic, fetchAutoTransferRuleHistoryEpic, fetchAutoTransferRulesEpic, fetchBalanceSheetEpic, fetchBalanceSheetForTimeframeEpic, fetchBankAccountsListEpic, fetchBankConnectionsViewEpic, fetchBankCountryNameByIbanEpic, fetchBankNameByRoutingEpic, fetchBankNameBySwiftEpic, fetchBillAndInitializeLocalStoreEpic, fetchBillDetailEpic, fetchBillingAccountsListEpic, fetchBillListEpic, fetchBillListPerTabEpic, fetchBillPayApproversDetailsEpic, fetchBillPayApproversListEpic, fetchBillPayCardEpic, fetchBillPayConfigEpic, fetchBillPaySetupApproverViewEpic, fetchBillPaySetupViewEpic, fetchCardBalanceEpic, fetchCardProfilesEpic, fetchCashbackDetailEpic, fetchCashBalanceEpic, fetchCashFlowEpic, fetchCashFlowForTimeframeEpic, fetchCashInCashOutEpic, fetchCashPositionEpic, fetchChargeCardConfigEpic, fetchChargeCardDetailEpic, fetchChargeCardDetailPageEpic, fetchChargeCardListEpic, fetchChargeCardListPageEpic, fetchChargeCardPaymentPageEpic, fetchChargeCardRepaymentDetailEpic, fetchChargeCardPaymentHistoryEpic, fetchChargeCardSetupViewEpic, fetchChargeCardStatementListEpic, fetchChargeCardTransactionAttachmentsEpic, fetchChargeCardTransactionListEpic, fetchChargeCardTransactionStatisticsEpic, fetchChargeCardsRecurringExpensesEpic, fetchChatHistoryEpic, fetchChatSessionsForUserEpic, fetchClassListEpic, fetchCollaborationAuthTokenEpic, fetchCompanyBillingAddressEpic, fetchCompanyConfigEpic, fetchCompanyHealthMetricConfigEpic, fetchCompanyHealthMetricViewEpic, fetchCompanyManagementViewEpic, fetchCompanyMetaDataEpic, fetchCompanyMonthEndReportHistoricDataEpic, fetchCompanyMonthEndReportHistoricDatesEpic, fetchCompanyMonthEndReportTemplatesEpic, fetchCompanyMonthEndReportViewEpic, fetchCompanyOnboardingViewEpic, fetchCompanyPassportViewEpic, fetchCompanyPortfolioViewEpic, fetchCompanyTaskManagerViewEpic, fetchTaskManagerMetricsEpic, fetchCreditAccountEpic, fetchCreditAccountRepaymentEpic, fetchCreditAgentAccessEpic, fetchCreditAgentMacroEpic, fetchCurrencyConversionValueEpic, fetchDashboardEpic, fetchDashboardLayoutEpic, fetchDebitCardSummaryEpic, fetchDepositAccountDetailEpic, fetchDepositAccountEpic, fetchDepositAccountHistoryEpic, fetchDepositAccountLimitEpic, fetchDepositAccountListEpic, fetchDepositAccountListForCardsEpic, fetchDepositAccountTransactionListEpic, fetchDownloadSchedulesEpic, fetchDuplicateBillPayReviewEpic, fetchDuplicateReimbursementEpic, fetchEditBillDetailPageEpic, fetchEditRemiDetailPageEpic, fetchEligibleActionsForBillEpic, fetchEntityAutoCompleteEpic, fetchEntityHistoryEpic, fetchEntityRecommendationsByTransactionIdEpic, fetchExcludedResourcesEpic, fetchExpenseAutomationFluxAnalysisViewEpic, fetchExpenseAutomationInitializeTransactionCategorizationViewLocalDataEpic, fetchExpenseAutomationJeSchedulesEpic, fetchExpenseAutomationJESchedulesPageEpic, fetchExpenseAutomationMarkTransactionAsNotMiscategorizedEpic, fetchExpenseAutomationMissingReceiptsEpic, bulkUploadReceiptsEpic, confirmBulkUploadMatchEpic, fetchBulkUploadBatchDetailsEpic, fetchMultipleBatchDetailsEpic, fetchMoreBatchDetailsEpic, fetchBulkUploadBatchesEpic, fetchCompletedTransactionsEpic, refetchCompletedTransactionsOnBulkUploadSortEpic, bulkUploadAutomatchingTimeoutEpic, bulkUploadMatchResultToastEpic, pollBulkUploadBatchStatusEpic, pusherBatchStatusCompletionEpic, restoreBulkUploadAutomatchingOnMountEpic, searchTransactionsForManualMatchEpic, fetchExpenseAutomationReconciliationsViewEpic, fetchExpenseAutomationSaveTransactionCategorizationEpic, fetchExpenseAutomationTransactionCategorizationEpic, fetchExpenseAutomationTransactionCategorizationViewEpic, fetchExpenseAutomationUpdateTransactionCategorizationEpic, fetchExpenseTrendEpic, fetchExpressPayInitialDetailsEpic, fetchExternalConnectionsEpic, fetchFileEpic, fetchFileListEpic, fetchFinanceStatementEpic, fetchForecastListEpic, initiateReportsClassViewRefetchingEpic, reportsResyncEpic, fetchGlobalMerchantAutoCompleteViewEpic, fetchGlobalMerchantRecommendationEpic, fetchIncomeTrendEpic, fetchInsightsCardEpic, fetchInternationalWireDynamicFormEpic, fetchIntlVerificationFormEpic, fetchIssueCardPageEpic, fetchMagicLinkBankNameByRoutingEpic, fetchMagicLinkBankNameBySwiftEpic, fetchMagicLinkBillEpic, fetchMagicLinkTenantEpic, fetchManagementViewEpic, fetchMerchantListEpic, fetchMonthClosePerformanceTrendEpic, fetchMonthEndCloseChecksEpic, fetchMyProfileEpic, fetchMyProfileViewEpic, fetchNetBurnOrIncomeClassesViewEpic, fetchNetBurnOrIncomeEpic, fetchNetBurnOrIncomeForTimeframeClassesViewEpic, fetchNetBurnOrIncomeForTimeframeEpic, fetchNetBurnOrIncomeStoryCardEpic, fetchNetBurnOrIncomeWithForecastEpic, fetchNotificationSettingsEpic, fetchNotificationSettingsViewEpic, fetchNotificationUnreadCountEpic, fetchNotificationViewEpic, fetchRegisteredInterestsEpic, fetchOnboardingCompletedCompaniesEpic, fetchOnboardingCustomerSetupViewEpic, fetchOnboardingCustomerViewEpic, fetchOnboardingViewEpic, fetchOpExByVendorEpic, fetchOpExByVendorReportForTimeframeEpic, fetchOpExByVendorReportSummaryEpic, fetchOpExClassesViewEpic, fetchOpExEpic, fetchOpExForTimeframeClassesViewEpic, fetchOpExReportForTimeframeEpic, fetchOpExWithForecastEpic, fetchOwnerListEpic, fetchParentSubsidiaryManagementViewEpic, fetchPaymentAccountBalanceEpic, fetchPaymentAccountListEpic, fetchPaymentSourcesEpic, fetchPeopleEpic, fetchPeoplePageEpic, fetchPortfolioViewEpic, fetchPreviousBillsEpic, fetchProfitAndLossClassesViewEpic, fetchProfitAndLossEpic, fetchProfitAndLossForTimeframeClassesViewEpic, fetchProfitAndLossForTimeframeProjectViewEpic, fetchProfitAndLossForTimeframeEpic, fetchProfitAndLossProjectViewEpic, fetchProjectListEpic, fetchQBOConnectionPoolEpic, fetchRecommendationByEntityIdEpic, fetchRecommendationByEntityNameEpic, fetchRecommendationForAccountSettingsEpic, fetchRecommendationForAccountTypeEpic, fetchRecommendationsAndUpdateMerchantRecommendationsEpic, fetchRecommendedTransactionRowIndexEpic, fetchReferralsEpic, fetchReimbursementCardEpic, fetchReimbursementConfigEpic, fetchRemiAndInitializeLocalStoreEpic, fetchRemiApproversDetailsEpic, fetchRemiApproversListEpic, fetchRemiDetailEpic, fetchRemiListEpic, fetchRemiListPerTabEpic, fetchRemiSetupApproverViewEpic, fetchRemiSetupViewEpic, fetchRevenueClassesViewEpic, fetchRevenueEpic, fetchRevenueForTimeframeClassesViewEpic, fetchRevenueForTimeframeEpic, fetchRevenueWithForecastEpic, fetchReviewCompanyViewEpic, fetchReviewTransferDetailEpic, fetchRewardsPlanEpic, fetchScheduleAccruedDetailsEpic, fetchScheduleAccruedDetailsPageEpic, fetchScheduleDetailsEpic, fetchScheduleDetailsPageEpic, fetchScheduleListEpic, fetchSchedulesAccountEpic, fetchSubscriptionAddOnsEpic, fetchSubscriptionCouponsEpic, fetchSubscriptionCreateEstimateEpic, fetchSubscriptionDetailsEpic, fetchSubscriptionListEpic, fetchSubscriptionPlansEpic, fetchSubscriptionSummaryForTenantEpic, fetchSubscriptionUpdateEstimateEpic, fetchSubscriptionViewEpic, fetchSuggestedQuestionsEpic, fetchTaskDetailEpic, fetchTaskDetailPageEpic, fetchTaskGroupTemplatesEpic, fetchTaskHistoryEpic, fetchTaskListEpic, fetchTaskListPageEpic, fetchTasksCardEpic, fetchTopExEpic, fetchTransactionActivityLogEpic, fetchTransactionDetailEpic, fetchTransactionListByAccountEpic, fetchTransactionListByClassEpic, fetchTransactionListByProjectEpic, fetchTransactionListByEntityEpic, fetchTransactionsForEntityEpic, fetchTransactionsListByCategoryTypeEpic, fetchTreasuryDetailEpic, fetchTreasuryFundsEpic, fetchTreasuryHistoryEpic, fetchTreasurySetupViewEpic, fetchTreasuryStatementListEpic, fetchTreasuryTaxLetterListEpic, fetchTreasuryTransactionListEpic, updatePortfolioAllocationEpic, fetchPortfolioAllocationEpic, fetchTrendForEntityEpic, fetchUserDetailEpic, fetchUserFinancialAccountEpic, fetchUserListByTypeEpic, fetchUserRoleConfigEpic, fetchVendor1099TypeListEpic, fetchVendorAndUpdateBillLocalDataEpic, fetchVendorByNameAndParseInvoiceEpic, fetchVendorDetailsEpic, fetchVendorEpic, fetchVendorFirstReviewAttachmentsEpic, fetchVendorFirstReviewViewEpic, fetchVendorGlobalReviewViewEpic, fetchVendorsFiling1099AllEpic, fetchVendorsFiling1099DownloadEpic, fetchVendorsFiling1099ListEpic, fetchVendorsListEpic, fetchVendorsTabVendorDetailPageViewEpic, fetchVendorsTabVendorDetailsEpic, fetchVendorsTabVendorEpic, fetchVendorTabViewEpic, fetchVendorTypeListEpic, fetchZeniAccountListEpic, fetchZeniAccountsConfigEpic, fetchZeniAccountSetupViewEpic, fetchZeniAccountsPromoCardEpic, fetchZeniAccStatementListEpic, fetchZeniAccStatementPageEpic, fetchZeniUsersEpic, getOnboardingEmailGroupEpic, getOnboardingPlaidLinkTokenEpic, getPaymentAccountsEpic, getPlaidLinkTokenEpic, ignoreExpenseAutomationJEScheduleEpic, improveUsingZeniGPTEpic, initialiseExpenseAutomationReconciliationLocalDataForSelectedAccountIdEpic, initializeAccountMappingViewEpic, initializeAccountSettingsViewEpic, initializeBillPaySetupApproverViewUpdateDataEpic, initializeBillToLocalStoreEpic, initializeCardUserOnboardingLocalDataEpic, initializeCompanyHealthMetricViewLocalDataEpic, initializeDynamicFormEpic, initializeEditPersonEpic, initializeExpenseAutomationJeScheduleLocalDataEpic, initializeInternationalWireLocalDataEpic, initializeIntlVerificationFormEpic, initializeMyProfileLocalDataEpic, initializeOnboardingCustomerViewUpdateDataEpic, initializeRemiSetupApproverViewUpdateDataEpic, initializeRemiToLocalStoreEpic, initializeScheduleAccruedDetailLocalDataEpic, initializeScheduleDetailLocalDataEpic, initializeSubscriptionLocalDataEpic, initializeTaskToLocalStoreEpic, initializeTransactionDetailLocalDataEpic, initializeVendorAddressEpic, initiateChargeCardRepaymentEpic, invitePeopleEpic, inviteZeniPeopleEpic, issueChargeCardEpic, lockChargeCardEpic, lockChargeCardsEpic, markAsCompleteScheduleDetailEpic, markTransactionAsNotMiscategorizedEpic, notifyMeForFeatureEpic, parallelFetchAccountTransactionListEpic, parallelFetchClassTransactionListEpic, parallelFetchProjectTransactionListEpic, parallelFetchEntityTransactionListEpic, parallelFetchTransactionListByCategoryTypeEpic, parseInvoiceToBillEpic, parseReceiptsToRemiEpic, peopleSaveUpdatesEpic, pushToastNotificationEpic, refreshExpenseAutomationCurrentTabEpic, refreshIntegrationsDataEpic, rejectVendorGlobalReviewEpic, resendCardInviteEpic, resendInviteEpic, resendOtpEpic, resendVerifyDeviceOTPEpic, resendReferralInviteEpic, resetTransactionVendorLocalDataEpic, resetVendorDetailLocalDataEpic, resetVendorsTabVendorDetailLocalDataEpic, retryBankAccountConnectionEpic, retryBankAccountConnectionForOnboardingEpic, retryExpenseAutomationJEScheduleEpic, retryOrRefundBillEpic, validateBillsBulkActionEpic, reviewDraftRemisBulkActionEpic, reviewExpenseAutomationFluxAnalysisViewEpic, revokeCardInviteEpic, revokeChargeCardsInviteEpic, saveAccountMappingViewEpic, saveAccountSettingsViewEpic, saveAPIKeyConnectionEpic, saveBillDetailEpic, saveBillPaySetupApproverViewUpdatesEpic, saveCardOnboardingUserDetailsEpic, saveCompanyBillingAddressEpic, saveCompanyHealthMetricByIdEpic, saveCompanyMonthEndReportEpic, saveCompanyPassportDetailsEpic, saveConnectorCredentialsEpic, saveCreditAgentMacroEpic, saveExpenseAutomationReconciliationDetailsEpic, saveExpenseAutomationReconciliationReviewEpic, saveExternalConnectionEpic, saveMagicLinkBankAccountEpic, saveNewAddressEpic, saveNotificationSettingsEpic, saveOAuthConnectionEpic, saveOnboardingCustomerCompletedStatusEpic, saveOnboardingCustomerNotesEpic, saveOnboardingCustomerViewUpdatesEpic, saveRealTimeApprovalEpic, saveReasonForAuditRuleEpic, saveRemiDetailEpic, saveRemiSetupApproverViewUpdatesEpic, saveScheduleAccruedDetailsEpic, saveScheduleDetailsEpic, saveSubscriptionNotesUpdatesEpic, saveSubscriptionUpdatesEpic, saveTaskDetailEpic, saveTransactionDetailEpic, saveTransactionVendorEpic, saveVendorDetailsViewEpic, saveVendorEpic, saveVendorFirstReviewViewEpic, saveVendorsTabVendorEpic, scheduleTenantCreditScoreCronEpic, sendCompanyMonthEndReportEpic, sendOnboardingCustomerViewInviteEpic, sendOtpEpic, sendReferralInviteEpic, statementCloseDayEpic, stopSubmitEpic, stopSubmitQuestionEpic, submitDraftBillsBulkActionEpic, submitDraftRemisBulkActionEpic, submitExpressPayEpic, submitIntlVerificationEpic, submitQuestionEpic, toggleReportUIOptionForecastModeEpic, transferMoneyEpic, treasuryTransferMoneyEpic, triggerAiAccountantJobEpic, triggerReviewTabRefetchEpic, unlinkPaymentAccountEpic, unlockChargeCardEpic, unlockChargeCardsEpic, updateAccruedJESchedulesEpic, updateAddressEpic, updateAmountsInScheduleAccruedDetailEpic, updateAmountsInScheduleDetailEpic, updateAutoTransferRuleEpic, updateBusinessVerificationDetailsEpic, updateCardProfileEpic, updateChargeCardDetailEpic, updateChargeCardLimitEpic, updateChargeCardNameEpic, updateChargeCardsLimitEpic, updateAccountingClassesEnabledEpic, updateCompanyDetailsEpic, updateCompanyOfficerEpic, updateCompanyPassportLocalStoreDataEpic, updateDashboardLayoutEpic, updateDebitCardPinAttemptEpic, updateDepositAccountEpic, updateExpenseAutomationReconciliationBalanceLocalDataEpic, updateFileNameEpic, updateFilesMetadataEpic, updateJESchedulesEpic, updateMappedCashAccountEpic, updateMileageDetailsEpic, updateMyProfileEpic, updateNetBurnOrIncomeStoryCardSettingsEpic, updateNotificationViewAllNotificationsStatusEpic, updateNotificationViewNotificationStatusEpic, updateOnboardingCustomerViewCompleteStatusEpic, updateOnboardingCustomerViewDashboardLoadedEpic, updateOnboardingCustomerViewEpic, updateOnboardingCustomerViewLocalStoreDataEpic, updateOnboardingPaymentAccountLoginStatusEpic, updateOnboardingPaymentAccountStatusEpic, updatePaymentAccountEpic, updatePaymentAccountLoginStatusEpic, updatePaymentAccountStatusEpic, updatePhysicalChargeCardAttemptEpic, updatePrimaryContactEpic, updatePrimaryFundingAccountEpic, updateQBOConnectionPoolExternalConnectionEpic, updateReferViewedEpic, updateRemiSetupViewLocalStoreDataEpic, updateReportUIOptionCOABalancesRangeEpic, updateReportUIOptionIsCompareModeEpic, updateReportUIOptionIsCompareModeOnEpic, updateReportUIOptionThisPeriodEpic, updateReportUIOptionTimeFrameEpic, updateSectionAccountsViewEpic, updateSectionClassesViewEpicV2, updateSectionProjectViewEpic, updateSelectedVendorForCreateFlowEpic, updateSetupViewLocalStoreDataEpic, updateTaskFromListViewEpic, updateTaskGroupNameEpic, fetchCannedResponsesEpic, saveCannedResponseEpic, deleteCannedResponseEpic, updateTransactionDetailEpic, updateTreasuryVideoViewedEpic, updateVendorContactEpic, uploadAccountStatementEpic, uploadMissingAttachmentSuccessEpic, uploadMissingReceiptSuccessEpic, uploadTransactionReceiptSuccessEpic, vendorFiling1099UploadDetailsSaveEpic, verifyOtpEpic, verifyUserEpic, waitForBillDetailThenInitializeLocalStoreEpic, waitForForecastListThenFetchNetBurnOrIncomeWithForecastEpic, waitForForecastListThenFetchOpExWithForecastEpic, waitForForecastListThenFetchRevenueWithForecastEpic, waitForMerchantRecommendationFetchThenUpdateRecommendationInMerchantEpic, waitForVendorByIdThenSaveBillUpdatetoLocalStoreEpic, waitForVendorByNameThenParsetoLocalStoreEpic, waitForVendorByNameThenUpdateBillDetailEpic, waitForVendorRecommendationFetchThenUpdateRecommendationInBillEpic, wiseRedirectEpic);
582
+ const combinedEpics = combineEpics(acceptBillPayTermsEpic, acceptBillPayUpdatedTermsEpic, acceptChargeCardTermsEpic, acceptEmployeeRemiTermsEpic, acceptMasterTOSEpic, acceptRemiTermsEpic, acceptTreasuryTermsEpic, acceptZeniAccountTermsEpic, addCardPaymentSourceEpic, approveOAuthConsentEpic, approveOrRejectBillEpic, approveOrRejectBillsBulkActionEpic, approveOrRejectRemiEpic, approveOrRejectRemisBulkActionEpic, approveVendorGlobalReviewEpic, archiveTaskEpic, backgroundRefetchReviewTabEpic, bulkUpdateTaskListEpic, cancelAiAccountantOnboardingEpic, cancelAndDeleteBillEpic, cancelAndDeleteRemiEpic, cancelOrDeleteBillsBulkActionEpic, cancelOrDeleteRemisBulkActionEpic, cancelScheduleAccruedJournalEntryEpic, changeZeniPersonRolesEpic, checkDepositEpic, clearAllEpic, closeChargeCardEpic, closeChargeCardsEpic, companyManagementSavePendingUpdatesEpic, companyManagementSaveUpdatesEpic, confirmCardSetupIntentEpic, convertAmountToHomeCurrencyEpic, createAddressEpic, createAutoTransferRuleEpic, createBankAccountEpic, createCardSetupIntentEpic, createCheckingAccountEpic, createCompanyAddressEpic, createCompanyOfficersEpic, createCompanyUserAddressEpic, createGlobalMerchantEpic, createInternationalBankAccountEpic, createNewSchedulesAccruedEpic, createNewSchedulesEpic, createNewTaskGroupEpic, createPaymentInstrumentEpic, createSessionAndSubmitEpic, createSessionEpic, createTagEpic, createTaskFromTaskGroupTemplateEpic, createUserBankAccountEpic, deleteAccountStatementEpic, deleteAutoTransferRuleEpic, excludeAccountFromReconciliationEpic, includeAccountInReconciliationEpic, deleteBankAccountEpic, deleteBillEpic, deleteChatSessionEpic, deleteConnectionEpic, deleteBillPayApprovalRuleEpic, deleteFileEpic, deleteFileListEpic, deleteInternationalBankAccountEpic, deletePaymentInstrumentEpic, deletePersonEpic, deleteRemiApprovalRuleEpic, deleteRemiEpic, deleteScheduleAccruedDetailEpic, deleteScheduleDetailEpic, deleteTagEpic, deleteTaskEpic, snoozeTaskEpic, unsnoozeTaskEpic, deleteTaskGroupEpic, deleteTransactionAttachmentEpic, deleteUserBankAccountEpic, doMagicLinkSignInEpic, doSignInEpic, doSignOutEpic, sendEmailMagicLinkToUserEpic, sessionHeartbeatEpic, verifyDeviceWithTwoFAEpic, downloadAccountingProviderAttachmentEpic, dragNDropTasksEpic, enableChargeCardAutoPayEpic, enableSetupEpic, establishOnboardingPlaidConnectionEpic, establishPlaidConnectionEpic, expressInterestChargeCardEpic, fetchAccountListEpic, fetchAccountListForAccountTypesEpic, fetchAccountSettingsListForAccountTypesEpic, fetchAccruedScheduleListEpic, fetchActiveTenantEpic, fetchAddressEpic, fetchAiAccountantCustomersEpic, fetchAiAccountantJobsEpic, fetchAllCockpitViewsEpic, fetchAllExpenseAutomationTabsEpic, fetchAllPeopleRequiredViewsEpic, fetchAllTagsEpic, fetchAllTaskGroupsEpic, fetchAllTenantsEpic, fetchAndUpdateVendorRecommendationsEpic, fetchAggregatedReportEpic, fetchApAgingDetailEpic, fetchApAgingEpic, fetchArAgingDetailEpic, fetchArAgingEpic, fetchAuditReportGroupViewEpic, fetchAuditRuleGroupViewEpic, fetchAutoTransferReviewDetailEpic, fetchAutoTransferRuleHistoryEpic, fetchAutoTransferRulesEpic, fetchBalanceSheetEpic, fetchBalanceSheetForTimeframeEpic, fetchBankAccountsListEpic, fetchBankConnectionsViewEpic, fetchBankCountryNameByIbanEpic, fetchBankNameByRoutingEpic, fetchBankNameBySwiftEpic, fetchBillAndInitializeLocalStoreEpic, fetchBillDetailEpic, fetchBillingAccountsListEpic, fetchBillListEpic, fetchBillListPerTabEpic, fetchBillPayApproversDetailsEpic, fetchBillPayApproversListEpic, fetchBillPayCardEpic, fetchBillPayConfigEpic, fetchBillPaySetupApproverViewEpic, fetchBillPaySetupViewEpic, fetchCardBalanceEpic, fetchCardProfilesEpic, fetchCashbackDetailEpic, fetchCashBalanceEpic, fetchCashFlowEpic, fetchCashFlowForTimeframeEpic, fetchCashInCashOutEpic, fetchCashPositionEpic, fetchChargeCardConfigEpic, fetchChargeCardDetailEpic, fetchChargeCardDetailPageEpic, fetchChargeCardListEpic, fetchChargeCardListPageEpic, fetchChargeCardPaymentPageEpic, fetchChargeCardRepaymentDetailEpic, fetchChargeCardPaymentHistoryEpic, fetchChargeCardSetupViewEpic, fetchChargeCardStatementListEpic, fetchChargeCardTransactionAttachmentsEpic, fetchChargeCardTransactionListEpic, fetchChargeCardTransactionStatisticsEpic, fetchChargeCardsRecurringExpensesEpic, fetchChatHistoryEpic, fetchChatSessionsForUserEpic, fetchClassListEpic, fetchCollaborationAuthTokenEpic, fetchCompanyBillingAddressEpic, fetchCompanyConfigEpic, fetchCompanyHealthMetricConfigEpic, fetchCompanyHealthMetricViewEpic, fetchCompanyManagementViewEpic, fetchCompanyMetaDataEpic, fetchCompanyMonthEndReportHistoricDataEpic, fetchCompanyMonthEndReportHistoricDatesEpic, fetchCompanyMonthEndReportTemplatesEpic, fetchCompanyMonthEndReportViewEpic, fetchCompanyOnboardingViewEpic, fetchCompanyPassportViewEpic, fetchCompanyPortfolioViewEpic, fetchCompanyTaskManagerViewEpic, fetchTaskManagerMetricsEpic, fetchCreditAccountEpic, fetchCreditAccountRepaymentEpic, fetchCreditAgentAccessEpic, fetchCreditAgentMacroEpic, fetchCurrencyConversionValueEpic, fetchDashboardEpic, fetchDashboardLayoutEpic, fetchDebitCardSummaryEpic, fetchDepositAccountDetailEpic, fetchDepositAccountEpic, fetchDepositAccountHistoryEpic, fetchDepositAccountLimitEpic, fetchDepositAccountListEpic, fetchDepositAccountListForCardsEpic, fetchDepositAccountTransactionListEpic, fetchDownloadSchedulesEpic, fetchDuplicateBillPayReviewEpic, fetchDuplicateReimbursementEpic, fetchEditBillDetailPageEpic, fetchEditRemiDetailPageEpic, fetchEligibleActionsForBillEpic, fetchEntityAutoCompleteEpic, fetchEntityHistoryEpic, fetchEntityRecommendationsByTransactionIdEpic, fetchExcludedResourcesEpic, fetchExpenseAutomationFluxAnalysisViewEpic, fetchExpenseAutomationInitializeTransactionCategorizationViewLocalDataEpic, fetchExpenseAutomationJeSchedulesEpic, fetchExpenseAutomationJESchedulesPageEpic, fetchExpenseAutomationMarkTransactionAsNotMiscategorizedEpic, fetchExpenseAutomationMissingReceiptsEpic, bulkUploadReceiptsEpic, confirmBulkUploadMatchEpic, fetchBulkUploadBatchDetailsEpic, fetchMultipleBatchDetailsEpic, fetchMoreBatchDetailsEpic, fetchBulkUploadBatchesEpic, fetchCompletedTransactionsEpic, refetchCompletedTransactionsOnBulkUploadSortEpic, bulkUploadAutomatchingTimeoutEpic, bulkUploadMatchResultToastEpic, pollBulkUploadBatchStatusEpic, pusherBatchStatusCompletionEpic, restoreBulkUploadAutomatchingOnMountEpic, searchTransactionsForManualMatchEpic, fetchExpenseAutomationReconciliationsViewEpic, fetchExpenseAutomationSaveTransactionCategorizationEpic, fetchExpenseAutomationTransactionCategorizationEpic, fetchExpenseAutomationTransactionCategorizationViewEpic, fetchExpenseAutomationUpdateTransactionCategorizationEpic, fetchExpenseTrendEpic, fetchExpressPayInitialDetailsEpic, fetchExternalConnectionsEpic, fetchFileEpic, fetchFileListEpic, fetchFinanceStatementEpic, fetchForecastListEpic, initiateReportsClassViewRefetchingEpic, reportsResyncEpic, fetchGlobalMerchantAutoCompleteViewEpic, fetchGlobalMerchantRecommendationEpic, fetchIncomeTrendEpic, fetchInsightsCardEpic, fetchInternationalWireDynamicFormEpic, fetchIntlVerificationFormEpic, fetchIssueCardPageEpic, fetchMagicLinkBankNameByRoutingEpic, fetchMagicLinkBankNameBySwiftEpic, fetchMagicLinkBillEpic, fetchMagicLinkTenantEpic, fetchManagementViewEpic, fetchMerchantListEpic, fetchMonthClosePerformanceTrendEpic, fetchMonthEndCloseChecksEpic, fetchMyProfileEpic, fetchMyProfileViewEpic, fetchNetBurnOrIncomeClassesViewEpic, fetchNetBurnOrIncomeEpic, fetchNetBurnOrIncomeForTimeframeClassesViewEpic, fetchNetBurnOrIncomeForTimeframeEpic, fetchNetBurnOrIncomeStoryCardEpic, fetchNetBurnOrIncomeWithForecastEpic, fetchNotificationSettingsEpic, fetchNotificationSettingsViewEpic, fetchNotificationUnreadCountEpic, fetchNotificationViewEpic, fetchRegisteredInterestsEpic, fetchOnboardingCompletedCompaniesEpic, fetchOnboardingCustomerSetupViewEpic, fetchOnboardingCustomerViewEpic, fetchOnboardingViewEpic, fetchOpExByVendorEpic, fetchOpExByVendorReportForTimeframeEpic, fetchOpExByVendorReportSummaryEpic, fetchOpExClassesViewEpic, fetchOpExEpic, fetchOpExForTimeframeClassesViewEpic, fetchOpExReportForTimeframeEpic, fetchOpExWithForecastEpic, fetchOwnerListEpic, fetchParentSubsidiaryManagementViewEpic, fetchPaymentAccountBalanceEpic, fetchPaymentAccountListEpic, fetchPaymentSourcesEpic, fetchPeopleEpic, fetchPeoplePageEpic, fetchPortfolioViewEpic, fetchPreviousBillsEpic, fetchProfitAndLossClassesViewEpic, fetchProfitAndLossEpic, fetchProfitAndLossForTimeframeClassesViewEpic, fetchProfitAndLossForTimeframeProjectViewEpic, fetchProfitAndLossForTimeframeEpic, fetchProfitAndLossProjectViewEpic, fetchProjectListEpic, fetchQBOConnectionPoolEpic, fetchRecommendationByEntityIdEpic, fetchRecommendationByEntityNameEpic, fetchRecommendationForAccountSettingsEpic, fetchRecommendationForAccountTypeEpic, fetchRecommendationsAndUpdateMerchantRecommendationsEpic, fetchRecommendedTransactionRowIndexEpic, fetchReferralsEpic, fetchReimbursementCardEpic, fetchReimbursementConfigEpic, fetchRemiAndInitializeLocalStoreEpic, fetchRemiApproversDetailsEpic, fetchRemiApproversListEpic, fetchRemiDetailEpic, fetchRemiListEpic, fetchRemiListPerTabEpic, fetchRemiSetupApproverViewEpic, fetchRemiSetupViewEpic, fetchRevenueClassesViewEpic, fetchRevenueEpic, fetchRevenueForTimeframeClassesViewEpic, fetchRevenueForTimeframeEpic, fetchRevenueWithForecastEpic, fetchReviewCompanyViewEpic, fetchReviewTransferDetailEpic, fetchRewardsPlanEpic, fetchScheduleAccruedDetailsEpic, fetchScheduleAccruedDetailsPageEpic, fetchScheduleActivityLogEpic, fetchScheduleDetailsEpic, fetchScheduleDetailsPageEpic, fetchScheduleListEpic, fetchSchedulesAccountEpic, fetchSubscriptionAddOnsEpic, fetchSubscriptionCouponsEpic, fetchSubscriptionCreateEstimateEpic, fetchSubscriptionDetailsEpic, fetchSubscriptionListEpic, fetchSubscriptionPlansEpic, fetchSubscriptionSummaryForTenantEpic, fetchSubscriptionUpdateEstimateEpic, fetchSubscriptionViewEpic, fetchSuggestedQuestionsEpic, fetchTaskDetailEpic, fetchTaskDetailPageEpic, fetchTaskGroupTemplatesEpic, fetchTaskHistoryEpic, fetchTaskListEpic, fetchTaskListPageEpic, fetchTasksCardEpic, fetchTopExEpic, fetchTransactionActivityLogEpic, fetchTransactionDetailEpic, fetchTransactionListByAccountEpic, fetchTransactionListByClassEpic, fetchTransactionListByProjectEpic, fetchTransactionListByEntityEpic, fetchTransactionsForEntityEpic, fetchTransactionsListByCategoryTypeEpic, fetchTreasuryDetailEpic, fetchTreasuryFundsEpic, fetchTreasuryHistoryEpic, fetchTreasurySetupViewEpic, fetchTreasuryStatementListEpic, fetchTreasuryTaxLetterListEpic, fetchTreasuryTransactionListEpic, updatePortfolioAllocationEpic, fetchPortfolioAllocationEpic, fetchTrendForEntityEpic, fetchUserDetailEpic, fetchUserFinancialAccountEpic, fetchUserListByTypeEpic, fetchUserRoleConfigEpic, fetchVendor1099TypeListEpic, fetchVendorAndUpdateBillLocalDataEpic, fetchVendorByNameAndParseInvoiceEpic, fetchVendorDetailsEpic, fetchVendorEpic, fetchVendorFirstReviewAttachmentsEpic, fetchVendorFirstReviewViewEpic, fetchVendorGlobalReviewViewEpic, fetchVendorsFiling1099AllEpic, fetchVendorsFiling1099DownloadEpic, fetchVendorsFiling1099ListEpic, fetchVendorsListEpic, fetchVendorsTabVendorDetailPageViewEpic, fetchVendorsTabVendorDetailsEpic, fetchVendorsTabVendorEpic, fetchVendorTabViewEpic, fetchVendorTypeListEpic, fetchZeniAccountListEpic, fetchZeniAccountsConfigEpic, fetchZeniAccountSetupViewEpic, fetchZeniAccountsPromoCardEpic, fetchZeniAccStatementListEpic, fetchZeniAccStatementPageEpic, fetchZeniUsersEpic, getOnboardingEmailGroupEpic, getOnboardingPlaidLinkTokenEpic, getPaymentAccountsEpic, getPlaidLinkTokenEpic, ignoreExpenseAutomationJEScheduleEpic, improveUsingZeniGPTEpic, initialiseExpenseAutomationReconciliationLocalDataForSelectedAccountIdEpic, initializeAccountMappingViewEpic, initializeAccountSettingsViewEpic, initializeBillPaySetupApproverViewUpdateDataEpic, initializeBillToLocalStoreEpic, initializeCardUserOnboardingLocalDataEpic, initializeCompanyHealthMetricViewLocalDataEpic, initializeDynamicFormEpic, initializeEditPersonEpic, initializeExpenseAutomationJeScheduleLocalDataEpic, initializeInternationalWireLocalDataEpic, initializeIntlVerificationFormEpic, initializeMyProfileLocalDataEpic, initializeOnboardingCustomerViewUpdateDataEpic, initializeRemiSetupApproverViewUpdateDataEpic, initializeRemiToLocalStoreEpic, initializeScheduleAccruedDetailLocalDataEpic, initializeScheduleDetailLocalDataEpic, initializeSubscriptionLocalDataEpic, initializeTaskToLocalStoreEpic, initializeTransactionDetailLocalDataEpic, initializeVendorAddressEpic, initiateChargeCardRepaymentEpic, invitePeopleEpic, inviteZeniPeopleEpic, issueChargeCardEpic, lockChargeCardEpic, lockChargeCardsEpic, markAsCompleteScheduleDetailEpic, markTransactionAsNotMiscategorizedEpic, notifyMeForFeatureEpic, parallelFetchAccountTransactionListEpic, parallelFetchClassTransactionListEpic, parallelFetchProjectTransactionListEpic, parallelFetchEntityTransactionListEpic, parallelFetchTransactionListByCategoryTypeEpic, parseInvoiceToBillEpic, parseReceiptsToRemiEpic, peopleSaveUpdatesEpic, pushToastNotificationEpic, refreshExpenseAutomationCurrentTabEpic, refreshIntegrationsDataEpic, rejectVendorGlobalReviewEpic, resendCardInviteEpic, resendInviteEpic, resendOtpEpic, resendVerifyDeviceOTPEpic, resendReferralInviteEpic, resetTransactionVendorLocalDataEpic, resetVendorDetailLocalDataEpic, resetVendorsTabVendorDetailLocalDataEpic, retryBankAccountConnectionEpic, retryBankAccountConnectionForOnboardingEpic, retryExpenseAutomationJEScheduleEpic, retryOrRefundBillEpic, validateBillsBulkActionEpic, reviewDraftRemisBulkActionEpic, reviewExpenseAutomationFluxAnalysisViewEpic, revokeCardInviteEpic, revokeChargeCardsInviteEpic, saveAccountMappingViewEpic, saveAccountSettingsViewEpic, saveAPIKeyConnectionEpic, saveBillDetailEpic, saveBillPaySetupApproverViewUpdatesEpic, saveCardOnboardingUserDetailsEpic, saveCompanyBillingAddressEpic, saveCompanyHealthMetricByIdEpic, saveCompanyMonthEndReportEpic, saveCompanyPassportDetailsEpic, saveConnectorCredentialsEpic, saveCreditAgentMacroEpic, saveExpenseAutomationReconciliationDetailsEpic, saveExpenseAutomationReconciliationReviewEpic, saveExternalConnectionEpic, saveMagicLinkBankAccountEpic, saveNewAddressEpic, saveNotificationSettingsEpic, saveOAuthConnectionEpic, saveOnboardingCustomerCompletedStatusEpic, saveOnboardingCustomerNotesEpic, saveOnboardingCustomerViewUpdatesEpic, saveRealTimeApprovalEpic, saveReasonForAuditRuleEpic, saveRemiDetailEpic, saveRemiSetupApproverViewUpdatesEpic, saveScheduleAccruedDetailsEpic, saveScheduleDetailsEpic, saveSubscriptionNotesUpdatesEpic, saveSubscriptionUpdatesEpic, saveTaskDetailEpic, saveTransactionDetailEpic, saveTransactionVendorEpic, saveVendorDetailsViewEpic, saveVendorEpic, saveVendorFirstReviewViewEpic, saveVendorsTabVendorEpic, scheduleTenantCreditScoreCronEpic, sendCompanyMonthEndReportEpic, sendOnboardingCustomerViewInviteEpic, sendOtpEpic, sendReferralInviteEpic, statementCloseDayEpic, stopSubmitEpic, stopSubmitQuestionEpic, submitDraftBillsBulkActionEpic, submitDraftRemisBulkActionEpic, submitExpressPayEpic, submitIntlVerificationEpic, submitQuestionEpic, toggleReportUIOptionForecastModeEpic, transferMoneyEpic, treasuryTransferMoneyEpic, triggerAiAccountantJobEpic, triggerReviewTabRefetchEpic, unlinkPaymentAccountEpic, unlockChargeCardEpic, unlockChargeCardsEpic, updateAccruedJESchedulesEpic, updateAddressEpic, updateAmountsInScheduleAccruedDetailEpic, updateAmountsInScheduleDetailEpic, updateAutoTransferRuleEpic, updateBusinessVerificationDetailsEpic, updateCardProfileEpic, updateChargeCardDetailEpic, updateChargeCardLimitEpic, updateChargeCardNameEpic, updateChargeCardsLimitEpic, updateAccountingClassesEnabledEpic, updateCompanyDetailsEpic, updateCompanyOfficerEpic, updateCompanyPassportLocalStoreDataEpic, updateDashboardLayoutEpic, updateDebitCardPinAttemptEpic, updateDepositAccountEpic, updateExpenseAutomationReconciliationBalanceLocalDataEpic, updateFileNameEpic, updateFilesMetadataEpic, updateJESchedulesEpic, updateMappedCashAccountEpic, updateMileageDetailsEpic, updateMyProfileEpic, updateNetBurnOrIncomeStoryCardSettingsEpic, updateNotificationViewAllNotificationsStatusEpic, updateNotificationViewNotificationStatusEpic, updateOnboardingCustomerViewCompleteStatusEpic, updateOnboardingCustomerViewDashboardLoadedEpic, updateOnboardingCustomerViewEpic, updateOnboardingCustomerViewLocalStoreDataEpic, updateOnboardingPaymentAccountLoginStatusEpic, updateOnboardingPaymentAccountStatusEpic, updatePaymentAccountEpic, updatePaymentAccountLoginStatusEpic, updatePaymentAccountStatusEpic, updatePhysicalChargeCardAttemptEpic, updatePrimaryContactEpic, updatePrimaryFundingAccountEpic, updateQBOConnectionPoolExternalConnectionEpic, updateReferViewedEpic, updateRemiSetupViewLocalStoreDataEpic, updateReportUIOptionCOABalancesRangeEpic, updateReportUIOptionIsCompareModeEpic, updateReportUIOptionIsCompareModeOnEpic, updateReportUIOptionThisPeriodEpic, updateReportUIOptionTimeFrameEpic, updateSectionAccountsViewEpic, updateSectionClassesViewEpicV2, updateSectionProjectViewEpic, updateSelectedVendorForCreateFlowEpic, updateSetupViewLocalStoreDataEpic, updateTaskFromListViewEpic, updateTaskGroupNameEpic, fetchCannedResponsesEpic, saveCannedResponseEpic, deleteCannedResponseEpic, updateTransactionDetailEpic, updateTreasuryVideoViewedEpic, updateVendorContactEpic, uploadAccountStatementEpic, uploadMissingAttachmentSuccessEpic, uploadMissingReceiptSuccessEpic, uploadTransactionReceiptSuccessEpic, vendorFiling1099UploadDetailsSaveEpic, verifyOtpEpic, verifyUserEpic, waitForBillDetailThenInitializeLocalStoreEpic, waitForForecastListThenFetchNetBurnOrIncomeWithForecastEpic, waitForForecastListThenFetchOpExWithForecastEpic, waitForForecastListThenFetchRevenueWithForecastEpic, waitForMerchantRecommendationFetchThenUpdateRecommendationInMerchantEpic, waitForVendorByIdThenSaveBillUpdatetoLocalStoreEpic, waitForVendorByNameThenParsetoLocalStoreEpic, waitForVendorByNameThenUpdateBillDetailEpic, waitForVendorRecommendationFetchThenUpdateRecommendationInBillEpic, wiseRedirectEpic);
582
583
  const rootEpic = (action$, store$, dependencies) => combinedEpics(action$, store$, dependencies).pipe(map(identity), catchError((error, source) => {
583
584
  console.error(error);
584
585
  return source;
package/lib/esm/index.js CHANGED
@@ -654,6 +654,8 @@ export { getAutoTransferRules, getAutoTransferRuleById, getAutoTransferRuleHisto
654
654
  export { BULK_UPLOAD_AUTOMATCHING_TIMEOUT_MS, BULK_UPLOAD_BAR_COMPLETE_HOLD_MS, } from './view/expenseAutomationView/helpers/bulkUploadTiming';
655
655
  export { fetchTransactionActivityLog } from './view/transactionActivityLogView/transactionActivityLogViewReducer';
656
656
  export { getTransactionActivityLogView, } from './view/transactionActivityLogView/transactionActivityLogViewSelector';
657
+ export { fetchScheduleActivityLog, clearScheduleActivityLogView, } from './view/scheduleActivityLogView/scheduleActivityLogViewReducer';
658
+ export { getScheduleActivityLogView, } from './view/scheduleActivityLogView/scheduleActivityLogViewSelector';
657
659
  // ── Session Management ──────────────────────────────────────────────
658
660
  export { SessionManager } from './entity/tenant/SessionManager';
659
661
  export { DEFAULT_SESSION_CONFIG } from './entity/tenant/sessionTypes';
@@ -42,6 +42,7 @@ import paymentInstrument, { initialState as initialPaymentInstrumentState, } fro
42
42
  import accountingSummary, { initialState as initialAccountingSummaryState, } from './entity/portfolio/accountingSummary/accountingSummaryReducer';
43
43
  import project, { initialState as initialProjectState, } from './entity/project/projectReducer';
44
44
  import reimbursement, { initialState as initialReimbursementState, } from './entity/reimbursement/reimbursementReducer';
45
+ import scheduleActivityLog, { initialState as initialScheduleActivityLogState, } from './entity/scheduleActivityLog/scheduleActivityLogReducer';
45
46
  import sectionAccountsView, { initialState as initialSectionAccountsViewState, } from './entity/sectionAccountsView/sectionAccountsViewReducer';
46
47
  import sectionClassesViewV2, { initialState as initialSectionClassesViewStateV2, } from './entity/sectionClassesViewV2/sectionClassesViewReducer';
47
48
  import sectionProjectView, { initialState as initialSectionProjectViewState, } from './entity/sectionProjectView/sectionProjectViewReducer';
@@ -139,6 +140,7 @@ import reportsResync, { initialReportsResyncState, } from './view/reportsResync/
139
140
  import revenue, { initialState as initialRevenueWithForecastState, } from './view/revenue/revenueReducer';
140
141
  import revenueClassesView, { initialState as initialRevenueClassesViewState, } from './view/revenueClassesView/revenueClassesViewReducer';
141
142
  import reviewCompanyView, { initialState as initialReviewCompanyViewState, } from './view/reviewCompanyView/reviewCompanyViewReducer';
143
+ import scheduleActivityLogView, { initialState as initialScheduleActivityLogViewState, } from './view/scheduleActivityLogView/scheduleActivityLogViewReducer';
142
144
  import scheduleAccruedDetailView, { initialState as initialScheduleAccruedDetailViewState, } from './view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailReducer';
143
145
  import scheduleDetailView, { initialState as initialScheduleDetailViewState, } from './view/scheduleView/scheduleDetailView/scheduleDetailReducer';
144
146
  import scheduleListView, { initialState as initialScheduleListViewState, } from './view/scheduleView/scheduleListView/scheduleListReducer';
@@ -268,6 +270,7 @@ const initialEntitiesState = {
268
270
  recurringBillState: initialRecurringBillState,
269
271
  reimbursementConfigState: initialReimbursementConfigState,
270
272
  reimbursementState: initialReimbursementState,
273
+ scheduleActivityLogState: initialScheduleActivityLogState,
271
274
  sectionAccountsViewState: initialSectionAccountsViewState,
272
275
  sectionClassesViewStateV2: initialSectionClassesViewStateV2,
273
276
  sectionProjectViewState: initialSectionProjectViewState,
@@ -406,6 +409,7 @@ const initialViewsState = {
406
409
  revenueClassesViewState: initialRevenueClassesViewState,
407
410
  revenueState: initialRevenueWithForecastState,
408
411
  reviewCompanyViewState: initialReviewCompanyViewState,
412
+ scheduleActivityLogViewState: initialScheduleActivityLogViewState,
409
413
  scheduleAccruedDetailState: initialScheduleAccruedDetailViewState,
410
414
  scheduleDetailState: initialScheduleDetailViewState,
411
415
  scheduleListState: initialScheduleListViewState,
@@ -504,6 +508,7 @@ const entityReducers = {
504
508
  recurringBillState: recurringBill,
505
509
  reimbursementConfigState: reimbursementConfig,
506
510
  reimbursementState: reimbursement,
511
+ scheduleActivityLogState: scheduleActivityLog,
507
512
  sectionAccountsViewState: sectionAccountsView,
508
513
  sectionClassesViewStateV2: sectionClassesViewV2,
509
514
  sectionProjectViewState: sectionProjectView,
@@ -642,6 +647,7 @@ const viewReducers = {
642
647
  revenueClassesViewState: revenueClassesView,
643
648
  revenueState: revenue,
644
649
  reviewCompanyViewState: reviewCompanyView,
650
+ scheduleActivityLogViewState: scheduleActivityLogView,
645
651
  scheduleAccruedDetailState: scheduleAccruedDetailView,
646
652
  scheduleDetailState: scheduleDetailView,
647
653
  scheduleListState: scheduleListView,
@@ -0,0 +1,67 @@
1
+ import { from, of } from 'rxjs';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
+ import { updateScheduleActivityLogs } from '../../entity/scheduleActivityLog/scheduleActivityLogReducer';
4
+ import { updateAllUsers } from '../../entity/user/userReducer';
5
+ import { createZeniAPIStatus, isSuccessResponse } from '../../responsePayload';
6
+ import { fetchScheduleActivityLog, updateScheduleActivityLogViewFetchStatus, updateScheduleActivityLogViewOnSuccess, } from './scheduleActivityLogViewReducer';
7
+ // Drop any payload that lacks the three top-level fields the entity pipeline
8
+ // strictly needs (`event_type`, `correlation_id`, `create_time`). Surfaces each
9
+ // drop as a console.warn so the next backend iteration has a list of gaps to
10
+ // tighten. Returns the kept items so the rest of the timeline still renders.
11
+ export const filterValidScheduleActivityPayloads = (rawActivity) => {
12
+ const safe = [];
13
+ for (const item of rawActivity) {
14
+ if (typeof item?.event_type !== 'string') {
15
+ console.warn('[scheduleActivityLog] dropping payload: missing event_type', item);
16
+ continue;
17
+ }
18
+ if (typeof item?.correlation_id !== 'string') {
19
+ console.warn('[scheduleActivityLog] dropping payload: missing correlation_id', item);
20
+ continue;
21
+ }
22
+ if (typeof item?.create_time !== 'string') {
23
+ console.warn('[scheduleActivityLog] dropping payload: missing create_time', item);
24
+ continue;
25
+ }
26
+ safe.push(item);
27
+ }
28
+ return safe;
29
+ };
30
+ export const fetchScheduleActivityLogEpic = (actions$, _, zeniAPI) => actions$.pipe(filter(fetchScheduleActivityLog.match), switchMap((action) => {
31
+ const { scheduleId } = action.payload;
32
+ return zeniAPI
33
+ .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/schedules/${scheduleId}/activity`)
34
+ .pipe(mergeMap((response) => {
35
+ if (isSuccessResponse(response) &&
36
+ response.data != null &&
37
+ response.data.activity != null) {
38
+ const safeActivity = filterValidScheduleActivityPayloads(response.data.activity);
39
+ const updateActions = [];
40
+ if (response.data.users != null &&
41
+ response.data.users.length > 0) {
42
+ updateActions.push(updateAllUsers({
43
+ users: response.data.users,
44
+ updateType: 'merge',
45
+ }));
46
+ }
47
+ updateActions.push(updateScheduleActivityLogs(safeActivity));
48
+ updateActions.push(updateScheduleActivityLogViewOnSuccess({
49
+ data: safeActivity,
50
+ scheduleId,
51
+ }));
52
+ return from(updateActions);
53
+ }
54
+ else {
55
+ return of(updateScheduleActivityLogViewFetchStatus({
56
+ fetchState: 'Error',
57
+ error: response.status,
58
+ scheduleId,
59
+ }));
60
+ }
61
+ }), catchError((error) => of(updateScheduleActivityLogViewFetchStatus({
62
+ scheduleId,
63
+ fetchState: 'Error',
64
+ error: createZeniAPIStatus('Unexpected Error', 'fetch schedule activity log REST API call errored out' +
65
+ JSON.stringify(error)),
66
+ }))));
67
+ }));
@@ -0,0 +1,47 @@
1
+ import { createSlice } from '@reduxjs/toolkit';
2
+ import { toScheduleActivityLogId, } from '../../entity/scheduleActivityLog/scheduleActivityLogPayload';
3
+ export const initialState = {
4
+ scheduleActivityLogIdsByScheduleId: {},
5
+ scheduleActivityLogFetchStateByScheduleId: {},
6
+ };
7
+ const scheduleActivityLogView = createSlice({
8
+ name: 'scheduleActivityLogView',
9
+ initialState,
10
+ reducers: {
11
+ fetchScheduleActivityLog: {
12
+ prepare(scheduleId) {
13
+ return {
14
+ payload: { scheduleId },
15
+ };
16
+ },
17
+ reducer(draft, action) {
18
+ const { scheduleId } = action.payload;
19
+ draft.scheduleActivityLogFetchStateByScheduleId[scheduleId] = {
20
+ fetchState: 'In-Progress',
21
+ error: undefined,
22
+ };
23
+ draft.scheduleActivityLogIdsByScheduleId[scheduleId] = [];
24
+ },
25
+ },
26
+ updateScheduleActivityLogViewOnSuccess(draft, action) {
27
+ const { data, scheduleId } = action.payload;
28
+ draft.scheduleActivityLogFetchStateByScheduleId[scheduleId] = {
29
+ fetchState: 'Completed',
30
+ error: undefined,
31
+ };
32
+ draft.scheduleActivityLogIdsByScheduleId[scheduleId] = data.map((scheduleActivityLog) => toScheduleActivityLogId(scheduleActivityLog.correlation_id, scheduleActivityLog.event_type, scheduleActivityLog.data?.transaction?.line_id));
33
+ },
34
+ updateScheduleActivityLogViewFetchStatus(draft, action) {
35
+ const { fetchState, scheduleId, error } = action.payload;
36
+ draft.scheduleActivityLogFetchStateByScheduleId[scheduleId] = {
37
+ fetchState,
38
+ error,
39
+ };
40
+ },
41
+ clearScheduleActivityLogView(draft) {
42
+ Object.assign(draft, initialState);
43
+ },
44
+ },
45
+ });
46
+ export const { fetchScheduleActivityLog, updateScheduleActivityLogViewOnSuccess, clearScheduleActivityLogView, updateScheduleActivityLogViewFetchStatus, } = scheduleActivityLogView.actions;
47
+ export default scheduleActivityLogView.reducer;
@@ -0,0 +1,33 @@
1
+ import { createSelector } from '@reduxjs/toolkit';
2
+ import { reduceFetchState } from '../../commonStateTypes/reduceFetchState';
3
+ import { getScheduleActivityLogsByIds } from '../../entity/scheduleActivityLog/scheduleActivityLogSelector';
4
+ export const getScheduleActivityLogView = createSelector((state) => state.scheduleActivityLogViewState, (state) => state.scheduleActivityLogState, (state) => state.userState, (_state, scheduleId) => scheduleId, (scheduleActivityLogViewState, scheduleActivityLogState, userState, scheduleId) => {
5
+ const fetchStateAndError = scheduleActivityLogViewState
6
+ .scheduleActivityLogFetchStateByScheduleId[scheduleId] ?? {
7
+ fetchState: 'Not-Started',
8
+ error: undefined,
9
+ };
10
+ const scheduleActivityLogIds = scheduleActivityLogViewState.scheduleActivityLogIdsByScheduleId[scheduleId] ?? [];
11
+ const rawLogs = getScheduleActivityLogsByIds(scheduleActivityLogState, scheduleActivityLogIds);
12
+ const scheduleActivityLogs = rawLogs.map((log) => {
13
+ const userId = log.data?.transaction?.userId;
14
+ if (userId == null || log.data == null) {
15
+ return log;
16
+ }
17
+ const user = userState.userByUserId[userId];
18
+ if (user == null) {
19
+ return log;
20
+ }
21
+ return {
22
+ ...log,
23
+ data: {
24
+ ...log.data,
25
+ user,
26
+ },
27
+ };
28
+ });
29
+ return {
30
+ ...reduceFetchState([fetchStateAndError]),
31
+ scheduleActivityLogs,
32
+ };
33
+ });
@@ -2,6 +2,7 @@ import { concat, from } from 'rxjs';
2
2
  import { filter, mergeMap } from 'rxjs/operators';
3
3
  import { fetchAccountList } from '../../../accountList/accountListReducer';
4
4
  import { fetchClassList } from '../../../classList/classListReducer';
5
+ import { fetchScheduleActivityLog } from '../../../scheduleActivityLogView/scheduleActivityLogViewReducer';
5
6
  import { getAccountsTypesForScheduleEpics } from '../../scheduleListView/scheduleListHelper';
6
7
  import { fetchScheduleDetails, fetchScheduleDetailsPage, } from '../scheduleDetailReducer';
7
8
  export const fetchScheduleDetailsPageEpic = (actions$, state$) => actions$.pipe(filter(fetchScheduleDetailsPage.match), mergeMap((action) => {
@@ -19,6 +20,9 @@ export const fetchScheduleDetailsPageEpic = (actions$, state$) => actions$.pipe(
19
20
  }
20
21
  if (action.payload.selectedJeScheduleDetailId != null) {
21
22
  scheduleDetailsActions.push(fetchScheduleDetails(action.payload.scheduleType, action.payload.selectedJeScheduleDetailId, action.payload.cacheOverride));
23
+ // Prefetch the schedule activity log alongside the detail page so the
24
+ // side panel renders instantly when the user taps the navbar icon.
25
+ scheduleDetailsActions.push(fetchScheduleActivityLog(action.payload.selectedJeScheduleDetailId));
22
26
  }
23
27
  return concat(from(scheduleDetailsActions));
24
28
  }));
package/lib/index.d.ts CHANGED
@@ -929,6 +929,9 @@ export type { TransactionActivityLog } from './entity/transactionActivityLog/tra
929
929
  export { BULK_UPLOAD_AUTOMATCHING_TIMEOUT_MS, BULK_UPLOAD_BAR_COMPLETE_HOLD_MS, } from './view/expenseAutomationView/helpers/bulkUploadTiming';
930
930
  export { fetchTransactionActivityLog } from './view/transactionActivityLogView/transactionActivityLogViewReducer';
931
931
  export { TransactionActivityLogViewSelectorView, getTransactionActivityLogView, } from './view/transactionActivityLogView/transactionActivityLogViewSelector';
932
+ export type { ScheduleActivityLog } from './entity/scheduleActivityLog/scheduleActivityLogState';
933
+ export { fetchScheduleActivityLog, clearScheduleActivityLogView, } from './view/scheduleActivityLogView/scheduleActivityLogViewReducer';
934
+ export { ScheduleActivityLogViewSelectorView, getScheduleActivityLogView, } from './view/scheduleActivityLogView/scheduleActivityLogViewSelector';
932
935
  export { UserGroup } from './entity/userGroups/userGroupsState';
933
936
  export { SessionManager } from './entity/tenant/SessionManager';
934
937
  export type { SessionCallbacks, SessionConfig, } from './entity/tenant/sessionTypes';
package/lib/index.js CHANGED
@@ -71,7 +71,7 @@ exports.fetchNotificationUnreadCountSuccess = exports.fetchNotificationUnreadCou
71
71
  exports.submitExpressPay = exports.updateExpressPayFormLocalData = exports.fetchExpressPayInitialDetails = exports.getIntlWireVerificationView = exports.updateVerificationFormLocalData = exports.submitInternationalVerificationForm = exports.fetchInternationalVerificationForm = exports.createTaskFromTaskGroupTemplate = exports.getCompanyTaskManagerView = exports.fetchTaskManagerMetrics = exports.fetchCompanyTaskManagerView = 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 = 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 = void 0;
72
72
  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 = exports.toAiAccountantCustomer = exports.toAiAccountantOperationType = exports.toAiAccountantJobStatus = exports.toAiAccountantEnrollmentStatus = exports.getAllowedOperationsForStatus = exports.getTreasuryFundsMaximumYield = exports.getTreasurySetupViewDetails = exports.updateTreasuryVideoViewed = exports.updateFundAllocationLocalData = exports.fetchPortfolioAllocation = exports.updatePortfolioAllocation = exports.fetchTreasuryFunds = exports.clearTreasurySetupView = exports.fetchTreasurySetupView = exports.acceptTreasuryTerms = exports.getExpressPayView = exports.resetExpressPayLocalData = void 0;
73
73
  exports.updateAutoTransferRule = exports.createAutoTransferRule = exports.fetchAutoTransferRules = exports.getTreasuryTaxLetters = exports.fetchTreasuryTaxLetterList = exports.getTreasuryStatements = exports.fetchTreasuryStatementList = exports.getTreasuryTransferMoney = exports.clearTreasuryTransferMoney = exports.updateTreasuryTransferMoneyLocalData = exports.executeTreasuryTransferMoney = exports.getTreasuryDetail = exports.updateTreasuryTransactionListUIState = exports.fetchTreasuryTransactionList = exports.fetchTreasuryOverviewDetail = exports.toMessageType = exports.toMessageSender = exports.toAiCfoAnswerResponseTypeStrict = exports.toAiCfoAnswerResponseType = exports.toAiCfoAnswerStateTypeStrict = exports.toAiCfoAnswerStateType = exports.toAiCfoChartTypeStrict = exports.toAiCfoChartType = exports.toAiCfoVisualizationTypeStrict = exports.toAiCfoVisualizationType = 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.getAiCfoSelectorView = exports.getAllQuestionsForChatSession = exports.getQuestionAnswerByIdForChatSession = exports.getAllQuestionAnswersForChatSession = exports.toAiCfoVisualization = exports.clearAiCfo = exports.clearSession = exports.addQuestionPayload = exports.upsertOrAddQuestionAnswerPayload = exports.upsertAnswerPayload = exports.setSessions = exports.setNewSession = exports.getSuggestedQuestionsForPageContext = exports.getAiCfoView = exports.clearAiCfoSidePanelHostPageContext = exports.applyAiCfoSidePanelHostPageTransition = exports.fetchSuggestedQuestionsFailure = exports.fetchSuggestedQuestionsSuccess = exports.fetchSuggestedQuestions = exports.updateResponseState = exports.deleteChatSession = void 0;
74
- 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 = void 0;
74
+ exports.DEFAULT_SESSION_CONFIG = exports.SessionManager = exports.getScheduleActivityLogView = exports.clearScheduleActivityLogView = exports.fetchScheduleActivityLog = 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 = void 0;
75
75
  const allowedValue_1 = require("./commonStateTypes/allowedValue");
76
76
  Object.defineProperty(exports, "isAllowedValueWithCode", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithCode; } });
77
77
  Object.defineProperty(exports, "isAllowedValueWithID", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithID; } });
@@ -2303,6 +2303,11 @@ var transactionActivityLogViewReducer_1 = require("./view/transactionActivityLog
2303
2303
  Object.defineProperty(exports, "fetchTransactionActivityLog", { enumerable: true, get: function () { return transactionActivityLogViewReducer_1.fetchTransactionActivityLog; } });
2304
2304
  var transactionActivityLogViewSelector_1 = require("./view/transactionActivityLogView/transactionActivityLogViewSelector");
2305
2305
  Object.defineProperty(exports, "getTransactionActivityLogView", { enumerable: true, get: function () { return transactionActivityLogViewSelector_1.getTransactionActivityLogView; } });
2306
+ var scheduleActivityLogViewReducer_1 = require("./view/scheduleActivityLogView/scheduleActivityLogViewReducer");
2307
+ Object.defineProperty(exports, "fetchScheduleActivityLog", { enumerable: true, get: function () { return scheduleActivityLogViewReducer_1.fetchScheduleActivityLog; } });
2308
+ Object.defineProperty(exports, "clearScheduleActivityLogView", { enumerable: true, get: function () { return scheduleActivityLogViewReducer_1.clearScheduleActivityLogView; } });
2309
+ var scheduleActivityLogViewSelector_1 = require("./view/scheduleActivityLogView/scheduleActivityLogViewSelector");
2310
+ Object.defineProperty(exports, "getScheduleActivityLogView", { enumerable: true, get: function () { return scheduleActivityLogViewSelector_1.getScheduleActivityLogView; } });
2306
2311
  // ── Session Management ──────────────────────────────────────────────
2307
2312
  var SessionManager_1 = require("./entity/tenant/SessionManager");
2308
2313
  Object.defineProperty(exports, "SessionManager", { enumerable: true, get: function () { return SessionManager_1.SessionManager; } });
package/lib/reducer.d.ts CHANGED
@@ -41,6 +41,7 @@ import { PaymentInstrumentState } from './entity/paymentInstrument/paymentInstru
41
41
  import { AccountingSummaryState } from './entity/portfolio/accountingSummary/accountingSummaryState';
42
42
  import { ProjectState } from './entity/project/projectReducer';
43
43
  import { ReimbursementState } from './entity/reimbursement/reimbursementState';
44
+ import { ScheduleActivityLogState } from './entity/scheduleActivityLog/scheduleActivityLogState';
44
45
  import { SectionAccountsViewState } from './entity/sectionAccountsView/sectionAccountsViewState';
45
46
  import { SectionClassesViewStateV2 } from './entity/sectionClassesViewV2/sectionClassesViewState';
46
47
  import { SectionProjectViewState } from './entity/sectionProjectView/sectionProjectViewState';
@@ -137,6 +138,7 @@ import { ReportsResyncState } from './view/reportsResync/reportsResyncState';
137
138
  import { RevenueWithForecastState } from './view/revenue/revenueState';
138
139
  import { RevenueClassesViewState } from './view/revenueClassesView/revenueClassesViewState';
139
140
  import { ReviewCompanyViewState } from './view/reviewCompanyView/reviewCompanyViewState';
141
+ import { ScheduleActivityLogViewState } from './view/scheduleActivityLogView/scheduleActivityLogViewState';
140
142
  import { ScheduleAccruedDetailViewState } from './view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailState';
141
143
  import { ScheduleDetailViewState } from './view/scheduleView/scheduleDetailView/scheduleDetailState';
142
144
  import { ScheduleListViewState } from './view/scheduleView/scheduleListView/scheduleListState';
@@ -265,6 +267,7 @@ type EntitiesState = {
265
267
  recurringBillState: RecurringBillState;
266
268
  reimbursementConfigState: ReimbursementConfigState;
267
269
  reimbursementState: ReimbursementState;
270
+ scheduleActivityLogState: ScheduleActivityLogState;
268
271
  sectionAccountsViewState: SectionAccountsViewState;
269
272
  sectionClassesViewStateV2: SectionClassesViewStateV2;
270
273
  sectionProjectViewState: SectionProjectViewState;
@@ -404,6 +407,7 @@ type ViewsState = {
404
407
  revenueState: RevenueWithForecastState;
405
408
  reviewCompanyViewState: ReviewCompanyViewState;
406
409
  scheduleAccruedDetailState: ScheduleAccruedDetailViewState;
410
+ scheduleActivityLogViewState: ScheduleActivityLogViewState;
407
411
  scheduleDetailState: ScheduleDetailViewState;
408
412
  scheduleListState: ScheduleListViewState;
409
413
  settingsViewState: SettingsViewState;
@@ -564,6 +568,7 @@ declare const reducers: import("redux").Reducer<import("redux").CombinedState<{
564
568
  revenueClassesViewState: RevenueClassesViewState;
565
569
  revenueState: RevenueWithForecastState;
566
570
  reviewCompanyViewState: ReviewCompanyViewState;
571
+ scheduleActivityLogViewState: ScheduleActivityLogViewState;
567
572
  scheduleAccruedDetailState: ScheduleAccruedDetailViewState;
568
573
  scheduleDetailState: ScheduleDetailViewState;
569
574
  scheduleListState: ScheduleListViewState;
@@ -653,6 +658,7 @@ declare const reducers: import("redux").Reducer<import("redux").CombinedState<{
653
658
  paymentInstrumentState: PaymentInstrumentState;
654
659
  recurringBillState: RecurringBillState;
655
660
  reimbursementState: ReimbursementState;
661
+ scheduleActivityLogState: ScheduleActivityLogState;
656
662
  sectionAccountsViewState: SectionAccountsViewState;
657
663
  sectionClassesViewStateV2: SectionClassesViewStateV2;
658
664
  sectionProjectViewState: SectionProjectViewState;
package/lib/reducer.js CHANGED
@@ -81,6 +81,7 @@ const paymentInstrumentReducer_1 = __importStar(require("./entity/paymentInstrum
81
81
  const accountingSummaryReducer_1 = __importStar(require("./entity/portfolio/accountingSummary/accountingSummaryReducer"));
82
82
  const projectReducer_1 = __importStar(require("./entity/project/projectReducer"));
83
83
  const reimbursementReducer_1 = __importStar(require("./entity/reimbursement/reimbursementReducer"));
84
+ const scheduleActivityLogReducer_1 = __importStar(require("./entity/scheduleActivityLog/scheduleActivityLogReducer"));
84
85
  const sectionAccountsViewReducer_1 = __importStar(require("./entity/sectionAccountsView/sectionAccountsViewReducer"));
85
86
  const sectionClassesViewReducer_1 = __importStar(require("./entity/sectionClassesViewV2/sectionClassesViewReducer"));
86
87
  const sectionProjectViewReducer_1 = __importStar(require("./entity/sectionProjectView/sectionProjectViewReducer"));
@@ -178,6 +179,7 @@ const reportsResyncReducer_1 = __importStar(require("./view/reportsResync/report
178
179
  const revenueReducer_1 = __importStar(require("./view/revenue/revenueReducer"));
179
180
  const revenueClassesViewReducer_1 = __importStar(require("./view/revenueClassesView/revenueClassesViewReducer"));
180
181
  const reviewCompanyViewReducer_1 = __importStar(require("./view/reviewCompanyView/reviewCompanyViewReducer"));
182
+ const scheduleActivityLogViewReducer_1 = __importStar(require("./view/scheduleActivityLogView/scheduleActivityLogViewReducer"));
181
183
  const scheduleAccruedDetailReducer_1 = __importStar(require("./view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailReducer"));
182
184
  const scheduleDetailReducer_1 = __importStar(require("./view/scheduleView/scheduleDetailView/scheduleDetailReducer"));
183
185
  const scheduleListReducer_1 = __importStar(require("./view/scheduleView/scheduleListView/scheduleListReducer"));
@@ -307,6 +309,7 @@ const initialEntitiesState = {
307
309
  recurringBillState: recurringBillsReducer_1.initialState,
308
310
  reimbursementConfigState: reimbursementConfigReducer_1.initialState,
309
311
  reimbursementState: reimbursementReducer_1.initialState,
312
+ scheduleActivityLogState: scheduleActivityLogReducer_1.initialState,
310
313
  sectionAccountsViewState: sectionAccountsViewReducer_1.initialState,
311
314
  sectionClassesViewStateV2: sectionClassesViewReducer_1.initialState,
312
315
  sectionProjectViewState: sectionProjectViewReducer_1.initialState,
@@ -445,6 +448,7 @@ const initialViewsState = {
445
448
  revenueClassesViewState: revenueClassesViewReducer_1.initialState,
446
449
  revenueState: revenueReducer_1.initialState,
447
450
  reviewCompanyViewState: reviewCompanyViewReducer_1.initialState,
451
+ scheduleActivityLogViewState: scheduleActivityLogViewReducer_1.initialState,
448
452
  scheduleAccruedDetailState: scheduleAccruedDetailReducer_1.initialState,
449
453
  scheduleDetailState: scheduleDetailReducer_1.initialState,
450
454
  scheduleListState: scheduleListReducer_1.initialState,
@@ -543,6 +547,7 @@ const entityReducers = {
543
547
  recurringBillState: recurringBillsReducer_1.default,
544
548
  reimbursementConfigState: reimbursementConfigReducer_1.default,
545
549
  reimbursementState: reimbursementReducer_1.default,
550
+ scheduleActivityLogState: scheduleActivityLogReducer_1.default,
546
551
  sectionAccountsViewState: sectionAccountsViewReducer_1.default,
547
552
  sectionClassesViewStateV2: sectionClassesViewReducer_1.default,
548
553
  sectionProjectViewState: sectionProjectViewReducer_1.default,
@@ -681,6 +686,7 @@ const viewReducers = {
681
686
  revenueClassesViewState: revenueClassesViewReducer_1.default,
682
687
  revenueState: revenueReducer_1.default,
683
688
  reviewCompanyViewState: reviewCompanyViewReducer_1.default,
689
+ scheduleActivityLogViewState: scheduleActivityLogViewReducer_1.default,
684
690
  scheduleAccruedDetailState: scheduleAccruedDetailReducer_1.default,
685
691
  scheduleDetailState: scheduleDetailReducer_1.default,
686
692
  scheduleListState: scheduleListReducer_1.default,
@@ -0,0 +1,11 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { ScheduleActivityLogPayload } from '../../entity/scheduleActivityLog/scheduleActivityLogPayload';
4
+ import { updateScheduleActivityLogs } from '../../entity/scheduleActivityLog/scheduleActivityLogReducer';
5
+ import { updateAllUsers } from '../../entity/user/userReducer';
6
+ import { RootState } from '../../reducer';
7
+ import { ZeniAPI } from '../../zeniAPI';
8
+ import { fetchScheduleActivityLog, updateScheduleActivityLogViewFetchStatus, updateScheduleActivityLogViewOnSuccess } from './scheduleActivityLogViewReducer';
9
+ export declare const filterValidScheduleActivityPayloads: (rawActivity: ReadonlyArray<ScheduleActivityLogPayload>) => ScheduleActivityLogPayload[];
10
+ export type ActionType = ReturnType<typeof fetchScheduleActivityLog> | ReturnType<typeof updateScheduleActivityLogs> | ReturnType<typeof updateAllUsers> | ReturnType<typeof updateScheduleActivityLogViewOnSuccess> | ReturnType<typeof updateScheduleActivityLogViewFetchStatus>;
11
+ export declare const fetchScheduleActivityLogEpic: (actions$: ActionsObservable<ActionType>, _: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;