@zeniai/client-epic-state 5.0.2-betaRD2 → 5.0.2-betaRR02

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 (115) hide show
  1. package/lib/entity/billPay/billTransaction/billTransactionState.d.ts +2 -2
  2. package/lib/entity/chargeCard/chargeCard.d.ts +1 -1
  3. package/lib/entity/depositAccountTransaction/depositAccountTransaction.d.ts +1 -1
  4. package/lib/entity/entityApprovalStatus/entityApprovalStatusState.d.ts +2 -2
  5. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
  6. package/lib/entity/snackbar/snackbarTypes.d.ts +2 -2
  7. package/lib/entity/snackbar/snackbarTypes.js +2 -0
  8. package/lib/entity/task/taskPayload.d.ts +3 -0
  9. package/lib/entity/task/taskPayload.js +5 -0
  10. package/lib/entity/task/taskState.d.ts +3 -0
  11. package/lib/entity/tenant/clearAllEpic.d.ts +1 -3
  12. package/lib/entity/tenant/clearAllEpic.js +0 -4
  13. package/lib/entity/transaction/payloadTypes/transactionPayload.js +21 -0
  14. package/lib/entity/userRole/userRoleType.d.ts +2 -2
  15. package/lib/epic.d.ts +3 -5
  16. package/lib/epic.js +3 -5
  17. package/lib/esm/entity/snackbar/snackbarTypes.js +2 -0
  18. package/lib/esm/entity/task/taskPayload.js +5 -0
  19. package/lib/esm/entity/tenant/clearAllEpic.js +0 -4
  20. package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +21 -0
  21. package/lib/esm/epic.js +3 -5
  22. package/lib/esm/index.js +4 -11
  23. package/lib/esm/reducer.js +0 -6
  24. package/lib/esm/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +3 -0
  25. package/lib/esm/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +5 -0
  26. package/lib/esm/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +65 -0
  27. package/lib/esm/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +56 -0
  28. package/lib/esm/view/taskManager/taskDetailView/taskDetail.js +4 -0
  29. package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +49 -1
  30. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +9 -0
  31. package/lib/esm/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +56 -21
  32. package/lib/esm/view/taskManager/taskListView/epics/dragNDropTasksEpic.js +1 -0
  33. package/lib/esm/view/taskManager/taskListView/epics/fetchTaskListEpic.js +13 -3
  34. package/lib/esm/view/taskManager/taskListView/taskList.js +7 -0
  35. package/lib/esm/view/taskManager/taskListView/taskListReducer.js +91 -12
  36. package/lib/esm/view/taskManager/taskListView/taskListSelector.js +22 -6
  37. package/lib/index.d.ts +4 -13
  38. package/lib/index.js +9 -31
  39. package/lib/reducer.d.ts +0 -6
  40. package/lib/reducer.js +0 -6
  41. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  42. package/lib/view/companyView/types/cockpitTypes.d.ts +5 -6
  43. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +2 -2
  44. package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +1 -1
  45. package/lib/view/onboardingView/cockpitView/types/onboardingCockpitViewTypes.d.ts +1 -1
  46. package/lib/view/reviewCompanyView/reviewCompanyViewState.d.ts +1 -1
  47. package/lib/view/spendManagement/billPay/billList/billListReducer.d.ts +1 -1
  48. package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
  49. package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetail.d.ts +1 -1
  50. package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.d.ts +4 -4
  51. package/lib/view/spendManagement/reimbursement/remiListView/remiListReducer.d.ts +1 -1
  52. package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +3 -3
  53. package/lib/view/subscriptionView/types/subscriptionTypes.d.ts +1 -1
  54. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.d.ts +2 -1
  55. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +3 -0
  56. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.d.ts +2 -1
  57. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +5 -0
  58. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.d.ts +9 -0
  59. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +69 -0
  60. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.d.ts +9 -0
  61. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +60 -0
  62. package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +1 -0
  63. package/lib/view/taskManager/taskDetailView/taskDetail.js +4 -0
  64. package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +10 -1
  65. package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +50 -2
  66. package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +4 -0
  67. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +9 -0
  68. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.d.ts +6 -7
  69. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +56 -22
  70. package/lib/view/taskManager/taskListView/epics/dragNDropTasksEpic.js +1 -0
  71. package/lib/view/taskManager/taskListView/epics/fetchTaskListEpic.js +13 -3
  72. package/lib/view/taskManager/taskListView/taskList.d.ts +14 -1
  73. package/lib/view/taskManager/taskListView/taskList.js +8 -1
  74. package/lib/view/taskManager/taskListView/taskListPayload.d.ts +3 -0
  75. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +6 -2
  76. package/lib/view/taskManager/taskListView/taskListReducer.js +92 -13
  77. package/lib/view/taskManager/taskListView/taskListSelector.d.ts +3 -1
  78. package/lib/view/taskManager/taskListView/taskListSelector.js +22 -6
  79. package/package.json +1 -1
  80. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerPayload.d.ts +0 -44
  81. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +0 -55
  82. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerReducer.d.ts +0 -10
  83. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +0 -51
  84. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerSelector.d.ts +0 -48
  85. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerSelector.js +0 -66
  86. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerState.d.ts +0 -52
  87. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerState.js +0 -37
  88. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +0 -49
  89. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +0 -47
  90. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerSelector.js +0 -62
  91. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerState.js +0 -31
  92. package/lib/esm/view/aiAccountantView/aiAccountantViewPayload.js +0 -2
  93. package/lib/esm/view/aiAccountantView/aiAccountantViewReducer.js +0 -149
  94. package/lib/esm/view/aiAccountantView/aiAccountantViewSelector.js +0 -72
  95. package/lib/esm/view/aiAccountantView/aiAccountantViewState.js +0 -11
  96. package/lib/esm/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.js +0 -46
  97. package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +0 -27
  98. package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +0 -47
  99. package/lib/esm/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +0 -52
  100. package/lib/view/aiAccountantView/aiAccountantViewPayload.d.ts +0 -31
  101. package/lib/view/aiAccountantView/aiAccountantViewPayload.js +0 -8
  102. package/lib/view/aiAccountantView/aiAccountantViewReducer.d.ts +0 -29
  103. package/lib/view/aiAccountantView/aiAccountantViewReducer.js +0 -153
  104. package/lib/view/aiAccountantView/aiAccountantViewSelector.d.ts +0 -14
  105. package/lib/view/aiAccountantView/aiAccountantViewSelector.js +0 -78
  106. package/lib/view/aiAccountantView/aiAccountantViewState.d.ts +0 -26
  107. package/lib/view/aiAccountantView/aiAccountantViewState.js +0 -13
  108. package/lib/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.d.ts +0 -33
  109. package/lib/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.js +0 -50
  110. package/lib/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.d.ts +0 -23
  111. package/lib/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +0 -31
  112. package/lib/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.d.ts +0 -33
  113. package/lib/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +0 -51
  114. package/lib/view/aiAccountantView/epics/triggerAiAccountantJobEpic.d.ts +0 -28
  115. package/lib/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +0 -56
@@ -3,17 +3,16 @@ import { ZeniDate } from '../../../zeniDayJS';
3
3
  import { SubscriptionViewSortKey } from '../../subscriptionView/types/subscriptionTypes';
4
4
  import { FilterCategoryValueType } from '../helpers/cockpitHelpers';
5
5
  import { CockpitDownloadTabsID, CockpitTabsFileType } from './cockpitTabsID';
6
- export declare const toPortfolioSortKeyType: (v: string) => "companyName" | "expenses" | "runway" | "cashBalance" | "revenues" | "netIncome";
7
- export declare const toManagementSortKeyType: (v: string) => "status" | "bookCloseDate" | "companyName" | "group" | "controller" | "plans" | "monthlyRecurringRevenue" | "notes" | "taxStatus" | "preparer" | "reviewer" | "annualRecurringRevenue" | "task" | "customerSuccessManager" | "apAnalyst" | "reportSent" | "taxLead" | "satisfaction";
8
- export declare const toOnboardingSortKeyType: (v: string) => "companyName" | "notes" | "businessVerified" | "identityVerified" | "bankAccountLinked" | "customerCreated" | "groupCreated" | "qboLinked" | "enroller" | "invite" | "latestCreated";
9
- export declare const toHealthSortKeyType: (v: string) => "companyName" | "group" | "controller" | "monthlyRecurringRevenue" | "runway" | "companyEngagementMetricsUpdatedAt" | "customerSatisfactionScore" | "externalProductServiceExposure" | "netPromoterScore" | "customerSuccessManager" | "issues" | "productVerticals" | "churnProbability" | "lastReportSent" | "subscriptionDate" | "renewalDate" | "dashboardLastSeen" | "lastEngagement";
6
+ export declare const toPortfolioSortKeyType: (v: string) => "expenses" | "runway" | "companyName" | "cashBalance" | "revenues" | "netIncome";
7
+ export declare const toManagementSortKeyType: (v: string) => "status" | "bookCloseDate" | "group" | "taxStatus" | "controller" | "preparer" | "reviewer" | "annualRecurringRevenue" | "companyName" | "monthlyRecurringRevenue" | "task" | "notes" | "plans" | "customerSuccessManager" | "apAnalyst" | "reportSent" | "taxLead" | "satisfaction";
8
+ export declare const toOnboardingSortKeyType: (v: string) => "companyName" | "businessVerified" | "identityVerified" | "bankAccountLinked" | "customerCreated" | "groupCreated" | "qboLinked" | "notes" | "enroller" | "invite" | "latestCreated";
9
+ export declare const toHealthSortKeyType: (v: string) => "group" | "runway" | "controller" | "companyName" | "monthlyRecurringRevenue" | "companyEngagementMetricsUpdatedAt" | "customerSatisfactionScore" | "externalProductServiceExposure" | "netPromoterScore" | "customerSuccessManager" | "lastReportSent" | "issues" | "productVerticals" | "churnProbability" | "subscriptionDate" | "renewalDate" | "dashboardLastSeen" | "lastEngagement";
10
10
  export declare const toTaskManagerSortKeyType: (v: string) => "status" | "name" | "tags" | "createdBy" | "dueDate" | "priority" | "assignee" | "taskName";
11
11
  export type PortfolioViewSortKey = ReturnType<typeof toPortfolioSortKeyType>;
12
12
  export type ManagementViewSortKey = ReturnType<typeof toManagementSortKeyType>;
13
13
  export type OnboardingViewSortKey = ReturnType<typeof toOnboardingSortKeyType>;
14
14
  export type HealthViewSortKey = ReturnType<typeof toHealthSortKeyType>;
15
15
  export type TaskManagerViewSortKey = ReturnType<typeof toTaskManagerSortKeyType>;
16
- export type AiAccountantFilterCategoryField = 'enrollmentStatus';
17
16
  export type ManagementViewFilterCategoryField = 'controllerUserIds' | 'customerSuccessManagerUserIds' | 'preparerUserIds' | 'reviewerUserIds' | 'apAnalystUserIds' | 'taxLeadUserIds' | 'companyGroupId' | 'taxStatusCode' | 'statusCode' | 'plans' | 'annualRecurringRevenue' | 'monthlyRecurringRevenue' | 'customerSatisfaction' | 'zeniSatisfaction';
18
17
  export type SubscriptionViewFilterCategoryField = 'controllerUserIds' | 'statusCode' | 'recommendedActionCode' | 'subscriptionPlans' | 'subscriptionAddOns' | 'avg2MonthExpenses' | 'slabLowerLimit' | 'slabUpperLimit' | 'monthlyRecurringRevenue';
19
18
  export type PortfolioViewFilterCategoryField = 'netBurnOrIncome' | 'cashPosition' | 'income' | 'expenses' | 'runway';
@@ -22,7 +21,7 @@ export interface CockpitFilterCategory {
22
21
  matchingOperator: 'equal' | 'not-equal';
23
22
  values: FilterCategoryValueType[];
24
23
  valuesCombinationOperator: 'ANY' | 'ALL';
25
- field?: AiAccountantFilterCategoryField | ManagementViewFilterCategoryField | SubscriptionViewFilterCategoryField | PortfolioViewFilterCategoryField | HealthMonitorViewFilterCategoryField;
24
+ field?: ManagementViewFilterCategoryField | SubscriptionViewFilterCategoryField | PortfolioViewFilterCategoryField | HealthMonitorViewFilterCategoryField;
26
25
  }
27
26
  export interface CockpitFilters {
28
27
  categories?: CockpitFilterCategory[];
@@ -37,8 +37,8 @@ export declare const getLineItemsByTransactionsIdsFromResponse: (transactions: S
37
37
  export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLocalData: TransactionReviewLocalDataSelectorView[], selectedTab: TransactionsTab) => Record<ID, string[]>;
38
38
  export declare const mergeTabSpecificLineItems: (currentTabSpecificLineItems: TabSpecificLineItems, selectedTab: TransactionsTab, newLineItems: TabSpecificLineItems) => TabSpecificLineItems;
39
39
  export declare const getSnackbarMessageForTransactionReview: (updatedCount: number, failedCount: number, categorizedCount: number) => {
40
- messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update";
41
- messageText: "notification" | "failed" | "success";
40
+ messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "snooze_task" | "unsnooze_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update";
41
+ messageText: "notification" | "success" | "failed";
42
42
  type: "error" | "success" | "info";
43
43
  variables: {
44
44
  variableName: string;
@@ -17,7 +17,7 @@ export interface MissingReceiptsViewUIState {
17
17
  * Kept in sync with `ManualSearchInput` in web-components (fires search only when length ≥ this).
18
18
  */
19
19
  export declare const MIN_MANUAL_TRANSACTION_SEARCH_LENGTH = 2;
20
- export declare const toBatchStatusValue: (v: string) => "pending" | "completed" | "processing";
20
+ export declare const toBatchStatusValue: (v: string) => "pending" | "processing" | "completed";
21
21
  export type BatchStatusValue = ReturnType<typeof toBatchStatusValue>;
22
22
  /** Canonical batch file statuses (API ingress may use aliases; see `parseBatchFileStatus`). */
23
23
  export declare const BATCH_FILE_STATUSES: readonly ["exact_match", "possible_matches", "no_match", "failed"];
@@ -3,7 +3,7 @@ import { CompanyWithSchema } from '../../../../entity/company/companySelector';
3
3
  import { OnboardingCustomerInfo } from '../../../../entity/onboardingCustomer/onboardingCustomerState';
4
4
  import { Tenant } from '../../../../entity/tenant/tenantState';
5
5
  import { CompanyDetailsLocalData, PrimaryContactLocalData } from '../../../spendManagement/commonSetup/setupViewState';
6
- declare const toProductGroupType: (v: string) => "other" | "bookkeeping" | "banking" | "spend_management" | "cards";
6
+ declare const toProductGroupType: (v: string) => "cards" | "other" | "bookkeeping" | "banking" | "spend_management";
7
7
  export type ProductGroupType = ReturnType<typeof toProductGroupType>;
8
8
  export declare const toProductType: (v: string) => "zeni_treasury" | "other" | "bookkeeping" | "zeni_checking" | "zeni_bill_pay" | "zeni_reimbursements" | "zeni_cards" | "zeni_payroll" | "zeni_cfo" | "zeni_tax";
9
9
  export declare const toProductTypeStrict: (v: string) => "zeni_treasury" | "other" | "bookkeeping" | "zeni_checking" | "zeni_bill_pay" | "zeni_reimbursements" | "zeni_cards" | "zeni_payroll" | "zeni_cfo" | "zeni_tax" | undefined;
@@ -3,7 +3,7 @@ import { SortOrder } from '../../commonStateTypes/selectorTypes/sortOrderTypes';
3
3
  import { OnboardingInfo } from '../../entity/company/companyStateTypes';
4
4
  import { ZeniDate } from '../../zeniDayJS';
5
5
  import { AuditSummaryPayload, ReviewCompanyPayload } from './reviewCompanyPayload';
6
- export declare const toReviewColumnKeyType: (v: string) => "companyName" | "notes" | "uncategorized" | "auditScore" | "miscategorized" | "warnings" | "vendorReview" | "reviewVendor";
6
+ export declare const toReviewColumnKeyType: (v: string) => "uncategorized" | "companyName" | "auditScore" | "miscategorized" | "notes" | "warnings" | "vendorReview" | "reviewVendor";
7
7
  export type ReviewCompanyColumnKey = ReturnType<typeof toReviewColumnKeyType>;
8
8
  export type ReviewTransactionsType = 'income' | 'expense';
9
9
  export interface AuditSummary {
@@ -21,7 +21,7 @@ export declare const fetchBillList: import("@reduxjs/toolkit").ActionCreatorWith
21
21
  period: TimePeriod;
22
22
  tab: "paid" | "pending_approval" | "scheduled" | "draft";
23
23
  error: ZeniAPIStatus<Record<string, unknown>>;
24
- }, "billList/updateBillListFailure", never, never>, updateTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "pending_approval" | "scheduled" | "draft", "billList/updateTab">, updateSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "offline", "billList/updateSubTab">, updateSelectedBillId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "billList/updateSelectedBillId">, clearBillList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"billList/clearBillList">, updateBillDetailSaveBillCode: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<SaveBillStageCode, "billList/updateBillDetailSaveBillCode">, updateBillListUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
24
+ }, "billList/updateBillListFailure", never, never>, updateTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "pending_approval" | "scheduled" | "draft", "billList/updateTab">, updateSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "offline", "billList/updateSubTab">, updateSelectedBillId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "billList/updateSelectedBillId">, clearBillList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"billList/clearBillList">, updateBillDetailSaveBillCode: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<SaveBillStageCode, "billList/updateBillDetailSaveBillCode">, updateBillListUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
25
25
  period: TimePeriod;
26
26
  uiState: Partial<BillListUIState>;
27
27
  }, "billList/updateBillListUIState">, updateSearchResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "billList/updateSearchResult">, updateFilterResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -35,7 +35,7 @@ export type SaveBillStageCode = 'draft' | 'pending_approval' | undefined;
35
35
  export declare const ALL_BILL_TABS: readonly ["paid", "pending_approval", "scheduled", "draft"];
36
36
  declare const toBillTabType: (v: string) => "paid" | "pending_approval" | "scheduled" | "draft";
37
37
  export type BillTab = ReturnType<typeof toBillTabType>;
38
- declare const toBillsSubTabType: (v: string) => "failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "offline";
38
+ declare const toBillsSubTabType: (v: string) => "rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "offline";
39
39
  export type BillsSubTabType = ReturnType<typeof toBillsSubTabType>;
40
40
  declare const toBillPaySortKeyType: (v: string) => "amount" | "status" | "name" | "dueDate" | "paymentMethod" | "invoiceNumber" | "invoiceDate";
41
41
  export declare type BillPayViewSortKey = ReturnType<typeof toBillPaySortKeyType>;
@@ -42,7 +42,7 @@ interface TwoFAState {
42
42
  otpChallenge?: string;
43
43
  phone?: string;
44
44
  }
45
- export declare const toChargeCardTransactionSortKeyType: (v: string) => "amount" | "type" | "merchant" | "paymentDate" | "receipts";
45
+ export declare const toChargeCardTransactionSortKeyType: (v: string) => "amount" | "type" | "receipts" | "merchant" | "paymentDate";
46
46
  export declare type ChargeCardTransactionSortKey = ReturnType<typeof toChargeCardTransactionSortKeyType>;
47
47
  export interface ChargeCardDetailTransactionList extends FetchStateAndError {
48
48
  isViewReceiptClickedImmediatelyAfterUploadTransactionId: Record<ID, boolean>;
@@ -52,12 +52,12 @@ export declare const fetchChargeCardDetailPage: import("@reduxjs/toolkit").Actio
52
52
  chargeCardId: ID;
53
53
  fetchState: FetchState;
54
54
  error?: ZeniAPIStatus;
55
- }, "chargeCardDetail/updatePhysicalChargeCardAttemptSuccessOrFailure">, updatePhysicalChargeCardAttempt: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[chargeCardId: string, statusCode: "failed" | "success"], {
55
+ }, "chargeCardDetail/updatePhysicalChargeCardAttemptSuccessOrFailure">, updatePhysicalChargeCardAttempt: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[chargeCardId: string, statusCode: "success" | "failed"], {
56
56
  chargeCardId: string;
57
- statusCode: "failed" | "success";
58
- }, "chargeCardDetail/updatePhysicalChargeCardAttempt", never, never>, updateDebitCardPinAttempt: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[chargeCardId: string, statusCode: "failed" | "success"], {
57
+ statusCode: "success" | "failed";
58
+ }, "chargeCardDetail/updatePhysicalChargeCardAttempt", never, never>, updateDebitCardPinAttempt: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[chargeCardId: string, statusCode: "success" | "failed"], {
59
59
  chargeCardId: string;
60
- statusCode: "failed" | "success";
60
+ statusCode: "success" | "failed";
61
61
  }, "chargeCardDetail/updateDebitCardPinAttempt", never, never>, updateDebitCardPinAttemptSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
62
62
  chargeCardId: ID;
63
63
  fetchState: FetchState;
@@ -27,7 +27,7 @@ export declare const fetchRemiList: import("@reduxjs/toolkit").ActionCreatorWith
27
27
  }, "remiList/updateRemiListFailure", never, never>, updateRemiListUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
28
28
  period: TimePeriod;
29
29
  uiState: Partial<RemiListUIState>;
30
- }, "remiList/updateRemiListUIState">, updateTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "pending_approval" | "scheduled" | "draft", "remiList/updateTab">, updateSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval", "remiList/updateSubTab">, updateSelectedRemiId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "remiList/updateSelectedRemiId">, clearRemiList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"remiList/clearRemiList">, updateRemiDetailSaveRemiCode: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<SaveRemiStageCode, "remiList/updateRemiDetailSaveRemiCode">, updateSearchResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "remiList/updateSearchResult">, updateFilterResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
30
+ }, "remiList/updateRemiListUIState">, updateTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "pending_approval" | "scheduled" | "draft", "remiList/updateTab">, updateSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval", "remiList/updateSubTab">, updateSelectedRemiId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "remiList/updateSelectedRemiId">, clearRemiList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"remiList/clearRemiList">, updateRemiDetailSaveRemiCode: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<SaveRemiStageCode, "remiList/updateRemiDetailSaveRemiCode">, updateSearchResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "remiList/updateSearchResult">, updateFilterResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
31
31
  filters: ReimbursementFilters;
32
32
  }, "remiList/updateFilterResult">, updateRemiListDownloadUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
33
33
  uiState: Partial<RemiListDownloadUIState>;
@@ -33,10 +33,10 @@ export declare const ALL_REMI_TABS: readonly ["paid", "pending_approval", "sched
33
33
  export declare const toRemiTabType: (v: string) => "paid" | "pending_approval" | "scheduled" | "draft";
34
34
  export declare const toRemiTabTypeStrict: (v: string) => "paid" | "pending_approval" | "scheduled" | "draft" | undefined;
35
35
  export type RemiTabType = ReturnType<typeof toRemiTabType>;
36
- export declare const toRemiSubTabType: (v: string) => "failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval";
37
- export declare const toRemiSubTabTypeStrict: (v: string) => "failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval" | undefined;
36
+ export declare const toRemiSubTabType: (v: string) => "rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval";
37
+ export declare const toRemiSubTabTypeStrict: (v: string) => "rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval" | undefined;
38
38
  export type RemiSubTabType = ReturnType<typeof toRemiSubTabType>;
39
- export declare const toRemiSubTabUnderScoreType: (v: string) => "failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "my_drafts" | "awaiting_all_approval";
39
+ export declare const toRemiSubTabUnderScoreType: (v: string) => "rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "my_drafts" | "awaiting_all_approval";
40
40
  export type RemiSubTabUnderScoreType = ReturnType<typeof toRemiSubTabUnderScoreType>;
41
41
  declare const toReimbursementSortKeyType: (v: string) => "amount" | "status" | "type" | "createdBy" | "submittedOn" | "reportName";
42
42
  export type ReimbursementViewSortKey = ReturnType<typeof toReimbursementSortKeyType>;
@@ -1,4 +1,4 @@
1
- export declare const toSubscriptionSortKeyType: (v: string) => "status" | "companyName" | "controller" | "plans" | "planLowerLimit" | "planHigherLimit" | "avg2MonthExpenses" | "addons" | "upgradeStatus" | "monthlyRecurringRevenue" | "notes";
1
+ export declare const toSubscriptionSortKeyType: (v: string) => "status" | "controller" | "avg2MonthExpenses" | "companyName" | "monthlyRecurringRevenue" | "notes" | "plans" | "planLowerLimit" | "planHigherLimit" | "addons" | "upgradeStatus";
2
2
  export type SubscriptionViewSortKey = ReturnType<typeof toSubscriptionSortKeyType>;
3
3
  export declare const SUBSCRIPTION_STATUS_CODES: string[];
4
4
  declare const toSubscriptionStatusCodeType: (v: string) => string;
@@ -3,6 +3,7 @@ import { openSnackbar } from '../../../../entity/snackbar/snackbarReducer';
3
3
  import { updateTasks } from '../../../../entity/task/taskReducer';
4
4
  import { RootState } from '../../../../reducer';
5
5
  import { ZeniAPI } from '../../../../zeniAPI';
6
+ import { fetchTaskList, removeTaskFromList } from '../../taskListView/taskListReducer';
6
7
  import { archiveTask, archiveTaskSuccessOrFailure } from '../taskDetailReducer';
7
- export type ActionType = ReturnType<typeof archiveTask> | ReturnType<typeof updateTasks> | ReturnType<typeof openSnackbar> | ReturnType<typeof archiveTaskSuccessOrFailure>;
8
+ export type ActionType = ReturnType<typeof archiveTask> | ReturnType<typeof updateTasks> | ReturnType<typeof openSnackbar> | ReturnType<typeof fetchTaskList> | ReturnType<typeof archiveTaskSuccessOrFailure> | ReturnType<typeof removeTaskFromList>;
8
9
  export declare const archiveTaskEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<ActionType>;
@@ -7,6 +7,7 @@ const snackbarReducer_1 = require("../../../../entity/snackbar/snackbarReducer")
7
7
  const taskReducer_1 = require("../../../../entity/task/taskReducer");
8
8
  const taskSelector_1 = require("../../../../entity/task/taskSelector");
9
9
  const responsePayload_1 = require("../../../../responsePayload");
10
+ const taskListReducer_1 = require("../../taskListView/taskListReducer");
10
11
  const taskDetailReducer_1 = require("../taskDetailReducer");
11
12
  // Epic function to handle archiving of tasks
12
13
  const archiveTaskEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskDetailReducer_1.archiveTask.match), (0, operators_1.mergeMap)((action) => handleArchiveTask(action.payload.taskId, state$, zeniAPI)));
@@ -29,6 +30,8 @@ const handleApiResponse = (response, taskId) => {
29
30
  response.data.tasks.length > 0) {
30
31
  const fetchActions = [
31
32
  (0, taskReducer_1.updateTasks)(response.data.tasks),
33
+ (0, taskListReducer_1.removeTaskFromList)(taskId),
34
+ (0, taskListReducer_1.fetchTaskList)(),
32
35
  (0, taskDetailReducer_1.archiveTaskSuccessOrFailure)({
33
36
  fetchState: 'Completed',
34
37
  taskId,
@@ -2,6 +2,7 @@ import { ActionsObservable, StateObservable } from 'redux-observable';
2
2
  import { openSnackbar } from '../../../../entity/snackbar/snackbarReducer';
3
3
  import { RootState } from '../../../../reducer';
4
4
  import { ZeniAPI } from '../../../../zeniAPI';
5
+ import { fetchTaskList, removeTaskFromList } from '../../taskListView/taskListReducer';
5
6
  import { deleteTask, deleteTaskSuccessOrFailure } from '../taskDetailReducer';
6
- export type ActionType = ReturnType<typeof deleteTask> | ReturnType<typeof openSnackbar> | ReturnType<typeof deleteTaskSuccessOrFailure>;
7
+ export type ActionType = ReturnType<typeof deleteTask> | ReturnType<typeof openSnackbar> | ReturnType<typeof fetchTaskList> | ReturnType<typeof deleteTaskSuccessOrFailure> | ReturnType<typeof removeTaskFromList>;
7
8
  export declare const deleteTaskEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<ActionType>;
@@ -5,6 +5,7 @@ const rxjs_1 = require("rxjs");
5
5
  const operators_1 = require("rxjs/operators");
6
6
  const snackbarReducer_1 = require("../../../../entity/snackbar/snackbarReducer");
7
7
  const responsePayload_1 = require("../../../../responsePayload");
8
+ const taskListReducer_1 = require("../../taskListView/taskListReducer");
8
9
  const taskDetailReducer_1 = require("../taskDetailReducer");
9
10
  const deleteTaskEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskDetailReducer_1.deleteTask.match), (0, operators_1.mergeMap)((action) => {
10
11
  const { taskId } = action.payload;
@@ -13,6 +14,10 @@ const deleteTaskEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operato
13
14
  .pipe((0, operators_1.mergeMap)((response) => {
14
15
  if ((0, responsePayload_1.isSuccessStatus)(response)) {
15
16
  const actions = [];
17
+ if (taskId != null) {
18
+ actions.push((0, taskListReducer_1.removeTaskFromList)(taskId));
19
+ }
20
+ actions.push((0, taskListReducer_1.fetchTaskList)());
16
21
  actions.push((0, taskDetailReducer_1.deleteTaskSuccessOrFailure)({ fetchState: 'Completed', taskId }));
17
22
  return (0, rxjs_1.from)(actions);
18
23
  }
@@ -0,0 +1,9 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { openSnackbar } from '../../../../entity/snackbar/snackbarReducer';
3
+ import { updateTasks } from '../../../../entity/task/taskReducer';
4
+ import { RootState } from '../../../../reducer';
5
+ import { ZeniAPI } from '../../../../zeniAPI';
6
+ import { fetchTaskList, removeTaskFromList } from '../../taskListView/taskListReducer';
7
+ import { snoozeTask, snoozeTaskSuccessOrFailure } from '../taskDetailReducer';
8
+ export type ActionType = ReturnType<typeof snoozeTask> | ReturnType<typeof updateTasks> | ReturnType<typeof openSnackbar> | ReturnType<typeof fetchTaskList> | ReturnType<typeof snoozeTaskSuccessOrFailure> | ReturnType<typeof removeTaskFromList>;
9
+ export declare const snoozeTaskEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<ActionType>;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.snoozeTaskEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const snackbarReducer_1 = require("../../../../entity/snackbar/snackbarReducer");
7
+ const taskReducer_1 = require("../../../../entity/task/taskReducer");
8
+ const responsePayload_1 = require("../../../../responsePayload");
9
+ const zeniDayJS_1 = require("../../../../zeniDayJS");
10
+ const taskListReducer_1 = require("../../taskListView/taskListReducer");
11
+ const taskDetailReducer_1 = require("../taskDetailReducer");
12
+ const snoozeTaskEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskDetailReducer_1.snoozeTask.match), (0, operators_1.mergeMap)((action) => handleSnoozeTask(action.payload.taskId, action.payload.snoozedUntil, zeniAPI)));
13
+ exports.snoozeTaskEpic = snoozeTaskEpic;
14
+ const formatSnoozedUntilForDisplay = (snoozedUntil) => (0, zeniDayJS_1.date)(snoozedUntil).format('MMM D, h:mm A');
15
+ const handleSnoozeTask = (taskId, snoozedUntil, zeniAPI) => {
16
+ const snoozeTaskApi$ = zeniAPI.postAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks/${taskId}/snooze`, { snoozed_until: snoozedUntil });
17
+ return snoozeTaskApi$.pipe((0, operators_1.mergeMap)((response) => handleApiResponse(response, taskId, snoozedUntil)), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
18
+ fetchState: 'Error',
19
+ taskId,
20
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Snooze Task REST API call errored out: ' + JSON.stringify(error)),
21
+ }))));
22
+ };
23
+ const handleApiResponse = (response, taskId, snoozedUntil) => {
24
+ if ((0, responsePayload_1.isSuccessResponse)(response) &&
25
+ response.data != null &&
26
+ response.data.tasks.length > 0) {
27
+ const fetchActions = [
28
+ (0, taskReducer_1.updateTasks)(response.data.tasks),
29
+ (0, taskListReducer_1.removeTaskFromList)(taskId),
30
+ (0, taskListReducer_1.fetchTaskList)(),
31
+ (0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
32
+ fetchState: 'Completed',
33
+ taskId,
34
+ }),
35
+ (0, snackbarReducer_1.openSnackbar)({
36
+ messageSection: 'snooze_task',
37
+ messageText: 'success',
38
+ type: 'success',
39
+ variables: [
40
+ {
41
+ variableName: '_snoozed_until_',
42
+ variableValue: formatSnoozedUntilForDisplay(snoozedUntil),
43
+ },
44
+ ],
45
+ }),
46
+ ];
47
+ return (0, rxjs_1.from)(fetchActions);
48
+ }
49
+ else {
50
+ return (0, rxjs_1.from)([
51
+ (0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
52
+ fetchState: 'Error',
53
+ taskId,
54
+ error: response.status,
55
+ }),
56
+ (0, snackbarReducer_1.openSnackbar)({
57
+ messageSection: 'snooze_task',
58
+ messageText: 'failed',
59
+ type: 'error',
60
+ variables: [
61
+ {
62
+ variableName: '_api-error_',
63
+ variableValue: response.status.message,
64
+ },
65
+ ],
66
+ }),
67
+ ]);
68
+ }
69
+ };
@@ -0,0 +1,9 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { openSnackbar } from '../../../../entity/snackbar/snackbarReducer';
3
+ import { updateTasks } from '../../../../entity/task/taskReducer';
4
+ import { RootState } from '../../../../reducer';
5
+ import { ZeniAPI } from '../../../../zeniAPI';
6
+ import { fetchTaskList } from '../../taskListView/taskListReducer';
7
+ import { snoozeTaskSuccessOrFailure, unsnoozeTask } from '../taskDetailReducer';
8
+ export type ActionType = ReturnType<typeof unsnoozeTask> | ReturnType<typeof updateTasks> | ReturnType<typeof openSnackbar> | ReturnType<typeof fetchTaskList> | ReturnType<typeof snoozeTaskSuccessOrFailure>;
9
+ export declare const unsnoozeTaskEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<ActionType>;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unsnoozeTaskEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const snackbarReducer_1 = require("../../../../entity/snackbar/snackbarReducer");
7
+ const taskReducer_1 = require("../../../../entity/task/taskReducer");
8
+ const responsePayload_1 = require("../../../../responsePayload");
9
+ const taskListReducer_1 = require("../../taskListView/taskListReducer");
10
+ const taskDetailReducer_1 = require("../taskDetailReducer");
11
+ const unsnoozeTaskEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskDetailReducer_1.unsnoozeTask.match), (0, operators_1.mergeMap)((action) => handleUnsnoozeTask(action.payload.taskId, zeniAPI)));
12
+ exports.unsnoozeTaskEpic = unsnoozeTaskEpic;
13
+ const handleUnsnoozeTask = (taskId, zeniAPI) => {
14
+ const unsnoozeTaskApi$ = zeniAPI.deleteAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks/${taskId}/snooze`);
15
+ return unsnoozeTaskApi$.pipe((0, operators_1.mergeMap)((response) => handleApiResponse(response, taskId)), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
16
+ fetchState: 'Error',
17
+ taskId,
18
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Unsnooze Task REST API call errored out: ' + JSON.stringify(error)),
19
+ }))));
20
+ };
21
+ const handleApiResponse = (response, taskId) => {
22
+ if ((0, responsePayload_1.isSuccessResponse)(response) &&
23
+ response.data != null &&
24
+ response.data.tasks.length > 0) {
25
+ const fetchActions = [
26
+ (0, taskReducer_1.updateTasks)(response.data.tasks),
27
+ (0, taskListReducer_1.fetchTaskList)(),
28
+ (0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
29
+ fetchState: 'Completed',
30
+ taskId,
31
+ }),
32
+ (0, snackbarReducer_1.openSnackbar)({
33
+ messageSection: 'unsnooze_task',
34
+ messageText: 'success',
35
+ type: 'success',
36
+ }),
37
+ ];
38
+ return (0, rxjs_1.from)(fetchActions);
39
+ }
40
+ else {
41
+ return (0, rxjs_1.from)([
42
+ (0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
43
+ fetchState: 'Error',
44
+ taskId,
45
+ error: response.status,
46
+ }),
47
+ (0, snackbarReducer_1.openSnackbar)({
48
+ messageSection: 'unsnooze_task',
49
+ messageText: 'failed',
50
+ type: 'error',
51
+ variables: [
52
+ {
53
+ variableName: '_api-error_',
54
+ variableValue: response.status.message,
55
+ },
56
+ ],
57
+ }),
58
+ ]);
59
+ }
60
+ };
@@ -13,6 +13,7 @@ export interface EditTaskDetail {
13
13
  deleteTaskStatus: FetchStateAndError;
14
14
  fetchTaskStatus: FetchStateAndError;
15
15
  saveStatus: FetchStateAndError;
16
+ snoozeStatus: FetchStateAndError;
16
17
  taskDetailLocalData: EditTaskLocalData;
17
18
  taskId?: ID;
18
19
  }
@@ -34,5 +34,9 @@ exports.initialTaskDetail = {
34
34
  fetchState: 'Not-Started',
35
35
  error: undefined,
36
36
  },
37
+ snoozeStatus: {
38
+ fetchState: 'Not-Started',
39
+ error: undefined,
40
+ },
37
41
  taskDetailLocalData: exports.initialTaskDetailLocalData,
38
42
  };
@@ -40,7 +40,16 @@ export declare const fetchTaskDetailPage: import("@reduxjs/toolkit").ActionCreat
40
40
  fetchState: FetchState;
41
41
  error?: ZeniAPIStatus;
42
42
  taskId?: ID;
43
- }, "taskDetailView/deleteTaskSuccessOrFailure">, fetchTaskHistory: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[taskId: string, cacheOverride?: any], {
43
+ }, "taskDetailView/deleteTaskSuccessOrFailure">, snoozeTask: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[taskId: string, snoozedUntil: string], {
44
+ taskId: string;
45
+ snoozedUntil: string;
46
+ }, "taskDetailView/snoozeTask", never, never>, snoozeTaskSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
47
+ fetchState: FetchState;
48
+ taskId: ID;
49
+ error?: ZeniAPIStatus;
50
+ }, "taskDetailView/snoozeTaskSuccessOrFailure">, unsnoozeTask: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[taskId: string], {
51
+ taskId: string;
52
+ }, "taskDetailView/unsnoozeTask", never, never>, fetchTaskHistory: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[taskId: string, cacheOverride?: any], {
44
53
  taskId: string;
45
54
  cacheOverride: any;
46
55
  }, "taskDetailView/fetchTaskHistory", never, never>, updateTaskHistory: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  var _a;
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.updateDeletedTagToLocalStore = exports.updateCreatedTagToLocalStore = exports.clearTaskDetail = exports.updateTaskHistoryFetchStatus = exports.updateTaskHistory = exports.fetchTaskHistory = exports.deleteTaskSuccessOrFailure = exports.removeTaskDetail = exports.deleteTask = exports.saveTaskSuccessOrFailure = exports.archiveTaskSuccessOrFailure = exports.archiveTask = exports.saveTaskDetail = exports.discardTaskUpdatesInLocalStore = exports.saveTaskUpdatesToLocalStore = exports.updateEditTaskFetchStatus = exports.initializeTaskToLocalStore = exports.fetchTaskDetail = exports.fetchTaskDetailPage = exports.initialState = void 0;
7
+ exports.updateDeletedTagToLocalStore = exports.updateCreatedTagToLocalStore = exports.clearTaskDetail = exports.updateTaskHistoryFetchStatus = exports.updateTaskHistory = exports.fetchTaskHistory = exports.unsnoozeTask = exports.snoozeTaskSuccessOrFailure = exports.snoozeTask = exports.deleteTaskSuccessOrFailure = exports.removeTaskDetail = exports.deleteTask = exports.saveTaskSuccessOrFailure = exports.archiveTaskSuccessOrFailure = exports.archiveTask = exports.saveTaskDetail = exports.discardTaskUpdatesInLocalStore = exports.saveTaskUpdatesToLocalStore = exports.updateEditTaskFetchStatus = exports.initializeTaskToLocalStore = exports.fetchTaskDetail = exports.fetchTaskDetailPage = exports.initialState = void 0;
8
8
  const toolkit_1 = require("@reduxjs/toolkit");
9
9
  const get_1 = __importDefault(require("lodash/get"));
10
10
  const commonHistory_1 = require("../../spendManagement/commonHistoryView/commonHistory");
@@ -236,6 +236,54 @@ const taskDetailView = (0, toolkit_1.createSlice)({
236
236
  draft.newTaskState.deleteTaskStatus.error = action.payload.error;
237
237
  }
238
238
  },
239
+ snoozeTask: {
240
+ reducer(draft, action) {
241
+ const { taskId } = action.payload;
242
+ draft.editTaskStateById[taskId] = {
243
+ ...(draft.editTaskStateById[taskId] != null
244
+ ? draft.editTaskStateById[taskId]
245
+ : taskDetail_1.initialTaskDetail),
246
+ snoozeStatus: {
247
+ fetchState: 'In-Progress',
248
+ error: undefined,
249
+ },
250
+ };
251
+ },
252
+ prepare(taskId, snoozedUntil) {
253
+ return {
254
+ payload: {
255
+ taskId,
256
+ snoozedUntil,
257
+ },
258
+ };
259
+ },
260
+ },
261
+ snoozeTaskSuccessOrFailure(draft, action) {
262
+ const { taskId, fetchState, error } = action.payload;
263
+ draft.editTaskStateById[taskId].snoozeStatus.fetchState = fetchState;
264
+ draft.editTaskStateById[taskId].snoozeStatus.error = error;
265
+ },
266
+ unsnoozeTask: {
267
+ reducer(draft, action) {
268
+ const { taskId } = action.payload;
269
+ draft.editTaskStateById[taskId] = {
270
+ ...(draft.editTaskStateById[taskId] != null
271
+ ? draft.editTaskStateById[taskId]
272
+ : taskDetail_1.initialTaskDetail),
273
+ snoozeStatus: {
274
+ fetchState: 'In-Progress',
275
+ error: undefined,
276
+ },
277
+ };
278
+ },
279
+ prepare(taskId) {
280
+ return {
281
+ payload: {
282
+ taskId,
283
+ },
284
+ };
285
+ },
286
+ },
239
287
  fetchTaskHistory: {
240
288
  reducer(draft, action) {
241
289
  const { taskId, cacheOverride } = action.payload;
@@ -277,5 +325,5 @@ const taskDetailView = (0, toolkit_1.createSlice)({
277
325
  },
278
326
  },
279
327
  });
280
- _a = taskDetailView.actions, exports.fetchTaskDetailPage = _a.fetchTaskDetailPage, exports.fetchTaskDetail = _a.fetchTaskDetail, exports.initializeTaskToLocalStore = _a.initializeTaskToLocalStore, exports.updateEditTaskFetchStatus = _a.updateEditTaskFetchStatus, exports.saveTaskUpdatesToLocalStore = _a.saveTaskUpdatesToLocalStore, exports.discardTaskUpdatesInLocalStore = _a.discardTaskUpdatesInLocalStore, exports.saveTaskDetail = _a.saveTaskDetail, exports.archiveTask = _a.archiveTask, exports.archiveTaskSuccessOrFailure = _a.archiveTaskSuccessOrFailure, exports.saveTaskSuccessOrFailure = _a.saveTaskSuccessOrFailure, exports.deleteTask = _a.deleteTask, exports.removeTaskDetail = _a.removeTaskDetail, exports.deleteTaskSuccessOrFailure = _a.deleteTaskSuccessOrFailure, exports.fetchTaskHistory = _a.fetchTaskHistory, exports.updateTaskHistory = _a.updateTaskHistory, exports.updateTaskHistoryFetchStatus = _a.updateTaskHistoryFetchStatus, exports.clearTaskDetail = _a.clearTaskDetail, exports.updateCreatedTagToLocalStore = _a.updateCreatedTagToLocalStore, exports.updateDeletedTagToLocalStore = _a.updateDeletedTagToLocalStore;
328
+ _a = taskDetailView.actions, exports.fetchTaskDetailPage = _a.fetchTaskDetailPage, exports.fetchTaskDetail = _a.fetchTaskDetail, exports.initializeTaskToLocalStore = _a.initializeTaskToLocalStore, exports.updateEditTaskFetchStatus = _a.updateEditTaskFetchStatus, exports.saveTaskUpdatesToLocalStore = _a.saveTaskUpdatesToLocalStore, exports.discardTaskUpdatesInLocalStore = _a.discardTaskUpdatesInLocalStore, exports.saveTaskDetail = _a.saveTaskDetail, exports.archiveTask = _a.archiveTask, exports.archiveTaskSuccessOrFailure = _a.archiveTaskSuccessOrFailure, exports.saveTaskSuccessOrFailure = _a.saveTaskSuccessOrFailure, exports.deleteTask = _a.deleteTask, exports.removeTaskDetail = _a.removeTaskDetail, exports.deleteTaskSuccessOrFailure = _a.deleteTaskSuccessOrFailure, exports.snoozeTask = _a.snoozeTask, exports.snoozeTaskSuccessOrFailure = _a.snoozeTaskSuccessOrFailure, exports.unsnoozeTask = _a.unsnoozeTask, exports.fetchTaskHistory = _a.fetchTaskHistory, exports.updateTaskHistory = _a.updateTaskHistory, exports.updateTaskHistoryFetchStatus = _a.updateTaskHistoryFetchStatus, exports.clearTaskDetail = _a.clearTaskDetail, exports.updateCreatedTagToLocalStore = _a.updateCreatedTagToLocalStore, exports.updateDeletedTagToLocalStore = _a.updateDeletedTagToLocalStore;
281
329
  exports.default = taskDetailView.reducer;
@@ -3,6 +3,7 @@ import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndRep
3
3
  import { Class } from '../../../entity/class/classState';
4
4
  import { File } from '../../../entity/file/fileState';
5
5
  import { TaskPriority, TaskStatus } from '../../../entity/task/taskState';
6
+ import { ZeniDate } from '../../../zeniDayJS';
6
7
  import { RootState } from '../../../reducer';
7
8
  import { UserAndRole } from '../../companyView/types/userAndRole';
8
9
  import { HistoricEvent } from '../../spendManagement/commonHistoryView/commonHistory';
@@ -18,6 +19,9 @@ export interface TaskDetailSelectorView extends SelectorView {
18
19
  updateFileStatusById: Record<ID, FetchStateAndError | undefined>;
19
20
  userList: UserListSelectorView;
20
21
  createdByUser?: UserAndRole;
22
+ isArchived?: boolean;
23
+ isDeleted?: boolean;
24
+ snoozedUntil?: ZeniDate | null;
21
25
  }
22
26
  export declare const getTaskDetail: (state: RootState, taskId?: ID) => TaskDetailSelectorView;
23
27
  export declare const allTaskStatus: TaskStatus[];
@@ -27,11 +27,17 @@ const getTaskDetail = (state, taskId) => {
27
27
  };
28
28
  let taskHistory = [];
29
29
  let createdByUser = undefined;
30
+ let isArchived = undefined;
31
+ let isDeleted = undefined;
32
+ let snoozedUntil = undefined;
30
33
  if (taskId != null && sourceTaskDetail != null) {
31
34
  const taskEntity = (0, taskSelector_1.getTaskById)(taskState, taskId);
32
35
  const fileIdsInEntity = taskEntity?.fileIds ?? [];
33
36
  if (taskEntity != null) {
34
37
  createdByUser = (0, userAndRole_1.getUserAndUserRole)(userState, userRoleState, addressState, taskEntity.createdBy);
38
+ isArchived = taskEntity.isArchived;
39
+ isDeleted = taskEntity.isDeleted;
40
+ snoozedUntil = taskEntity.snoozedUntil;
35
41
  }
36
42
  if (fileIdsInEntity.length > 0) {
37
43
  fetchStatus = (0, reduceFetchState_1.reduceFetchState)([
@@ -79,7 +85,10 @@ const getTaskDetail = (state, taskId) => {
79
85
  error: fetchStatus.error,
80
86
  version: 0,
81
87
  createdByUser,
88
+ isArchived,
89
+ isDeleted,
82
90
  showTaskDetailFormFooter,
91
+ snoozedUntil,
83
92
  };
84
93
  };
85
94
  exports.getTaskDetail = getTaskDetail;