@zeniai/client-epic-state 5.0.72 → 5.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonStateTypes/cacheOverrideFetchReducer.d.ts +17 -0
- package/lib/commonStateTypes/cacheOverrideFetchReducer.js +20 -0
- package/lib/commonStateTypes/filterPrimitives.d.ts +23 -0
- package/lib/commonStateTypes/filterPrimitives.js +21 -0
- package/lib/commonStateTypes/pusherActions.d.ts +11 -0
- package/lib/commonStateTypes/pusherActions.js +6 -0
- package/lib/coreEpics.js +1 -1
- package/lib/entity/account/accountSelector.d.ts +27 -1
- package/lib/entity/account/accountSelector.js +47 -1
- package/lib/entity/account/accountState.d.ts +6 -1
- package/lib/entity/account/accountState.js +11 -4
- package/lib/entity/account/subAccountSelector.d.ts +1 -1
- package/lib/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +1 -3
- package/lib/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +1 -2
- package/lib/entity/aiAccountantCustomer/aiAccountantCustomerSelector.d.ts +1 -1
- package/lib/entity/chargeCard/chargeCardReducer.d.ts +19 -2
- package/lib/entity/chargeCard/chargeCardReducer.js +35 -2
- package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.d.ts +14 -1
- package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.js +36 -2
- package/lib/entity/class/classSelector.d.ts +35 -0
- package/lib/entity/class/classSelector.js +50 -0
- package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.d.ts +2 -0
- package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +2 -0
- package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +2 -0
- package/lib/entity/sectionProjectView/sectionProjectViewReducer.d.ts +1 -1
- package/lib/entity/sectionProjectView/sectionProjectViewSelector.js +1 -1
- package/lib/entity/tenant/SessionManager.js +6 -3
- package/lib/entity/tenant/clearAllEpic.d.ts +2 -2
- package/lib/entity/tenant/clearAllEpic.js +2 -2
- package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.js +6 -2
- package/lib/entity/tenant/epic/saveOAuthConnectionEpic.js +6 -2
- package/lib/entity/tenant/tenantReducer.js +6 -1
- package/lib/entity/transaction/payloadTypes/transactionLinePayload.js +3 -1
- package/lib/epic.d.ts +9 -9
- package/lib/epic.js +10 -10
- package/lib/esm/commonStateTypes/cacheOverrideFetchReducer.js +16 -0
- package/lib/esm/commonStateTypes/filterPrimitives.js +20 -0
- package/lib/esm/commonStateTypes/pusherActions.js +3 -0
- package/lib/esm/coreEpics.js +1 -1
- package/lib/esm/entity/account/accountSelector.js +46 -1
- package/lib/esm/entity/account/accountState.js +7 -1
- package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +1 -3
- package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +1 -2
- package/lib/esm/entity/chargeCard/chargeCardReducer.js +34 -1
- package/lib/esm/entity/chargeCardTransaction/chargeCardTransactionReducer.js +35 -1
- package/lib/esm/entity/class/classSelector.js +48 -0
- package/lib/esm/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +2 -0
- package/lib/esm/entity/sectionProjectView/sectionProjectViewSelector.js +1 -1
- package/lib/esm/entity/tenant/SessionManager.js +4 -1
- package/lib/esm/entity/tenant/clearAllEpic.js +2 -2
- package/lib/esm/entity/tenant/epic/saveAPIKeyConnectionEpic.js +6 -2
- package/lib/esm/entity/tenant/epic/saveOAuthConnectionEpic.js +6 -2
- package/lib/esm/entity/tenant/tenantReducer.js +6 -1
- package/lib/esm/entity/transaction/payloadTypes/transactionLinePayload.js +3 -1
- package/lib/esm/epic.js +10 -10
- package/lib/esm/index.js +26 -16
- package/lib/esm/reducer.js +2 -2
- package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +2 -5
- package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +2 -5
- package/lib/esm/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +4 -1
- package/lib/esm/view/companyHealthMetricView/companyHealthMetricViewSelector.js +1 -1
- package/lib/esm/view/companyTaskManagerView/companyTaskManagerViewSelector.js +1 -1
- package/lib/esm/view/companyTaskManagerView/epics/fetchTaskManagerMetricsEpic.js +1 -1
- package/lib/esm/view/companyView/helpers/cockpitHelpers.js +1 -1
- package/lib/esm/view/companyView/selector/companyManagementViewSelector.js +1 -1
- package/lib/esm/view/companyView/selector/companyPortfolioViewSelector.js +1 -1
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchesEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +2 -1
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/restoreBulkUploadAutomatchingOnMountEpic.js +8 -6
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +7 -1
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +11 -1
- package/lib/esm/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +2 -1
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +137 -1
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +89 -13
- package/lib/esm/view/expenseAutomationView/transactionFilterHelpers.js +258 -0
- package/lib/esm/view/expenseAutomationView/types/completedSubTab.js +17 -0
- package/lib/esm/view/expenseAutomationView/types/missingReceiptsViewState.js +0 -2
- package/lib/esm/view/financeStatement/financeStatementSelector.js +1 -1
- package/lib/esm/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +3 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +3 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +55 -18
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +16 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +5 -4
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +26 -9
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +9 -6
- package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +3 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
- package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +7 -3
- package/lib/esm/view/spendManagement/spendManagementFilterHelpers.js +4 -2
- package/lib/esm/view/subscriptionView/subscriptionViewSelector.js +1 -1
- package/lib/esm/view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic.js +1 -1
- package/lib/esm/view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic.js +1 -1
- package/lib/esm/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +1 -1
- package/lib/esm/view/taskManager/taskListView/taskListReducer.js +1 -1
- package/lib/esm/view/transactionDetail/transactionDetailSelector.js +7 -1
- package/lib/index.d.ts +25 -19
- package/lib/index.js +81 -58
- package/lib/reducer.d.ts +2 -2
- package/lib/reducer.js +2 -2
- package/lib/view/aiAccountantView/aiAccountantViewPayload.d.ts +2 -2
- package/lib/view/aiAccountantView/aiAccountantViewReducer.d.ts +1 -1
- package/lib/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +2 -5
- package/lib/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +2 -5
- package/lib/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +4 -1
- package/lib/view/companyHealthMetricView/companyHealthMetricViewSelector.js +1 -1
- package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.d.ts +1 -1
- package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.js +1 -1
- package/lib/view/companyView/helpers/cockpitHelpers.js +1 -1
- package/lib/view/companyView/selector/companyManagementViewSelector.js +1 -1
- package/lib/view/companyView/selector/companyPortfolioViewSelector.js +1 -1
- package/lib/view/companyView/types/cockpitTypes.d.ts +1 -1
- package/lib/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchesEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +2 -1
- package/lib/view/expenseAutomationView/epics/missingReceipts/restoreBulkUploadAutomatchingOnMountEpic.js +8 -6
- package/lib/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +7 -1
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.d.ts +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +10 -0
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +21 -0
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +2 -1
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +2 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +14 -4
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +138 -2
- package/lib/view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes.d.ts +2 -1
- package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +14 -0
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +4 -1
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +91 -13
- package/lib/view/expenseAutomationView/transactionFilterHelpers.d.ts +66 -0
- package/lib/view/expenseAutomationView/transactionFilterHelpers.js +262 -0
- package/lib/view/expenseAutomationView/types/completedSubTab.d.ts +10 -0
- package/lib/view/expenseAutomationView/types/completedSubTab.js +21 -0
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +1 -2
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.js +1 -4
- package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +43 -2
- package/lib/view/financeStatement/financeStatementSelector.js +1 -1
- package/lib/view/profitAndLossProjectView/profitAndLossProjectViewSelectorTypes.d.ts +1 -1
- package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.d.ts +3 -1
- package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +3 -2
- package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.d.ts +3 -1
- package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +3 -2
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +55 -18
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +16 -2
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +5 -4
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.d.ts +18 -3
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +27 -10
- package/lib/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +9 -6
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistory.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.d.ts +3 -1
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +3 -2
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.d.ts +3 -1
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +7 -3
- package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +1 -1
- package/lib/view/spendManagement/spendManagementFilterHelpers.d.ts +12 -3
- package/lib/view/spendManagement/spendManagementFilterHelpers.js +4 -2
- package/lib/view/subscriptionView/subscriptionViewSelector.js +1 -1
- package/lib/view/taskManager/taskListView/taskList.d.ts +1 -1
- package/lib/view/taskManager/taskListView/taskListReducer.js +1 -1
- package/lib/view/transactionDetail/transactionDetailSelector.js +7 -1
- package/lib/view/zeniOAuthView/zeniOAuthSelector.d.ts +1 -1
- package/package.json +9 -4
- package/lib/tsconfig.typecheck.tsbuildinfo +0 -1
|
@@ -21,6 +21,7 @@ const toMonthEndCloseCheck = (monthCloseCheck) => {
|
|
|
21
21
|
title: monthCloseCheck.month_close_check_title,
|
|
22
22
|
frequency: (0, monthEndCloseChecksState_1.toMonthEndCloseCheckFrequency)(monthCloseCheck.action_frequency),
|
|
23
23
|
progress: monthCloseCheck.progress_percentage,
|
|
24
|
+
progressAI: monthCloseCheck.progress_percentage_ai ?? 0,
|
|
24
25
|
sequence: monthCloseCheck.sequence,
|
|
25
26
|
isDisabled: (0, expenseAutomationViewState_1.toExpenseAutomationViewType)(monthCloseCheck.month_close_check_type) ===
|
|
26
27
|
'month_end_insights',
|
|
@@ -61,6 +62,7 @@ const toMonthEndCloseChecksInfo = (payload, period) => ({
|
|
|
61
62
|
monthEndCloseCheckList: payload.month_close_checks.map((monthCloseCheck) => toMonthEndCloseCheck(monthCloseCheck)),
|
|
62
63
|
auditSummary: {
|
|
63
64
|
auditScorePercentage: payload.audit_summary.audit_score_percentage,
|
|
65
|
+
auditScorePercentageAI: payload.audit_summary.audit_score_percentage_ai ?? 0,
|
|
64
66
|
auditReportLastGeneratedDate: payload.audit_summary.audit_report_last_generated_date != null
|
|
65
67
|
? (0, zeniDayJS_1.date)(payload.audit_summary.audit_report_last_generated_date)
|
|
66
68
|
: null,
|
|
@@ -18,6 +18,7 @@ export interface MonthEndCloseCheck {
|
|
|
18
18
|
isDisabled: boolean;
|
|
19
19
|
metrics: MonthCloseCheckMetrics[];
|
|
20
20
|
progress: number;
|
|
21
|
+
progressAI: number;
|
|
21
22
|
sequence: number;
|
|
22
23
|
title: string;
|
|
23
24
|
}
|
|
@@ -32,6 +33,7 @@ export interface MonthEndInsights {
|
|
|
32
33
|
export interface MonthEndAuditSummary {
|
|
33
34
|
auditReportLastGeneratedDate: ZeniDate | null;
|
|
34
35
|
auditScorePercentage: number;
|
|
36
|
+
auditScorePercentageAI: number;
|
|
35
37
|
}
|
|
36
38
|
export interface MonthEndCloseChecksInfo {
|
|
37
39
|
auditSummary: MonthEndAuditSummary;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CurrencyPayload } from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';
|
|
2
|
-
import { AccountMetadataPayload } from '../account/accountPayload';
|
|
3
2
|
import { SectionByProjectCOABalanceGroupedPayloadV2 } from '../../view/profitAndLossProjectView/profitAndLossProjectViewPayload';
|
|
3
|
+
import { AccountMetadataPayload } from '../account/accountPayload';
|
|
4
4
|
import { SectionProjectViewState } from './sectionProjectViewState';
|
|
5
5
|
export declare const initialState: SectionProjectViewState;
|
|
6
6
|
export declare const updateSectionProjectView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[timeframe: "month" | "year" | "quarter", sectionId: string, reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card" | "excluded_account_reconciliation", sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2, accountsMetadataPayload: AccountMetadataPayload[], currencyPayload: CurrencyPayload], {
|
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getSectionProjectViewReport = void 0;
|
|
7
7
|
const get_1 = __importDefault(require("lodash/get"));
|
|
8
|
-
const coaBalance_1 = require("../../commonStateTypes/coaBalance/coaBalance");
|
|
9
8
|
const getSumOfBalancesGroupedByPeriod_1 = require("../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod");
|
|
9
|
+
const coaBalance_1 = require("../../commonStateTypes/coaBalance/coaBalance");
|
|
10
10
|
const subAccountSelector_1 = require("../account/subAccountSelector");
|
|
11
11
|
const projectSelector_1 = require("../project/projectSelector");
|
|
12
12
|
const sectionProjectView_1 = require("./sectionProjectView");
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionManager = void 0;
|
|
2
4
|
/**
|
|
3
5
|
* SessionManager — Central session lifecycle manager.
|
|
4
6
|
*
|
|
@@ -10,8 +12,6 @@
|
|
|
10
12
|
* 5. Sync activity across same-origin tabs via BroadcastChannel so one
|
|
11
13
|
* active tab keeps other tabs' sessions alive (no cascading logout).
|
|
12
14
|
*/
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.SessionManager = void 0;
|
|
15
15
|
const sessionTypes_1 = require("./sessionTypes");
|
|
16
16
|
/** Events that indicate user activity. */
|
|
17
17
|
const ACTIVITY_EVENTS = [
|
|
@@ -263,7 +263,10 @@ class SessionManager {
|
|
|
263
263
|
this.callbacks?.onHeartbeat();
|
|
264
264
|
// Let other tabs know we just fired a heartbeat — they can skip theirs
|
|
265
265
|
// this cycle to avoid N tabs all firing heartbeats.
|
|
266
|
-
this.broadcast({
|
|
266
|
+
this.broadcast({
|
|
267
|
+
type: 'heartbeat-fired',
|
|
268
|
+
timestamp: this.lastHeartbeatTime,
|
|
269
|
+
});
|
|
267
270
|
}
|
|
268
271
|
// ─── BroadcastChannel (cross-tab activity sync) ───────────
|
|
269
272
|
setupBroadcastChannel() {
|
|
@@ -2,13 +2,13 @@ import { ActionsObservable } from 'redux-observable';
|
|
|
2
2
|
import { clearAllAiAccountantCustomers } from '../../entity/aiAccountantCustomer/aiAccountantCustomerReducer';
|
|
3
3
|
import { clearAiCfo } from '../../entity/aiCfo/aiCfoReducer';
|
|
4
4
|
import { clearAllApprovalRules } from '../../entity/approvalRule/approvalRuleReducer';
|
|
5
|
+
import { clearAllCreditAgent } from '../../entity/creditAgent/creditAgentReducer';
|
|
5
6
|
import { clearAllEntityApprovalStatus } from '../../entity/entityApprovalStatus/entityApprovalStatusReducer';
|
|
6
7
|
import { clearAllMonthEndCloseChecks } from '../../entity/monthEndCloseChecks/monthEndCloseChecksReducer';
|
|
7
8
|
import { clearAllNotifications } from '../../entity/notification/notificationReducer';
|
|
8
9
|
import { clearAllSectionsClassesViewV2 } from '../../entity/sectionClassesViewV2/sectionClassesViewReducer';
|
|
9
10
|
import { clearAllSectionsProjectView } from '../../entity/sectionProjectView/sectionProjectViewReducer';
|
|
10
11
|
import { clearAllTaskGroups } from '../../entity/taskGroup/taskGroupReducer';
|
|
11
|
-
import { clearCannedResponses } from '../../view/taskManager/cannedResponsesView/cannedResponsesReducer';
|
|
12
12
|
import { clearAllToastNotifications } from '../../entity/toastNotification/toastNotificationReducer';
|
|
13
13
|
import { clearAccountList } from '../../view/accountList/accountListReducer';
|
|
14
14
|
import { clearAccountMappingView } from '../../view/accountMappingView/accountMappingReducer';
|
|
@@ -39,7 +39,6 @@ import { clearCompanyHealthMetricView } from '../../view/companyHealthMetricView
|
|
|
39
39
|
import { clearCompanyMonthEndReportView } from '../../view/companyMonthEndReportView/companyMonthEndReportViewReducer';
|
|
40
40
|
import { clearCompanyTaskManagerView } from '../../view/companyTaskManagerView/companyTaskManagerViewReducer';
|
|
41
41
|
import { clearCompanyView } from '../../view/companyView/companyViewReducer';
|
|
42
|
-
import { clearAllCreditAgent } from '../../entity/creditAgent/creditAgentReducer';
|
|
43
42
|
import { clearCreditAgentView } from '../../view/creditAgentView/creditAgentViewReducer';
|
|
44
43
|
import { clearDashboard } from '../../view/dashboard/dashboardReducer';
|
|
45
44
|
import { clearDashboardLayout } from '../../view/dashboardLayout/dashboardLayoutReducer';
|
|
@@ -134,6 +133,7 @@ import { clearZeniAccountSetupView } from '../../view/spendManagement/zeniAccoun
|
|
|
134
133
|
import { clearZeniAccountsConfig } from '../../view/spendManagement/zeniAccounts/zeniAccountsConfig/zeniAccountsConfigReducer';
|
|
135
134
|
import { clearSubscriptionView } from '../../view/subscriptionView/subscriptionViewReducer';
|
|
136
135
|
import { clearTagView } from '../../view/tagView/tagViewReducer';
|
|
136
|
+
import { clearCannedResponses } from '../../view/taskManager/cannedResponsesView/cannedResponsesReducer';
|
|
137
137
|
import { clearTaskDetail } from '../../view/taskManager/taskDetailView/taskDetailReducer';
|
|
138
138
|
import { clearTaskGroupTemplatesView } from '../../view/taskManager/taskGroupTemplateView/taskGroupTemplateViewReducer';
|
|
139
139
|
import { clearTaskGroupView } from '../../view/taskManager/taskGroupView/taskGroupViewReducer';
|
|
@@ -6,13 +6,13 @@ const operators_1 = require("rxjs/operators");
|
|
|
6
6
|
const aiAccountantCustomerReducer_1 = require("../../entity/aiAccountantCustomer/aiAccountantCustomerReducer");
|
|
7
7
|
const aiCfoReducer_1 = require("../../entity/aiCfo/aiCfoReducer");
|
|
8
8
|
const approvalRuleReducer_1 = require("../../entity/approvalRule/approvalRuleReducer");
|
|
9
|
+
const creditAgentReducer_1 = require("../../entity/creditAgent/creditAgentReducer");
|
|
9
10
|
const entityApprovalStatusReducer_1 = require("../../entity/entityApprovalStatus/entityApprovalStatusReducer");
|
|
10
11
|
const monthEndCloseChecksReducer_1 = require("../../entity/monthEndCloseChecks/monthEndCloseChecksReducer");
|
|
11
12
|
const notificationReducer_1 = require("../../entity/notification/notificationReducer");
|
|
12
13
|
const sectionClassesViewReducer_1 = require("../../entity/sectionClassesViewV2/sectionClassesViewReducer");
|
|
13
14
|
const sectionProjectViewReducer_1 = require("../../entity/sectionProjectView/sectionProjectViewReducer");
|
|
14
15
|
const taskGroupReducer_1 = require("../../entity/taskGroup/taskGroupReducer");
|
|
15
|
-
const cannedResponsesReducer_1 = require("../../view/taskManager/cannedResponsesView/cannedResponsesReducer");
|
|
16
16
|
const toastNotificationReducer_1 = require("../../entity/toastNotification/toastNotificationReducer");
|
|
17
17
|
const accountListReducer_1 = require("../../view/accountList/accountListReducer");
|
|
18
18
|
const accountMappingReducer_1 = require("../../view/accountMappingView/accountMappingReducer");
|
|
@@ -43,7 +43,6 @@ const companyHealthMetricViewReducer_1 = require("../../view/companyHealthMetric
|
|
|
43
43
|
const companyMonthEndReportViewReducer_1 = require("../../view/companyMonthEndReportView/companyMonthEndReportViewReducer");
|
|
44
44
|
const companyTaskManagerViewReducer_1 = require("../../view/companyTaskManagerView/companyTaskManagerViewReducer");
|
|
45
45
|
const companyViewReducer_1 = require("../../view/companyView/companyViewReducer");
|
|
46
|
-
const creditAgentReducer_1 = require("../../entity/creditAgent/creditAgentReducer");
|
|
47
46
|
const creditAgentViewReducer_1 = require("../../view/creditAgentView/creditAgentViewReducer");
|
|
48
47
|
const dashboardReducer_1 = require("../../view/dashboard/dashboardReducer");
|
|
49
48
|
const dashboardLayoutReducer_1 = require("../../view/dashboardLayout/dashboardLayoutReducer");
|
|
@@ -138,6 +137,7 @@ const zeniAccountSetupViewReducer_1 = require("../../view/spendManagement/zeniAc
|
|
|
138
137
|
const zeniAccountsConfigReducer_1 = require("../../view/spendManagement/zeniAccounts/zeniAccountsConfig/zeniAccountsConfigReducer");
|
|
139
138
|
const subscriptionViewReducer_1 = require("../../view/subscriptionView/subscriptionViewReducer");
|
|
140
139
|
const tagViewReducer_1 = require("../../view/tagView/tagViewReducer");
|
|
140
|
+
const cannedResponsesReducer_1 = require("../../view/taskManager/cannedResponsesView/cannedResponsesReducer");
|
|
141
141
|
const taskDetailReducer_1 = require("../../view/taskManager/taskDetailView/taskDetailReducer");
|
|
142
142
|
const taskGroupTemplateViewReducer_1 = require("../../view/taskManager/taskGroupTemplateView/taskGroupTemplateViewReducer");
|
|
143
143
|
const taskGroupViewReducer_1 = require("../../view/taskManager/taskGroupView/taskGroupViewReducer");
|
|
@@ -21,9 +21,13 @@ const saveAPIKeyConnectionEpic = (actions$, _, zeniAPI) => actions$.pipe((0, ope
|
|
|
21
21
|
}
|
|
22
22
|
const status = response.status ??
|
|
23
23
|
(0, responsePayload_1.createZeniAPIStatus)('Failed to save connection. Please try again.');
|
|
24
|
-
return (0, rxjs_1.from)([
|
|
24
|
+
return (0, rxjs_1.from)([
|
|
25
|
+
(0, tenantReducer_1.saveAPIKeyConnectionFailure)(action.payload.tenantId, status),
|
|
26
|
+
]);
|
|
25
27
|
}), (0, operators_1.catchError)((error) => {
|
|
26
|
-
const message = error instanceof Error
|
|
28
|
+
const message = error instanceof Error
|
|
29
|
+
? error.message
|
|
30
|
+
: 'Unexpected error saving connection.';
|
|
27
31
|
return (0, rxjs_1.from)([
|
|
28
32
|
(0, tenantReducer_1.saveAPIKeyConnectionFailure)(action.payload.tenantId, (0, responsePayload_1.createZeniAPIStatus)(message)),
|
|
29
33
|
]);
|
|
@@ -23,9 +23,13 @@ const saveOAuthConnectionEpic = (actions$, _, zeniAPI) => actions$.pipe((0, oper
|
|
|
23
23
|
}
|
|
24
24
|
const status = response.status ??
|
|
25
25
|
(0, responsePayload_1.createZeniAPIStatus)('Failed to save connection. Please try again.');
|
|
26
|
-
return (0, rxjs_1.from)([
|
|
26
|
+
return (0, rxjs_1.from)([
|
|
27
|
+
(0, tenantReducer_1.saveOAuthConnectionFailure)(action.payload.tenantId, status),
|
|
28
|
+
]);
|
|
27
29
|
}), (0, operators_1.catchError)((error) => {
|
|
28
|
-
const message = error instanceof Error
|
|
30
|
+
const message = error instanceof Error
|
|
31
|
+
? error.message
|
|
32
|
+
: 'Unexpected error saving connection.';
|
|
29
33
|
return (0, rxjs_1.from)([
|
|
30
34
|
(0, tenantReducer_1.saveOAuthConnectionFailure)(action.payload.tenantId, (0, responsePayload_1.createZeniAPIStatus)(message)),
|
|
31
35
|
]);
|
|
@@ -574,7 +574,12 @@ const tenant = (0, toolkit_1.createSlice)({
|
|
|
574
574
|
saveConnectorCredentialsSuccess: {
|
|
575
575
|
prepare(tenantId, connectionType, connectionName, connectionPayload) {
|
|
576
576
|
return {
|
|
577
|
-
payload: {
|
|
577
|
+
payload: {
|
|
578
|
+
tenantId,
|
|
579
|
+
connectionType,
|
|
580
|
+
connectionName,
|
|
581
|
+
connectionPayload,
|
|
582
|
+
},
|
|
578
583
|
};
|
|
579
584
|
},
|
|
580
585
|
reducer(draft, action) {
|
|
@@ -27,7 +27,9 @@ const toTransactionLineBase = (payload, lineType, currency) => ({
|
|
|
27
27
|
});
|
|
28
28
|
const toLinkedTransactionLine = (payload, currency) => ({
|
|
29
29
|
...toTransactionLineBase(payload, 'linked_transaction_line', currency),
|
|
30
|
-
linkedTransactions: payload.linked_transactions != null
|
|
30
|
+
linkedTransactions: payload.linked_transactions != null
|
|
31
|
+
? payload.linked_transactions.map((transactionIDPayload) => (0, transactionIDPayload_1.toTransactionID)(transactionIDPayload))
|
|
32
|
+
: [],
|
|
31
33
|
});
|
|
32
34
|
/**
|
|
33
35
|
* Transaction with account and class line payload with COT tracking
|
package/lib/epic.d.ts
CHANGED
|
@@ -182,6 +182,8 @@ import { ActionType as FetchExpenseAutomationSaveTransactionCategorizationAction
|
|
|
182
182
|
import { ActionType as TriggerReviewTabRefetchActionType } from './view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic';
|
|
183
183
|
import { ActionType as FetchExpenseAutomationUpdateTransactionCategorizationEpicActionType } from './view/expenseAutomationView/epics/transactionCategorization/updateTransactionCategorizationEpic';
|
|
184
184
|
import { ActionType as UploadTransactionReceiptSuccessEpicActionType } from './view/expenseAutomationView/epics/transactionCategorization/uploadTransactionReceiptSuccessEpic';
|
|
185
|
+
import { ActionType as FetchRegisteredInterestsActionType } from './view/featureNotificationView/epics/fetchRegisteredInterestsEpic';
|
|
186
|
+
import { ActionType as NotifyMeForFeatureActionType } from './view/featureNotificationView/epics/notifyMeForFeatureEpic';
|
|
185
187
|
import { ActionType as DeleteFileActionType } from './view/fileView/epic/deleteFileEpic';
|
|
186
188
|
import { ActionType as DeleteFileListActionType } from './view/fileView/epic/deleteFileListEpic';
|
|
187
189
|
import { ActionType as FetchFileActionType } from './view/fileView/epic/fetchFileEpic';
|
|
@@ -207,8 +209,6 @@ import { ActionType as FetchNotificationUnreadCountActionType } from './view/not
|
|
|
207
209
|
import { ActionType as FetchNotificationViewActionType } from './view/notificationView/epics/fetchNotificationViewEpic';
|
|
208
210
|
import { ActionType as UpdateNotificationViewAllNotificationsStatusActionType } from './view/notificationView/epics/updateNotificationViewAllNotificationsStatusEpic';
|
|
209
211
|
import { ActionType as UpdateNotificationViewNotificationStatusActionType } from './view/notificationView/epics/updateNotificationViewNotificationStatusEpic';
|
|
210
|
-
import { ActionType as FetchRegisteredInterestsActionType } from './view/featureNotificationView/epics/fetchRegisteredInterestsEpic';
|
|
211
|
-
import { ActionType as NotifyMeForFeatureActionType } from './view/featureNotificationView/epics/notifyMeForFeatureEpic';
|
|
212
212
|
import { ActionType as FetchCompanyOnboardingViewActionType } from './view/onboardingView/cockpitView/epic/fetchCompanyOnboardingViewEpic';
|
|
213
213
|
import { ActionType as FetchOnboardingCompletedCompaniesActionType } from './view/onboardingView/cockpitView/epic/fetchOnboardingCompletedCompaniesEpic';
|
|
214
214
|
import { ActionType as FetchQBOConnectionPoolActionType } from './view/onboardingView/cockpitView/epic/fetchQBOConnectionPoolEpic';
|
|
@@ -495,15 +495,18 @@ import { ActionType as SaveSubscriptionUpdatesActionType } from './view/subscrip
|
|
|
495
495
|
import { ActionType as CreateTagActionType } from './view/tagView/epics/createTagEpic';
|
|
496
496
|
import { ActionType as DeleteTagActionType } from './view/tagView/epics/deleteTagEpic';
|
|
497
497
|
import { ActionType as FetchAllTagsActionType } from './view/tagView/epics/fetchAllTagsEpic';
|
|
498
|
+
import { ActionType as DeleteCannedResponseActionType } from './view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic';
|
|
499
|
+
import { ActionType as FetchCannedResponsesActionType } from './view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic';
|
|
500
|
+
import { ActionType as SaveCannedResponseActionType } from './view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic';
|
|
498
501
|
import { ActionType as ArchiveTaskActionType } from './view/taskManager/taskDetailView/epics/archiveTaskEpic';
|
|
499
502
|
import { ActionType as DeleteTaskActionType } from './view/taskManager/taskDetailView/epics/deleteTaskEpic';
|
|
500
|
-
import { ActionType as SnoozeTaskActionType } from './view/taskManager/taskDetailView/epics/snoozeTaskEpic';
|
|
501
|
-
import { ActionType as UnsnoozeTaskActionType } from './view/taskManager/taskDetailView/epics/unsnoozeTaskEpic';
|
|
502
503
|
import { ActionType as FetchTaskDetailActionType } from './view/taskManager/taskDetailView/epics/fetchTaskDetailEpic';
|
|
503
504
|
import { ActionType as FetchTaskDetailPageActionType } from './view/taskManager/taskDetailView/epics/fetchTaskDetailPageEpic';
|
|
504
505
|
import { ActionType as FetchTaskHistoryActionType } from './view/taskManager/taskDetailView/epics/fetchTaskHistoryEpic';
|
|
505
506
|
import { ActionType as InitializeTaskToLocalStoreActionType } from './view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic';
|
|
506
507
|
import { ActionType as SaveTaskDetailActionType } from './view/taskManager/taskDetailView/epics/saveTaskDetailEpic';
|
|
508
|
+
import { ActionType as SnoozeTaskActionType } from './view/taskManager/taskDetailView/epics/snoozeTaskEpic';
|
|
509
|
+
import { ActionType as UnsnoozeTaskActionType } from './view/taskManager/taskDetailView/epics/unsnoozeTaskEpic';
|
|
507
510
|
import { ActionType as CreateTaskFromTaskGroupTemplateActionType } from './view/taskManager/taskGroupTemplateView/epics/createTaskFromTaskGroupTemplateEpic';
|
|
508
511
|
import { ActionType as FetchTaskGroupTemplatesActionType } from './view/taskManager/taskGroupTemplateView/epics/fetchTaskGroupTemplatesEpic';
|
|
509
512
|
import { ActionType as CreateNewTaskGroupActionType } from './view/taskManager/taskGroupView/epics/createNewTaskGroupEpic';
|
|
@@ -515,9 +518,6 @@ import { ActionType as DragNDropTasksActionType } from './view/taskManager/taskL
|
|
|
515
518
|
import { ActionType as FetchTaskListActionType } from './view/taskManager/taskListView/epics/fetchTaskListEpic';
|
|
516
519
|
import { ActionType as FetchTaskListPageActionType } from './view/taskManager/taskListView/epics/fetchTaskListPageEpic';
|
|
517
520
|
import { ActionType as UpdateTaskFromListViewActionType } from './view/taskManager/taskListView/epics/updateTaskFromListViewEpic';
|
|
518
|
-
import { ActionType as FetchCannedResponsesActionType } from './view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic';
|
|
519
|
-
import { ActionType as SaveCannedResponseActionType } from './view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic';
|
|
520
|
-
import { ActionType as DeleteCannedResponseActionType } from './view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic';
|
|
521
521
|
import { ActionType as FetchTasksCardActionType } from './view/tasksCard/fetchTasksCardEpic';
|
|
522
522
|
import { ActionType as TopExActionType } from './view/topEx/topExEpic';
|
|
523
523
|
import { ActionType as FetchTransactionActivityLogActionType } from './view/transactionActivityLogView/fetchTransactionActivityLogEpic';
|
|
@@ -531,13 +531,13 @@ import { ActionType as UpdateTransactionDetailActionType } from './view/transact
|
|
|
531
531
|
import { ActionType as UpdateTransactionOnUploadSuccessActionType } from './view/transactionDetail/epics/uploadMissingAttachmentSuccessEpic';
|
|
532
532
|
import { ActionType as FetchTransactionListByAccountActionType } from './view/transactionList/fetchTransactionListByAccountEpic';
|
|
533
533
|
import { ActionType as FetchTransactionListByClassActionType } from './view/transactionList/fetchTransactionListByClassEpic';
|
|
534
|
-
import { ActionType as FetchTransactionListByProjectActionType } from './view/transactionList/fetchTransactionListByProjectEpic';
|
|
535
534
|
import { ActionType as FetchTransactionListByEntityActionType } from './view/transactionList/fetchTransactionListByEntityEpic';
|
|
535
|
+
import { ActionType as FetchTransactionListByProjectActionType } from './view/transactionList/fetchTransactionListByProjectEpic';
|
|
536
536
|
import { ActionType as FetchTransactionsListByCategoryTypeActionType } from './view/transactionList/fetchTransactionsListByCategoryTypeEpic';
|
|
537
537
|
import { ActionType as ParallelFetchAccountTransactionListActionType } from './view/transactionList/parallelFetchAccountTransactionListEpic';
|
|
538
538
|
import { ActionType as ParallelFetchClassTransactionListActionType } from './view/transactionList/parallelFetchClassTransactionListEpic';
|
|
539
|
-
import { ActionType as ParallelFetchProjectTransactionListActionType } from './view/transactionList/parallelFetchProjectTransactionListEpic';
|
|
540
539
|
import { ActionType as ParallelFetchEntityTransactionListActionType } from './view/transactionList/parallelFetchEntityTransactionListEpic';
|
|
540
|
+
import { ActionType as ParallelFetchProjectTransactionListActionType } from './view/transactionList/parallelFetchProjectTransactionListEpic';
|
|
541
541
|
import { ActionType as ParallelFetchTransactionListByCategoryTypeActionType } from './view/transactionList/parallelFetchTransactionListByCategoryTypeEpic';
|
|
542
542
|
import { ActionType as FetchExpenseTrendActionType } from './view/trend/fetchExpenseTrendEpic';
|
|
543
543
|
import { ActionType as FetchIncomeTrendActionType } from './view/trend/fetchIncomeTrendEpic';
|
package/lib/epic.js
CHANGED
|
@@ -9,6 +9,7 @@ const sectionAccountsViewEpic_1 = require("./entity/sectionAccountsView/sectionA
|
|
|
9
9
|
const sectionClassesViewEpic_1 = require("./entity/sectionClassesViewV2/sectionClassesViewEpic");
|
|
10
10
|
const sectionProjectViewEpic_1 = require("./entity/sectionProjectView/sectionProjectViewEpic");
|
|
11
11
|
const clearAllEpic_1 = require("./entity/tenant/clearAllEpic");
|
|
12
|
+
const deleteConnectionEpic_1 = require("./entity/tenant/epic/deleteConnectionEpic");
|
|
12
13
|
const doMagicLinkSignInEpic_1 = require("./entity/tenant/epic/doMagicLinkSignInEpic");
|
|
13
14
|
const fetchActiveTenantEpic_1 = require("./entity/tenant/epic/fetchActiveTenantEpic");
|
|
14
15
|
const fetchAllTenantsEpic_1 = require("./entity/tenant/epic/fetchAllTenantsEpic");
|
|
@@ -16,7 +17,6 @@ const fetchExcludedResourcesEpic_1 = require("./entity/tenant/epic/fetchExcluded
|
|
|
16
17
|
const fetchExternalConnectionsEpic_1 = require("./entity/tenant/epic/fetchExternalConnectionsEpic");
|
|
17
18
|
const fetchSubscriptionSummaryForTenantEpic_1 = require("./entity/tenant/epic/fetchSubscriptionSummaryForTenantEpic");
|
|
18
19
|
const resendVerifyDeviceOTPEpic_1 = require("./entity/tenant/epic/resendVerifyDeviceOTPEpic");
|
|
19
|
-
const deleteConnectionEpic_1 = require("./entity/tenant/epic/deleteConnectionEpic");
|
|
20
20
|
const saveAPIKeyConnectionEpic_1 = require("./entity/tenant/epic/saveAPIKeyConnectionEpic");
|
|
21
21
|
const saveConnectorCredentialsEpic_1 = require("./entity/tenant/epic/saveConnectorCredentialsEpic");
|
|
22
22
|
const saveExternalConnectionEpic_1 = require("./entity/tenant/epic/saveExternalConnectionEpic");
|
|
@@ -190,6 +190,8 @@ const saveTransactionCategorizationEpic_1 = require("./view/expenseAutomationVie
|
|
|
190
190
|
const triggerReviewTabRefetchEpic_1 = require("./view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic");
|
|
191
191
|
const updateTransactionCategorizationEpic_1 = require("./view/expenseAutomationView/epics/transactionCategorization/updateTransactionCategorizationEpic");
|
|
192
192
|
const uploadTransactionReceiptSuccessEpic_1 = require("./view/expenseAutomationView/epics/transactionCategorization/uploadTransactionReceiptSuccessEpic");
|
|
193
|
+
const fetchRegisteredInterestsEpic_1 = require("./view/featureNotificationView/epics/fetchRegisteredInterestsEpic");
|
|
194
|
+
const notifyMeForFeatureEpic_1 = require("./view/featureNotificationView/epics/notifyMeForFeatureEpic");
|
|
193
195
|
const deleteFileEpic_1 = require("./view/fileView/epic/deleteFileEpic");
|
|
194
196
|
const deleteFileListEpic_1 = require("./view/fileView/epic/deleteFileListEpic");
|
|
195
197
|
const fetchFileEpic_1 = require("./view/fileView/epic/fetchFileEpic");
|
|
@@ -215,8 +217,6 @@ const fetchNotificationUnreadCountEpic_1 = require("./view/notificationView/epic
|
|
|
215
217
|
const fetchNotificationViewEpic_1 = require("./view/notificationView/epics/fetchNotificationViewEpic");
|
|
216
218
|
const updateNotificationViewAllNotificationsStatusEpic_1 = require("./view/notificationView/epics/updateNotificationViewAllNotificationsStatusEpic");
|
|
217
219
|
const updateNotificationViewNotificationStatusEpic_1 = require("./view/notificationView/epics/updateNotificationViewNotificationStatusEpic");
|
|
218
|
-
const fetchRegisteredInterestsEpic_1 = require("./view/featureNotificationView/epics/fetchRegisteredInterestsEpic");
|
|
219
|
-
const notifyMeForFeatureEpic_1 = require("./view/featureNotificationView/epics/notifyMeForFeatureEpic");
|
|
220
220
|
const fetchCompanyOnboardingViewEpic_1 = require("./view/onboardingView/cockpitView/epic/fetchCompanyOnboardingViewEpic");
|
|
221
221
|
const fetchOnboardingCompletedCompaniesEpic_1 = require("./view/onboardingView/cockpitView/epic/fetchOnboardingCompletedCompaniesEpic");
|
|
222
222
|
const fetchQBOConnectionPoolEpic_1 = require("./view/onboardingView/cockpitView/epic/fetchQBOConnectionPoolEpic");
|
|
@@ -506,15 +506,18 @@ const saveSubscriptionUpdatesEpic_1 = require("./view/subscriptionView/epic/save
|
|
|
506
506
|
const createTagEpic_1 = require("./view/tagView/epics/createTagEpic");
|
|
507
507
|
const deleteTagEpic_1 = require("./view/tagView/epics/deleteTagEpic");
|
|
508
508
|
const fetchAllTagsEpic_1 = require("./view/tagView/epics/fetchAllTagsEpic");
|
|
509
|
+
const deleteCannedResponseEpic_1 = require("./view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic");
|
|
510
|
+
const fetchCannedResponsesEpic_1 = require("./view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic");
|
|
511
|
+
const saveCannedResponseEpic_1 = require("./view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic");
|
|
509
512
|
const archiveTaskEpic_1 = require("./view/taskManager/taskDetailView/epics/archiveTaskEpic");
|
|
510
513
|
const deleteTaskEpic_1 = require("./view/taskManager/taskDetailView/epics/deleteTaskEpic");
|
|
511
|
-
const snoozeTaskEpic_1 = require("./view/taskManager/taskDetailView/epics/snoozeTaskEpic");
|
|
512
|
-
const unsnoozeTaskEpic_1 = require("./view/taskManager/taskDetailView/epics/unsnoozeTaskEpic");
|
|
513
514
|
const fetchTaskDetailEpic_1 = require("./view/taskManager/taskDetailView/epics/fetchTaskDetailEpic");
|
|
514
515
|
const fetchTaskDetailPageEpic_1 = require("./view/taskManager/taskDetailView/epics/fetchTaskDetailPageEpic");
|
|
515
516
|
const fetchTaskHistoryEpic_1 = require("./view/taskManager/taskDetailView/epics/fetchTaskHistoryEpic");
|
|
516
517
|
const initializeTaskToLocalStoreEpic_1 = require("./view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic");
|
|
517
518
|
const saveTaskDetailEpic_1 = require("./view/taskManager/taskDetailView/epics/saveTaskDetailEpic");
|
|
519
|
+
const snoozeTaskEpic_1 = require("./view/taskManager/taskDetailView/epics/snoozeTaskEpic");
|
|
520
|
+
const unsnoozeTaskEpic_1 = require("./view/taskManager/taskDetailView/epics/unsnoozeTaskEpic");
|
|
518
521
|
const createTaskFromTaskGroupTemplateEpic_1 = require("./view/taskManager/taskGroupTemplateView/epics/createTaskFromTaskGroupTemplateEpic");
|
|
519
522
|
const fetchTaskGroupTemplatesEpic_1 = require("./view/taskManager/taskGroupTemplateView/epics/fetchTaskGroupTemplatesEpic");
|
|
520
523
|
const createNewTaskGroupEpic_1 = require("./view/taskManager/taskGroupView/epics/createNewTaskGroupEpic");
|
|
@@ -526,9 +529,6 @@ const dragNDropTasksEpic_1 = require("./view/taskManager/taskListView/epics/drag
|
|
|
526
529
|
const fetchTaskListEpic_1 = require("./view/taskManager/taskListView/epics/fetchTaskListEpic");
|
|
527
530
|
const fetchTaskListPageEpic_1 = require("./view/taskManager/taskListView/epics/fetchTaskListPageEpic");
|
|
528
531
|
const updateTaskFromListViewEpic_1 = require("./view/taskManager/taskListView/epics/updateTaskFromListViewEpic");
|
|
529
|
-
const fetchCannedResponsesEpic_1 = require("./view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic");
|
|
530
|
-
const saveCannedResponseEpic_1 = require("./view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic");
|
|
531
|
-
const deleteCannedResponseEpic_1 = require("./view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic");
|
|
532
532
|
const fetchTasksCardEpic_1 = require("./view/tasksCard/fetchTasksCardEpic");
|
|
533
533
|
const topExEpic_1 = require("./view/topEx/topExEpic");
|
|
534
534
|
const fetchTransactionActivityLogEpic_1 = require("./view/transactionActivityLogView/fetchTransactionActivityLogEpic");
|
|
@@ -542,13 +542,13 @@ const updateTransactionDetailEpic_1 = require("./view/transactionDetail/epics/up
|
|
|
542
542
|
const uploadMissingAttachmentSuccessEpic_1 = require("./view/transactionDetail/epics/uploadMissingAttachmentSuccessEpic");
|
|
543
543
|
const fetchTransactionListByAccountEpic_1 = require("./view/transactionList/fetchTransactionListByAccountEpic");
|
|
544
544
|
const fetchTransactionListByClassEpic_1 = require("./view/transactionList/fetchTransactionListByClassEpic");
|
|
545
|
-
const fetchTransactionListByProjectEpic_1 = require("./view/transactionList/fetchTransactionListByProjectEpic");
|
|
546
545
|
const fetchTransactionListByEntityEpic_1 = require("./view/transactionList/fetchTransactionListByEntityEpic");
|
|
546
|
+
const fetchTransactionListByProjectEpic_1 = require("./view/transactionList/fetchTransactionListByProjectEpic");
|
|
547
547
|
const fetchTransactionsListByCategoryTypeEpic_1 = require("./view/transactionList/fetchTransactionsListByCategoryTypeEpic");
|
|
548
548
|
const parallelFetchAccountTransactionListEpic_1 = require("./view/transactionList/parallelFetchAccountTransactionListEpic");
|
|
549
549
|
const parallelFetchClassTransactionListEpic_1 = require("./view/transactionList/parallelFetchClassTransactionListEpic");
|
|
550
|
-
const parallelFetchProjectTransactionListEpic_1 = require("./view/transactionList/parallelFetchProjectTransactionListEpic");
|
|
551
550
|
const parallelFetchEntityTransactionListEpic_1 = require("./view/transactionList/parallelFetchEntityTransactionListEpic");
|
|
551
|
+
const parallelFetchProjectTransactionListEpic_1 = require("./view/transactionList/parallelFetchProjectTransactionListEpic");
|
|
552
552
|
const parallelFetchTransactionListByCategoryTypeEpic_1 = require("./view/transactionList/parallelFetchTransactionListByCategoryTypeEpic");
|
|
553
553
|
const fetchExpenseTrendEpic_1 = require("./view/trend/fetchExpenseTrendEpic");
|
|
554
554
|
const fetchIncomeTrendEpic_1 = require("./view/trend/fetchIncomeTrendEpic");
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory for `fetchXxx` reducers that support Pusher-driven silent refresh.
|
|
3
|
+
* When `cacheOverride=true`, fetchState and error are left untouched so the
|
|
4
|
+
* UI doesn't flash a skeleton. When `false`, `applyTo` runs the normal
|
|
5
|
+
* 'In-Progress' transition.
|
|
6
|
+
*/
|
|
7
|
+
export const createCacheOverrideFetchReducer = (applyTo) => ({
|
|
8
|
+
reducer(draft, action) {
|
|
9
|
+
if (action.payload.cacheOverride !== true) {
|
|
10
|
+
applyTo(draft);
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
prepare(cacheOverride = false) {
|
|
14
|
+
return { payload: { cacheOverride } };
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared filter primitives — used by both Transaction Categorization and
|
|
3
|
+
* Spend Management filter pipelines.
|
|
4
|
+
*
|
|
5
|
+
* These types are deliberately decoupled from any specific feature group:
|
|
6
|
+
*
|
|
7
|
+
* - `CategoryCombinationOperator` is how a `categories[]` array combines
|
|
8
|
+
* (`AND` ⇒ every category must match; `OR` ⇒ any category matches).
|
|
9
|
+
* - `FilterCategoryType` is the input-type tag a filter category uses to
|
|
10
|
+
* pick its value-picker UI (text autocomplete, user picker, date range,
|
|
11
|
+
* number range, plain dropdown).
|
|
12
|
+
*
|
|
13
|
+
* They used to be redeclared locally in both `transactionFilterHelpers.ts`
|
|
14
|
+
* and `spendManagementFilterHelpers.ts` to keep the feature groups
|
|
15
|
+
* independent. Centralising them here is consistent with Route B (which
|
|
16
|
+
* separated the *matching pipelines*, not the *shared primitive types*) and
|
|
17
|
+
* removes the maintenance trap of two identical type definitions drifting
|
|
18
|
+
* apart over time.
|
|
19
|
+
*/
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createAction } from '@reduxjs/toolkit';
|
|
2
|
+
export const addChargeCardTransactionFromPusher = createAction('chargeCardDetail/addChargeCardTransactionFromPusher');
|
|
3
|
+
export const addDeclinedChargeCardTransactionFromPusher = createAction('chargeCardDetail/addDeclinedChargeCardTransactionFromPusher');
|
package/lib/esm/coreEpics.js
CHANGED
|
@@ -21,8 +21,8 @@ import { fetchSubscriptionSummaryForTenantEpic } from './entity/tenant/epic/fetc
|
|
|
21
21
|
import { resendVerifyDeviceOTPEpic } from './entity/tenant/epic/resendVerifyDeviceOTPEpic';
|
|
22
22
|
import { saveExternalConnectionEpic } from './entity/tenant/epic/saveExternalConnectionEpic';
|
|
23
23
|
import { sendEmailMagicLinkToUserEpic } from './entity/tenant/epic/sendEmailMagicLinkToUserEpic';
|
|
24
|
-
import { doSignInEpic } from './entity/tenant/epic/signInUserEpic';
|
|
25
24
|
import { sessionHeartbeatEpic } from './entity/tenant/epic/sessionHeartbeatEpic';
|
|
25
|
+
import { doSignInEpic } from './entity/tenant/epic/signInUserEpic';
|
|
26
26
|
import { doSignOutEpic } from './entity/tenant/epic/signOutUserEpic';
|
|
27
27
|
import { verifyDeviceWithTwoFAEpic } from './entity/tenant/epic/verifyDeviceWithTwoFAEpic';
|
|
28
28
|
// ── Toast Notification Epic ──────────────────────────────────────────
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { createSelector } from '@reduxjs/toolkit';
|
|
1
2
|
import flatMap from 'lodash/flatMap';
|
|
2
3
|
import { getCOABalances } from '../../commonStateTypes/coaBalance/coaBalance';
|
|
3
4
|
import { sortComparator } from '../../commonStateTypes/coaBalance/sortBalancesByFreeRangeTotal';
|
|
4
|
-
import { getAccountKey, } from './accountState';
|
|
5
|
+
import { getAccountKey, isPaymentAccountType, } from './accountState';
|
|
5
6
|
function getCommonAccountFields(accountState, id) {
|
|
6
7
|
const key = getAccountKey(id.reportId, id.accountId, id.classesViewParentId, id.accountsViewParentId, id.projectsViewParentId);
|
|
7
8
|
const account = accountState.accountsByKey[key];
|
|
@@ -179,3 +180,47 @@ export const getAccountIdsForLabels = (accountState, labels) => {
|
|
|
179
180
|
});
|
|
180
181
|
return allAccountIdsForLabels;
|
|
181
182
|
};
|
|
183
|
+
/**
|
|
184
|
+
* Returns all accounts currently in state (single pass over accountsByKey).
|
|
185
|
+
* Use for dropdowns that need account names and types; map to
|
|
186
|
+
* { accountId, accountName, accountType } as needed.
|
|
187
|
+
*/
|
|
188
|
+
export const getAllAccounts = (accountState) => Object.values(accountState.accountsByKey);
|
|
189
|
+
/**
|
|
190
|
+
* Partitions accounts for transaction filter dropdowns: bank/credit_card → paymentAccountNames,
|
|
191
|
+
* all other account types → categoryOptions. Use for payment_account_name and category filter options.
|
|
192
|
+
*
|
|
193
|
+
* Memoised via `createSelector` so the composite `{categoryOptions,
|
|
194
|
+
* paymentAccountNames}` keeps a stable identity across Redux dispatches that
|
|
195
|
+
* don't change account data. Without this, every consumer using
|
|
196
|
+
* `useSelector(state => getTransactionFilterAccountOptions(state.accountState))`
|
|
197
|
+
* would re-render on every dispatch (the inline call returns a fresh outer
|
|
198
|
+
* object each time, defeating reference equality).
|
|
199
|
+
*/
|
|
200
|
+
export const getTransactionFilterAccountOptions = createSelector(
|
|
201
|
+
// Key the memo on the underlying `accountsByKey` record rather than on
|
|
202
|
+
// `getAllAccounts` output: the latter returns a fresh `Object.values(...)`
|
|
203
|
+
// array on every call, which would defeat reselect's reference-equality
|
|
204
|
+
// check and re-run the projection on every dispatch.
|
|
205
|
+
[(accountState) => accountState.accountsByKey], (accountsByKey) => {
|
|
206
|
+
const accounts = Object.values(accountsByKey);
|
|
207
|
+
const paymentAccountNames = [];
|
|
208
|
+
const categoryOptions = [];
|
|
209
|
+
for (const account of accounts) {
|
|
210
|
+
if (account.accountType == null) {
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
const option = {
|
|
214
|
+
accountId: account.accountId,
|
|
215
|
+
accountName: account.accountName,
|
|
216
|
+
accountType: account.accountType,
|
|
217
|
+
};
|
|
218
|
+
if (isPaymentAccountType(account.accountType)) {
|
|
219
|
+
paymentAccountNames.push(option);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
categoryOptions.push(option);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return { categoryOptions, paymentAccountNames };
|
|
226
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getNestedAccountIDStr, } from '../../commonStateTypes/accountView/nestedAccountID';
|
|
2
2
|
import { getNestedClassIDStr, } from '../../commonStateTypes/classesView/nestedClassID';
|
|
3
3
|
import { stringToUnion, stringToUnionStrict, } from '../../commonStateTypes/stringToUnion';
|
|
4
|
-
const ALL_ACCOUNT_TYPES = [
|
|
4
|
+
export const ALL_ACCOUNT_TYPES = [
|
|
5
5
|
'bank',
|
|
6
6
|
'credit_card',
|
|
7
7
|
'expenses',
|
|
@@ -25,6 +25,12 @@ const ALL_ACCOUNT_TYPES = [
|
|
|
25
25
|
];
|
|
26
26
|
export const toAccountType = (v) => stringToUnion(v, ALL_ACCOUNT_TYPES);
|
|
27
27
|
export const toAccountTypeStrict = (v) => stringToUnionStrict(v ?? '', ALL_ACCOUNT_TYPES);
|
|
28
|
+
/** Account types used for payment-account filters (e.g. transaction filter "payment account name"). */
|
|
29
|
+
export const PAYMENT_ACCOUNT_TYPES = ['bank', 'credit_card'];
|
|
30
|
+
export function isPaymentAccountType(accountType) {
|
|
31
|
+
return (accountType != null &&
|
|
32
|
+
PAYMENT_ACCOUNT_TYPES.includes(accountType));
|
|
33
|
+
}
|
|
28
34
|
const ALL_ACCOUNT_LABELS = [
|
|
29
35
|
'uncategorized_income',
|
|
30
36
|
'uncategorized_expense',
|
|
@@ -19,9 +19,7 @@ const toAccuracyByModel = (accuracyPayload) => {
|
|
|
19
19
|
export const toAiAccountantEnrollment = (payload) => ({
|
|
20
20
|
status: toAiAccountantEnrollmentStatus(payload.status),
|
|
21
21
|
accuracy: toAccuracyByModel(payload.accuracy),
|
|
22
|
-
latestTraining: payload.latest_training != null
|
|
23
|
-
? date(payload.latest_training)
|
|
24
|
-
: undefined,
|
|
22
|
+
latestTraining: payload.latest_training != null ? date(payload.latest_training) : undefined,
|
|
25
23
|
latestTransactionSync: payload.latest_transaction_sync != null
|
|
26
24
|
? date(payload.latest_transaction_sync)
|
|
27
25
|
: undefined,
|
|
@@ -27,8 +27,7 @@ const aiAccountantCustomer = createSlice({
|
|
|
27
27
|
const existing = draft.jobsByTenantId[action.payload.tenantId] ?? [];
|
|
28
28
|
const jobMap = new Map(existing.map((job) => [job.jobId, job]));
|
|
29
29
|
mappedJobs.forEach((job) => jobMap.set(job.jobId, job));
|
|
30
|
-
draft.jobsByTenantId[action.payload.tenantId] =
|
|
31
|
-
Array.from(jobMap.values());
|
|
30
|
+
draft.jobsByTenantId[action.payload.tenantId] = Array.from(jobMap.values());
|
|
32
31
|
}
|
|
33
32
|
else {
|
|
34
33
|
draft.jobsByTenantId[action.payload.tenantId] = mappedJobs;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { createSlice } from '@reduxjs/toolkit';
|
|
2
2
|
import assignWith from 'lodash/assignWith';
|
|
3
|
+
import { toAmount } from '../../commonStateTypes/amount';
|
|
4
|
+
import { toCardStatusCodeType } from './chargeCard';
|
|
3
5
|
import { mapChargeCardPayloadToChargeCard, } from './chargeCardPayload';
|
|
4
6
|
export const initialState = {
|
|
5
7
|
chargeCardByID: {},
|
|
@@ -35,6 +37,37 @@ const chargeCard = createSlice({
|
|
|
35
37
|
const latestChargeCard = mapChargeCardPayloadToChargeCard(action.payload);
|
|
36
38
|
draft.chargeCardByID[latestChargeCard.id] = latestChargeCard;
|
|
37
39
|
},
|
|
40
|
+
updateChargeCardStatusFromPusher(draft, action) {
|
|
41
|
+
const { cardId, cardStatus, isLockedByAdmin } = action.payload;
|
|
42
|
+
const card = draft.chargeCardByID[cardId];
|
|
43
|
+
if (card != null) {
|
|
44
|
+
card.status = {
|
|
45
|
+
code: toCardStatusCodeType(cardStatus.code),
|
|
46
|
+
name: cardStatus.name,
|
|
47
|
+
};
|
|
48
|
+
if (isLockedByAdmin !== undefined) {
|
|
49
|
+
card.isLockedByAdmin = isLockedByAdmin;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
updateChargeCardSpendingFromPusher(draft, action) {
|
|
54
|
+
const { cardId, currencyCode, currencySymbol } = action.payload;
|
|
55
|
+
const card = draft.chargeCardByID[cardId];
|
|
56
|
+
if (card == null) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const amt = (v) => v !== undefined ? toAmount(v, currencyCode, currencySymbol) : undefined;
|
|
60
|
+
card.balance = amt(action.payload.balance) ?? card.balance;
|
|
61
|
+
card.hold = amt(action.payload.hold) ?? card.hold;
|
|
62
|
+
card.dailyPurchaseSpends =
|
|
63
|
+
amt(action.payload.dailyPurchaseSpends) ?? card.dailyPurchaseSpends;
|
|
64
|
+
card.monthlyPurchaseSpends =
|
|
65
|
+
amt(action.payload.monthlyPurchaseSpends) ?? card.monthlyPurchaseSpends;
|
|
66
|
+
card.dailyWithdrawals =
|
|
67
|
+
amt(action.payload.dailyWithdrawals) ?? card.dailyWithdrawals;
|
|
68
|
+
card.monthlyWithdrawals =
|
|
69
|
+
amt(action.payload.monthlyWithdrawals) ?? card.monthlyWithdrawals;
|
|
70
|
+
},
|
|
38
71
|
removeChargeCard(draft, action) {
|
|
39
72
|
delete draft.chargeCardByID[action.payload];
|
|
40
73
|
},
|
|
@@ -43,5 +76,5 @@ const chargeCard = createSlice({
|
|
|
43
76
|
},
|
|
44
77
|
},
|
|
45
78
|
});
|
|
46
|
-
export const { updateChargeCards, updateChargeCard, removeChargeCard, clearAllChargeCards, } = chargeCard.actions;
|
|
79
|
+
export const { updateChargeCards, updateChargeCard, updateChargeCardStatusFromPusher, updateChargeCardSpendingFromPusher, removeChargeCard, clearAllChargeCards, } = chargeCard.actions;
|
|
47
80
|
export default chargeCard.reducer;
|