@zeniai/client-epic-state 4.20.2-beta30ND → 4.20.2-beta31RR

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 (65) hide show
  1. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  2. package/lib/entity/snackbar/snackbarTypes.js +2 -0
  3. package/lib/entity/task/taskPayload.d.ts +3 -0
  4. package/lib/entity/task/taskPayload.js +5 -0
  5. package/lib/entity/task/taskState.d.ts +3 -0
  6. package/lib/epic.d.ts +3 -1
  7. package/lib/epic.js +3 -1
  8. package/lib/esm/entity/snackbar/snackbarTypes.js +2 -0
  9. package/lib/esm/entity/task/taskPayload.js +5 -0
  10. package/lib/esm/epic.js +3 -1
  11. package/lib/esm/index.js +4 -4
  12. package/lib/esm/view/companyView/types/cockpitTypes.js +1 -0
  13. package/lib/esm/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.js +1 -15
  14. package/lib/esm/view/profitAndLossClassesView/profitAndLossHorizontalEnrichment.js +14 -17
  15. package/lib/esm/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +2 -0
  16. package/lib/esm/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +4 -0
  17. package/lib/esm/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +1 -0
  18. package/lib/esm/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -0
  19. package/lib/esm/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +64 -0
  20. package/lib/esm/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +54 -0
  21. package/lib/esm/view/taskManager/taskDetailView/taskDetail.js +4 -0
  22. package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +49 -1
  23. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +3 -0
  24. package/lib/esm/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +49 -2
  25. package/lib/esm/view/taskManager/taskListView/epics/fetchTaskListEpic.js +13 -3
  26. package/lib/esm/view/taskManager/taskListView/taskList.js +8 -0
  27. package/lib/esm/view/taskManager/taskListView/taskListReducer.js +107 -11
  28. package/lib/esm/view/taskManager/taskListView/taskListSelector.js +56 -17
  29. package/lib/index.d.ts +4 -4
  30. package/lib/index.js +8 -4
  31. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  32. package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.d.ts +2 -2
  33. package/lib/view/companyView/types/cockpitTypes.d.ts +1 -1
  34. package/lib/view/companyView/types/cockpitTypes.js +1 -0
  35. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  36. package/lib/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.d.ts +0 -2
  37. package/lib/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.js +2 -16
  38. package/lib/view/profitAndLossClassesView/profitAndLossHorizontalEnrichment.js +14 -17
  39. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.d.ts +2 -1
  40. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +2 -0
  41. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.d.ts +2 -1
  42. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +4 -0
  43. package/lib/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +1 -0
  44. package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -0
  45. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.d.ts +9 -0
  46. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +68 -0
  47. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.d.ts +8 -0
  48. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +58 -0
  49. package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +2 -0
  50. package/lib/view/taskManager/taskDetailView/taskDetail.js +4 -0
  51. package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +10 -1
  52. package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +50 -2
  53. package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +2 -0
  54. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +3 -0
  55. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.d.ts +6 -0
  56. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +49 -2
  57. package/lib/view/taskManager/taskListView/epics/fetchTaskListEpic.js +13 -3
  58. package/lib/view/taskManager/taskListView/taskList.d.ts +15 -1
  59. package/lib/view/taskManager/taskListView/taskList.js +10 -1
  60. package/lib/view/taskManager/taskListView/taskListPayload.d.ts +3 -0
  61. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +7 -4
  62. package/lib/view/taskManager/taskListView/taskListReducer.js +108 -12
  63. package/lib/view/taskManager/taskListView/taskListSelector.d.ts +8 -3
  64. package/lib/view/taskManager/taskListView/taskListSelector.js +56 -17
  65. package/package.json +1 -1
@@ -4,10 +4,10 @@ import { CompanyTaskManagerViewPayload } from './companyTaskManagerViewPayload';
4
4
  import { CompanyTaskManagerViewState, CompanyTaskManagerViewUIState } from './companyTaskManagerViewState';
5
5
  export declare const initialUIState: CompanyTaskManagerViewUIState;
6
6
  export declare const initialState: CompanyTaskManagerViewState;
7
- export declare const fetchCompanyTaskManagerView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[pageToken: PageToken, sortKey: "status" | "name" | "tags" | "createdBy" | "dueDate" | "priority" | "assignee" | "taskName", sortOrder: "ascending" | "descending", keepExistingListItems?: any, searchString?: string | undefined], {
7
+ export declare const fetchCompanyTaskManagerView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[pageToken: PageToken, sortKey: "status" | "name" | "tags" | "createdBy" | "dueDate" | "priority" | "assignee" | "visibility" | "taskName", sortOrder: "ascending" | "descending", keepExistingListItems?: any, searchString?: string | undefined], {
8
8
  pageToken: PageToken;
9
9
  searchString: string | undefined;
10
- sortKey: "status" | "name" | "tags" | "createdBy" | "dueDate" | "priority" | "assignee" | "taskName";
10
+ sortKey: "status" | "name" | "tags" | "createdBy" | "dueDate" | "priority" | "assignee" | "visibility" | "taskName";
11
11
  sortOrder: "ascending" | "descending";
12
12
  keepExistingListItems: any;
13
13
  }, "companyTaskManagerView/fetchCompanyTaskManagerView", never, never>, updateCompanyTaskManagerViewOnSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -7,7 +7,7 @@ export declare const toPortfolioSortKeyType: (v: string) => "expenses" | "runway
7
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
8
  export declare const toOnboardingSortKeyType: (v: string) => "companyName" | "businessVerified" | "identityVerified" | "bankAccountLinked" | "customerCreated" | "groupCreated" | "qboLinked" | "notes" | "enroller" | "invite" | "latestCreated";
9
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
- export declare const toTaskManagerSortKeyType: (v: string) => "status" | "name" | "tags" | "createdBy" | "dueDate" | "priority" | "assignee" | "taskName";
10
+ export declare const toTaskManagerSortKeyType: (v: string) => "status" | "name" | "tags" | "createdBy" | "dueDate" | "priority" | "assignee" | "visibility" | "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>;
@@ -71,6 +71,7 @@ const ALL_TASK_MANAGER_SORT_KEYS = [
71
71
  'dueDate',
72
72
  'assignee',
73
73
  'tags',
74
+ 'visibility',
74
75
  'createdBy',
75
76
  ];
76
77
  const toPortfolioSortKeyType = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_PORTFOLIO_SORT_KEYS);
@@ -37,7 +37,7 @@ export declare const getLineItemsByTransactionsIdsFromResponse: (transactions: S
37
37
  export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLocalData: TransactionReviewLocalDataSelectorView[], selectedTab: TransactionsTab) => Record<ID, string[]>;
38
38
  export declare const mergeTabSpecificLineItems: (currentTabSpecificLineItems: TabSpecificLineItems, selectedTab: TransactionsTab, newLineItems: TabSpecificLineItems) => TabSpecificLineItems;
39
39
  export declare const getSnackbarMessageForTransactionReview: (updatedCount: number, failedCount: number, categorizedCount: number) => {
40
- messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "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" | "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";
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" | "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" | "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";
41
41
  messageText: "notification" | "success" | "failed";
42
42
  type: "error" | "success" | "info";
43
43
  variables: {
@@ -6,8 +6,6 @@ import { ZeniDate } from '../../zeniDayJS';
6
6
  import { ProfitAndLossByClassHorizontalReport } from './profitAndLossClassesByClassHorizontalSelectorTypes';
7
7
  import { PandLReportViewCalculatedSectionID, PandLReportViewSectionID } from './profitAndLossClassesViewSelectorTypes';
8
8
  import { ProfitAndLossClassesViewState } from './profitAndLossClassesViewState';
9
- /** Standard class ID returned by the accounting platform for transactions without an assigned class. */
10
- export declare const NOT_SPECIFIED_CLASS_ID = "not_specified";
11
9
  export declare const profitAndLossHorizontalIdsInOrder: (PandLReportViewSectionID | PandLReportViewCalculatedSectionID)[];
12
10
  export declare const getProfitAndLossClassesHorizontalView: (filter: COABalancesFilterClassesView, accountState: AccountState, classState: ClassState, sectionsState: SectionClassesViewStateV2, profitAndLossClassesViewState: ProfitAndLossClassesViewState, selectedPeriod: {
13
11
  endDate: ZeniDate;
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getProfitAndLossClassesHorizontalView = exports.profitAndLossHorizontalIdsInOrder = exports.NOT_SPECIFIED_CLASS_ID = void 0;
3
+ exports.getProfitAndLossClassesHorizontalView = exports.profitAndLossHorizontalIdsInOrder = void 0;
4
4
  const amount_1 = require("../../commonStateTypes/amount");
5
5
  const getSummationBalance_1 = require("../../commonStateTypes/coaBalance/additionalBalances/getSummationBalance");
6
6
  const currencyHelper_1 = require("../../commonStateTypes/currencyHelper");
7
7
  const reduceFetchState_1 = require("../../commonStateTypes/reduceFetchState");
8
8
  const sectionClassesViewSelector_1 = require("../../entity/sectionClassesViewV2/sectionClassesViewSelector");
9
9
  const profitAndLossHorizontalEnrichment_1 = require("./profitAndLossHorizontalEnrichment");
10
- /** Standard class ID returned by the accounting platform for transactions without an assigned class. */
11
- exports.NOT_SPECIFIED_CLASS_ID = 'not_specified';
12
10
  exports.profitAndLossHorizontalIdsInOrder = [
13
11
  'income',
14
12
  'cogs',
@@ -124,19 +122,7 @@ function buildClassColumns(classHierarchy, classesToFilterOut) {
124
122
  nestedClassId: c.classId,
125
123
  qboId: c.qboId,
126
124
  }))
127
- .sort((a, b) => {
128
- const aIsNotSpecified = a.classId === exports.NOT_SPECIFIED_CLASS_ID;
129
- const bIsNotSpecified = b.classId === exports.NOT_SPECIFIED_CLASS_ID;
130
- if (aIsNotSpecified && !bIsNotSpecified) {
131
- return 1;
132
- }
133
- if (!aIsNotSpecified && bIsNotSpecified) {
134
- return -1;
135
- }
136
- return a.className.localeCompare(b.className, [], {
137
- sensitivity: 'base',
138
- });
139
- });
125
+ .sort((a, b) => a.className.localeCompare(b.className, [], { sensitivity: 'base' }));
140
126
  }
141
127
  /**
142
128
  * Pivot a section from class→account→balances to account→class→balance (single period).
@@ -75,22 +75,19 @@ function buildHorizontalClassColumnBalancesSlice(report, classAmounts, totalAmou
75
75
  return (0, horizontalSectionEmptyBalancesSlice_1.getEmptyHorizontalSectionBalancesSlice)(report.firstMonthOfFY, timeframe);
76
76
  }
77
77
  const { startDate, endDate } = report.selectedPeriod;
78
- const balances = report.classColumns.map((col, columnIndex) => {
79
- const amount = classAmounts[columnIndex] ?? 0;
80
- return {
81
- balance: {
82
- amount,
83
- currencyCode,
84
- currencySymbol,
85
- },
86
- balanceTimeFrame: timeframe,
87
- startDate,
88
- endDate,
89
- type: amount === 0 ? 'default_with_null_balance' : 'default',
90
- id: col.classId,
91
- label: col.className,
92
- };
93
- });
78
+ const balances = report.classColumns.map((col, columnIndex) => ({
79
+ balance: {
80
+ amount: classAmounts[columnIndex] ?? 0,
81
+ currencyCode,
82
+ currencySymbol,
83
+ },
84
+ balanceTimeFrame: timeframe,
85
+ startDate,
86
+ endDate,
87
+ type: 'default',
88
+ id: col.classId,
89
+ label: col.className,
90
+ }));
94
91
  balances.push({
95
92
  balance: {
96
93
  amount: totalAmount,
@@ -100,7 +97,7 @@ function buildHorizontalClassColumnBalancesSlice(report, classAmounts, totalAmou
100
97
  balanceTimeFrame: timeframe,
101
98
  startDate,
102
99
  endDate,
103
- type: totalAmount === 0 ? 'default_with_null_balance' : 'default',
100
+ type: 'default',
104
101
  id: profitAndLossClassesByClassHorizontalSelectorTypes_1.HORIZONTAL_CLASS_TOTAL_BALANCE_ID,
105
102
  label: 'Total',
106
103
  });
@@ -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 { 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 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,7 @@ 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),
32
34
  (0, taskDetailReducer_1.archiveTaskSuccessOrFailure)({
33
35
  fetchState: 'Completed',
34
36
  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 { 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 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,9 @@ 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
+ }
16
20
  actions.push((0, taskDetailReducer_1.deleteTaskSuccessOrFailure)({ fetchState: 'Completed', taskId }));
17
21
  return (0, rxjs_1.from)(actions);
18
22
  }
@@ -31,6 +31,7 @@ const initializeTaskToLocalStoreEpic = (actions$, state$) => actions$.pipe((0, o
31
31
  savedRecurringEndDate: task.recurringEndDate,
32
32
  recurringStartDate: task.recurringStartDate,
33
33
  timeSpent: task.timeSpent,
34
+ isPrivate: task.isPrivate,
34
35
  };
35
36
  const actions = [
36
37
  (0, taskDetailReducer_1.saveTaskUpdatesToLocalStore)({ taskDetailLocalData, taskId }),
@@ -98,5 +98,6 @@ const prepareTaskPayload = (state, taskId, taskGroupId) => {
98
98
  sync_token: syncToken,
99
99
  task_group_ids: taskGroupId != null ? [taskGroupId] : [],
100
100
  time_spent: (0, formatMinutesToFromHHMM_1.convertHHMMStrToMinutes)(localData.timeSpent),
101
+ ...(taskId == null ? { is_private: localData.isPrivate ?? false } : {}),
101
102
  };
102
103
  };
@@ -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 { 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 snoozeTaskSuccessOrFailure> | ReturnType<typeof removeTaskFromList>;
9
+ export declare const snoozeTaskEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<ActionType>;
@@ -0,0 +1,68 @@
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, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
31
+ fetchState: 'Completed',
32
+ taskId,
33
+ }),
34
+ (0, snackbarReducer_1.openSnackbar)({
35
+ messageSection: 'snooze_task',
36
+ messageText: 'success',
37
+ type: 'success',
38
+ variables: [
39
+ {
40
+ variableName: '_snoozed_until_',
41
+ variableValue: formatSnoozedUntilForDisplay(snoozedUntil),
42
+ },
43
+ ],
44
+ }),
45
+ ];
46
+ return (0, rxjs_1.from)(fetchActions);
47
+ }
48
+ else {
49
+ return (0, rxjs_1.from)([
50
+ (0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
51
+ fetchState: 'Error',
52
+ taskId,
53
+ error: response.status,
54
+ }),
55
+ (0, snackbarReducer_1.openSnackbar)({
56
+ messageSection: 'snooze_task',
57
+ messageText: 'failed',
58
+ type: 'error',
59
+ variables: [
60
+ {
61
+ variableName: '_api-error_',
62
+ variableValue: response.status.message,
63
+ },
64
+ ],
65
+ }),
66
+ ]);
67
+ }
68
+ };
@@ -0,0 +1,8 @@
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 { snoozeTaskSuccessOrFailure, unsnoozeTask } from '../taskDetailReducer';
7
+ export type ActionType = ReturnType<typeof unsnoozeTask> | ReturnType<typeof updateTasks> | ReturnType<typeof openSnackbar> | ReturnType<typeof snoozeTaskSuccessOrFailure>;
8
+ export declare const unsnoozeTaskEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<ActionType>;
@@ -0,0 +1,58 @@
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 taskDetailReducer_1 = require("../taskDetailReducer");
10
+ 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)));
11
+ exports.unsnoozeTaskEpic = unsnoozeTaskEpic;
12
+ const handleUnsnoozeTask = (taskId, zeniAPI) => {
13
+ const unsnoozeTaskApi$ = zeniAPI.deleteAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks/${taskId}/snooze`);
14
+ return unsnoozeTaskApi$.pipe((0, operators_1.mergeMap)((response) => handleApiResponse(response, taskId)), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
15
+ fetchState: 'Error',
16
+ taskId,
17
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Unsnooze Task REST API call errored out: ' + JSON.stringify(error)),
18
+ }))));
19
+ };
20
+ const handleApiResponse = (response, taskId) => {
21
+ if ((0, responsePayload_1.isSuccessResponse)(response) &&
22
+ response.data != null &&
23
+ response.data.tasks.length > 0) {
24
+ const fetchActions = [
25
+ (0, taskReducer_1.updateTasks)(response.data.tasks),
26
+ (0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
27
+ fetchState: 'Completed',
28
+ taskId,
29
+ }),
30
+ (0, snackbarReducer_1.openSnackbar)({
31
+ messageSection: 'unsnooze_task',
32
+ messageText: 'success',
33
+ type: 'success',
34
+ }),
35
+ ];
36
+ return (0, rxjs_1.from)(fetchActions);
37
+ }
38
+ else {
39
+ return (0, rxjs_1.from)([
40
+ (0, taskDetailReducer_1.snoozeTaskSuccessOrFailure)({
41
+ fetchState: 'Error',
42
+ taskId,
43
+ error: response.status,
44
+ }),
45
+ (0, snackbarReducer_1.openSnackbar)({
46
+ messageSection: 'unsnooze_task',
47
+ messageText: 'failed',
48
+ type: 'error',
49
+ variables: [
50
+ {
51
+ variableName: '_api-error_',
52
+ variableValue: response.status.message,
53
+ },
54
+ ],
55
+ }),
56
+ ]);
57
+ }
58
+ };
@@ -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
  }
@@ -32,6 +33,7 @@ export interface EditTaskLocalData {
32
33
  timeSpent: string;
33
34
  type: TaskType;
34
35
  dueDate?: ZeniDate;
36
+ isPrivate?: boolean;
35
37
  recurringFrequency?: RecurringFrequencyType;
36
38
  recurringStartDate?: ZeniDate;
37
39
  savedRecurringEndDate?: ZeniDate;
@@ -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
  };
@@ -29,7 +29,16 @@ export declare const fetchTaskDetailPage: import("@reduxjs/toolkit").ActionCreat
29
29
  fetchState: FetchState;
30
30
  taskId: ID;
31
31
  error?: ZeniAPIStatus;
32
- }, "taskDetailView/archiveTaskSuccessOrFailure">, saveTaskSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
32
+ }, "taskDetailView/archiveTaskSuccessOrFailure">, snoozeTask: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[taskId: string, snoozedUntil: string], {
33
+ taskId: string;
34
+ snoozedUntil: string;
35
+ }, "taskDetailView/snoozeTask", never, never>, snoozeTaskSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
36
+ fetchState: FetchState;
37
+ taskId: ID;
38
+ error?: ZeniAPIStatus;
39
+ }, "taskDetailView/snoozeTaskSuccessOrFailure">, unsnoozeTask: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[taskId: string], {
40
+ taskId: string;
41
+ }, "taskDetailView/unsnoozeTask", never, never>, saveTaskSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
33
42
  fetchState: FetchState;
34
43
  error?: ZeniAPIStatus;
35
44
  newTaskId?: ID;
@@ -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.deleteTaskSuccessOrFailure = exports.removeTaskDetail = exports.deleteTask = exports.saveTaskSuccessOrFailure = exports.unsnoozeTask = exports.snoozeTaskSuccessOrFailure = exports.snoozeTask = 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");
@@ -192,6 +192,54 @@ const taskDetailView = (0, toolkit_1.createSlice)({
192
192
  draft.editTaskStateById[taskId].archiveStatus.fetchState = fetchState;
193
193
  draft.editTaskStateById[taskId].archiveStatus.error = error;
194
194
  },
195
+ snoozeTask: {
196
+ reducer(draft, action) {
197
+ const { taskId } = action.payload;
198
+ draft.editTaskStateById[taskId] = {
199
+ ...(draft.editTaskStateById[taskId] != null
200
+ ? draft.editTaskStateById[taskId]
201
+ : taskDetail_1.initialTaskDetail),
202
+ snoozeStatus: {
203
+ fetchState: 'In-Progress',
204
+ error: undefined,
205
+ },
206
+ };
207
+ },
208
+ prepare(taskId, snoozedUntil) {
209
+ return {
210
+ payload: {
211
+ taskId,
212
+ snoozedUntil,
213
+ },
214
+ };
215
+ },
216
+ },
217
+ snoozeTaskSuccessOrFailure(draft, action) {
218
+ const { taskId, fetchState, error } = action.payload;
219
+ draft.editTaskStateById[taskId].snoozeStatus.fetchState = fetchState;
220
+ draft.editTaskStateById[taskId].snoozeStatus.error = error;
221
+ },
222
+ unsnoozeTask: {
223
+ reducer(draft, action) {
224
+ const { taskId } = action.payload;
225
+ draft.editTaskStateById[taskId] = {
226
+ ...(draft.editTaskStateById[taskId] != null
227
+ ? draft.editTaskStateById[taskId]
228
+ : taskDetail_1.initialTaskDetail),
229
+ snoozeStatus: {
230
+ fetchState: 'In-Progress',
231
+ error: undefined,
232
+ },
233
+ };
234
+ },
235
+ prepare(taskId) {
236
+ return {
237
+ payload: {
238
+ taskId,
239
+ },
240
+ };
241
+ },
242
+ },
195
243
  deleteTask: {
196
244
  reducer(draft, action) {
197
245
  const { taskId } = 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.snoozeTask = _a.snoozeTask, exports.snoozeTaskSuccessOrFailure = _a.snoozeTaskSuccessOrFailure, exports.unsnoozeTask = _a.unsnoozeTask, 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;
281
329
  exports.default = taskDetailView.reducer;
@@ -4,6 +4,7 @@ import { Class } from '../../../entity/class/classState';
4
4
  import { File } from '../../../entity/file/fileState';
5
5
  import { TaskPriority, TaskStatus } from '../../../entity/task/taskState';
6
6
  import { RootState } from '../../../reducer';
7
+ import { ZeniDate } from '../../../zeniDayJS';
7
8
  import { UserAndRole } from '../../companyView/types/userAndRole';
8
9
  import { HistoricEvent } from '../../spendManagement/commonHistoryView/commonHistory';
9
10
  import { UserListSelectorView } from '../../userListView/userListViewSelector';
@@ -18,6 +19,7 @@ export interface TaskDetailSelectorView extends SelectorView {
18
19
  updateFileStatusById: Record<ID, FetchStateAndError | undefined>;
19
20
  userList: UserListSelectorView;
20
21
  createdByUser?: UserAndRole;
22
+ snoozedUntil?: ZeniDate;
21
23
  }
22
24
  export declare const getTaskDetail: (state: RootState, taskId?: ID) => TaskDetailSelectorView;
23
25
  export declare const allTaskStatus: TaskStatus[];
@@ -27,11 +27,13 @@ const getTaskDetail = (state, taskId) => {
27
27
  };
28
28
  let taskHistory = [];
29
29
  let createdByUser = undefined;
30
+ let snoozedUntil = undefined;
30
31
  if (taskId != null && sourceTaskDetail != null) {
31
32
  const taskEntity = (0, taskSelector_1.getTaskById)(taskState, taskId);
32
33
  const fileIdsInEntity = taskEntity?.fileIds ?? [];
33
34
  if (taskEntity != null) {
34
35
  createdByUser = (0, userAndRole_1.getUserAndUserRole)(userState, userRoleState, addressState, taskEntity.createdBy);
36
+ snoozedUntil = taskEntity.snoozedUntil;
35
37
  }
36
38
  if (fileIdsInEntity.length > 0) {
37
39
  fetchStatus = (0, reduceFetchState_1.reduceFetchState)([
@@ -80,6 +82,7 @@ const getTaskDetail = (state, taskId) => {
80
82
  version: 0,
81
83
  createdByUser,
82
84
  showTaskDetailFormFooter,
85
+ snoozedUntil,
83
86
  };
84
87
  };
85
88
  exports.getTaskDetail = getTaskDetail;
@@ -17,11 +17,17 @@ interface UpdateTaskPayload {
17
17
  due_date: string | null;
18
18
  file_ids: ID[];
19
19
  group_assignees: string[];
20
+ is_archived: boolean;
21
+ is_deleted: boolean;
22
+ is_snooze_notification_sent: boolean;
20
23
  name: string;
21
24
  priority: string;
22
25
  recurring_end_date: string | null;
23
26
  recurring_frequency: string | null;
24
27
  recurring_start_date: string | null;
28
+ snoozed_at: string | null;
29
+ snoozed_by: string | null;
30
+ snoozed_until: string | null;
25
31
  status: string;
26
32
  tags: string[];
27
33
  task_group_ids: string[];