@zeniai/client-epic-state 5.0.21 → 5.0.22-betaJK1

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 (85) hide show
  1. package/lib/entity/file/fileState.d.ts +4 -4
  2. package/lib/entity/file/fileState.js +4 -0
  3. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  4. package/lib/entity/snackbar/snackbarTypes.js +2 -0
  5. package/lib/entity/task/taskPayload.d.ts +3 -0
  6. package/lib/entity/task/taskPayload.js +5 -0
  7. package/lib/entity/task/taskState.d.ts +3 -0
  8. package/lib/entity/transaction/stateTypes/attachment.d.ts +2 -2
  9. package/lib/epic.d.ts +6 -1
  10. package/lib/epic.js +6 -1
  11. package/lib/esm/entity/file/fileState.js +4 -0
  12. package/lib/esm/entity/snackbar/snackbarTypes.js +2 -0
  13. package/lib/esm/entity/task/taskPayload.js +5 -0
  14. package/lib/esm/epic.js +6 -1
  15. package/lib/esm/index.js +5 -4
  16. package/lib/esm/reducer.js +3 -0
  17. package/lib/esm/view/taskManager/cannedResponsesView/cannedResponses.js +1 -0
  18. package/lib/esm/view/taskManager/cannedResponsesView/cannedResponsesPayload.js +1 -0
  19. package/lib/esm/view/taskManager/cannedResponsesView/cannedResponsesReducer.js +61 -0
  20. package/lib/esm/view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic.js +17 -0
  21. package/lib/esm/view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic.js +20 -0
  22. package/lib/esm/view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic.js +29 -0
  23. package/lib/esm/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +3 -0
  24. package/lib/esm/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +5 -0
  25. package/lib/esm/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +1 -0
  26. package/lib/esm/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -0
  27. package/lib/esm/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +65 -0
  28. package/lib/esm/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +56 -0
  29. package/lib/esm/view/taskManager/taskDetailView/taskDetail.js +4 -0
  30. package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +51 -1
  31. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +15 -2
  32. package/lib/esm/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +56 -21
  33. package/lib/esm/view/taskManager/taskListView/epics/dragNDropTasksEpic.js +1 -0
  34. package/lib/esm/view/taskManager/taskListView/epics/fetchTaskListEpic.js +13 -3
  35. package/lib/esm/view/taskManager/taskListView/epics/updateTaskFromListViewEpic.js +3 -2
  36. package/lib/esm/view/taskManager/taskListView/taskList.js +7 -0
  37. package/lib/esm/view/taskManager/taskListView/taskListReducer.js +91 -12
  38. package/lib/esm/view/taskManager/taskListView/taskListSelector.js +48 -39
  39. package/lib/index.d.ts +6 -4
  40. package/lib/index.js +14 -5
  41. package/lib/reducer.d.ts +3 -0
  42. package/lib/reducer.js +3 -0
  43. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  44. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  45. package/lib/view/taskManager/cannedResponsesView/cannedResponses.d.ts +18 -0
  46. package/lib/view/taskManager/cannedResponsesView/cannedResponses.js +2 -0
  47. package/lib/view/taskManager/cannedResponsesView/cannedResponsesPayload.d.ts +11 -0
  48. package/lib/view/taskManager/cannedResponsesView/cannedResponsesPayload.js +2 -0
  49. package/lib/view/taskManager/cannedResponsesView/cannedResponsesReducer.d.ts +30 -0
  50. package/lib/view/taskManager/cannedResponsesView/cannedResponsesReducer.js +65 -0
  51. package/lib/view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic.d.ts +7 -0
  52. package/lib/view/taskManager/cannedResponsesView/epics/deleteCannedResponseEpic.js +21 -0
  53. package/lib/view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic.d.ts +7 -0
  54. package/lib/view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic.js +24 -0
  55. package/lib/view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic.d.ts +7 -0
  56. package/lib/view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic.js +33 -0
  57. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.d.ts +2 -1
  58. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +3 -0
  59. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.d.ts +2 -1
  60. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +5 -0
  61. package/lib/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +1 -0
  62. package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -0
  63. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.d.ts +9 -0
  64. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +69 -0
  65. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.d.ts +9 -0
  66. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +60 -0
  67. package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +2 -0
  68. package/lib/view/taskManager/taskDetailView/taskDetail.js +4 -0
  69. package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +10 -1
  70. package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +52 -2
  71. package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +5 -0
  72. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +15 -2
  73. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.d.ts +6 -7
  74. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +56 -22
  75. package/lib/view/taskManager/taskListView/epics/dragNDropTasksEpic.js +1 -0
  76. package/lib/view/taskManager/taskListView/epics/fetchTaskListEpic.js +13 -3
  77. package/lib/view/taskManager/taskListView/epics/updateTaskFromListViewEpic.js +3 -2
  78. package/lib/view/taskManager/taskListView/taskList.d.ts +14 -1
  79. package/lib/view/taskManager/taskListView/taskList.js +8 -1
  80. package/lib/view/taskManager/taskListView/taskListPayload.d.ts +3 -0
  81. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +6 -2
  82. package/lib/view/taskManager/taskListView/taskListReducer.js +92 -13
  83. package/lib/view/taskManager/taskListView/taskListSelector.d.ts +9 -3
  84. package/lib/view/taskManager/taskListView/taskListSelector.js +48 -39
  85. package/package.json +1 -1
@@ -37,7 +37,7 @@ export declare const getLineItemsByTransactionsIdsFromResponse: (transactions: S
37
37
  export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLocalData: TransactionReviewLocalDataSelectorView[], selectedTab: TransactionsTab) => Record<ID, string[]>;
38
38
  export declare const mergeTabSpecificLineItems: (currentTabSpecificLineItems: TabSpecificLineItems, selectedTab: TransactionsTab, newLineItems: TabSpecificLineItems) => TabSpecificLineItems;
39
39
  export declare const getSnackbarMessageForTransactionReview: (updatedCount: number, failedCount: number, categorizedCount: number) => {
40
- messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "ai_accountant_trigger_job";
40
+ messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "snooze_task" | "unsnooze_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "ai_accountant_trigger_job";
41
41
  messageText: "notification" | "failed" | "success";
42
42
  type: "error" | "success" | "info";
43
43
  variables: {
@@ -0,0 +1,18 @@
1
+ import { FetchState } from '../../../commonStateTypes/common';
2
+ import { ZeniAPIStatus } from '../../../responsePayload';
3
+ export interface CannedResponse {
4
+ canned_response_id: string;
5
+ content: string;
6
+ create_time: string;
7
+ created_by: string;
8
+ is_deleted: boolean;
9
+ name: string;
10
+ update_time: string;
11
+ }
12
+ export interface CannedResponsesViewState {
13
+ cannedResponses: CannedResponse[];
14
+ deleteFetchState: FetchState;
15
+ fetchState: FetchState;
16
+ saveFetchState: FetchState;
17
+ error?: ZeniAPIStatus;
18
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,11 @@
1
+ import { ZeniAPIResponse } from '../../../responsePayload';
2
+ import { CannedResponse } from './cannedResponses';
3
+ interface FetchCannedResponsesPayload {
4
+ canned_responses: CannedResponse[];
5
+ }
6
+ export type FetchCannedResponsesResponse = ZeniAPIResponse<FetchCannedResponsesPayload>;
7
+ export type SaveCannedResponseResponse = ZeniAPIResponse<{
8
+ canned_response: CannedResponse;
9
+ }>;
10
+ export type DeleteCannedResponseResponse = ZeniAPIResponse<unknown>;
11
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,30 @@
1
+ import { FetchState, ID } from '../../../commonStateTypes/common';
2
+ import { ZeniAPIStatus } from '../../../responsePayload';
3
+ import { CannedResponse, CannedResponsesViewState } from './cannedResponses';
4
+ export declare const initialState: CannedResponsesViewState;
5
+ export declare const fetchCannedResponses: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cannedResponsesView/fetchCannedResponses">, updateCannedResponses: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
6
+ cannedResponses: CannedResponse[];
7
+ }, "cannedResponsesView/updateCannedResponses">, updateCannedResponsesFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
8
+ fetchState: FetchState;
9
+ error?: ZeniAPIStatus;
10
+ }, "cannedResponsesView/updateCannedResponsesFetchStatus">, saveCannedResponse: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: {
11
+ content: string;
12
+ name: string;
13
+ cannedResponseId?: ID;
14
+ }], {
15
+ content: string;
16
+ name: string;
17
+ cannedResponseId?: ID;
18
+ }, "cannedResponsesView/saveCannedResponse", never, never>, saveCannedResponseSuccess: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cannedResponsesView/saveCannedResponseSuccess">, saveCannedResponseFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
19
+ error?: ZeniAPIStatus;
20
+ }, "cannedResponsesView/saveCannedResponseFailure">, deleteCannedResponse: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: {
21
+ cannedResponseId: ID;
22
+ }], {
23
+ cannedResponseId: ID;
24
+ }, "cannedResponsesView/deleteCannedResponse", never, never>, deleteCannedResponseSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
25
+ cannedResponseId: ID;
26
+ }, "cannedResponsesView/deleteCannedResponseSuccess">, deleteCannedResponseFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
27
+ error?: ZeniAPIStatus;
28
+ }, "cannedResponsesView/deleteCannedResponseFailure">;
29
+ declare const _default: import("redux").Reducer<CannedResponsesViewState>;
30
+ export default _default;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.deleteCannedResponseFailure = exports.deleteCannedResponseSuccess = exports.deleteCannedResponse = exports.saveCannedResponseFailure = exports.saveCannedResponseSuccess = exports.saveCannedResponse = exports.updateCannedResponsesFetchStatus = exports.updateCannedResponses = exports.fetchCannedResponses = exports.initialState = void 0;
5
+ const toolkit_1 = require("@reduxjs/toolkit");
6
+ exports.initialState = {
7
+ cannedResponses: [],
8
+ fetchState: 'Not-Started',
9
+ saveFetchState: 'Not-Started',
10
+ deleteFetchState: 'Not-Started',
11
+ error: undefined,
12
+ };
13
+ const cannedResponsesView = (0, toolkit_1.createSlice)({
14
+ name: 'cannedResponsesView',
15
+ initialState: exports.initialState,
16
+ reducers: {
17
+ fetchCannedResponses(draft) {
18
+ draft.fetchState =
19
+ draft.cannedResponses.length > 0 ? 'Completed' : 'In-Progress';
20
+ draft.error = undefined;
21
+ },
22
+ updateCannedResponses(draft, action) {
23
+ draft.cannedResponses = action.payload.cannedResponses;
24
+ draft.fetchState = 'Completed';
25
+ draft.error = undefined;
26
+ },
27
+ updateCannedResponsesFetchStatus(draft, action) {
28
+ draft.fetchState = action.payload.fetchState;
29
+ draft.error = action.payload.error;
30
+ },
31
+ saveCannedResponse: {
32
+ reducer(draft) {
33
+ draft.saveFetchState = 'In-Progress';
34
+ },
35
+ prepare(payload) {
36
+ return { payload };
37
+ },
38
+ },
39
+ saveCannedResponseSuccess(draft) {
40
+ draft.saveFetchState = 'Completed';
41
+ },
42
+ saveCannedResponseFailure(draft, action) {
43
+ draft.saveFetchState = 'Error';
44
+ draft.error = action.payload.error;
45
+ },
46
+ deleteCannedResponse: {
47
+ reducer(draft) {
48
+ draft.deleteFetchState = 'In-Progress';
49
+ },
50
+ prepare(payload) {
51
+ return { payload };
52
+ },
53
+ },
54
+ deleteCannedResponseSuccess(draft, action) {
55
+ draft.deleteFetchState = 'Completed';
56
+ draft.cannedResponses = draft.cannedResponses.filter((r) => r.canned_response_id !== action.payload.cannedResponseId);
57
+ },
58
+ deleteCannedResponseFailure(draft, action) {
59
+ draft.deleteFetchState = 'Error';
60
+ draft.error = action.payload.error;
61
+ },
62
+ },
63
+ });
64
+ _a = cannedResponsesView.actions, exports.fetchCannedResponses = _a.fetchCannedResponses, exports.updateCannedResponses = _a.updateCannedResponses, exports.updateCannedResponsesFetchStatus = _a.updateCannedResponsesFetchStatus, exports.saveCannedResponse = _a.saveCannedResponse, exports.saveCannedResponseSuccess = _a.saveCannedResponseSuccess, exports.saveCannedResponseFailure = _a.saveCannedResponseFailure, exports.deleteCannedResponse = _a.deleteCannedResponse, exports.deleteCannedResponseSuccess = _a.deleteCannedResponseSuccess, exports.deleteCannedResponseFailure = _a.deleteCannedResponseFailure;
65
+ exports.default = cannedResponsesView.reducer;
@@ -0,0 +1,7 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../../../reducer';
4
+ import { ZeniAPI } from '../../../../zeniAPI';
5
+ import { deleteCannedResponse, deleteCannedResponseFailure, deleteCannedResponseSuccess } from '../cannedResponsesReducer';
6
+ export type ActionType = ReturnType<typeof deleteCannedResponse> | ReturnType<typeof deleteCannedResponseSuccess> | ReturnType<typeof deleteCannedResponseFailure>;
7
+ export declare const deleteCannedResponseEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteCannedResponseEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../../responsePayload");
7
+ const cannedResponsesReducer_1 = require("../cannedResponsesReducer");
8
+ const deleteCannedResponseEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(cannedResponsesReducer_1.deleteCannedResponse.match), (0, operators_1.switchMap)((action) => {
9
+ const { cannedResponseId } = action.payload;
10
+ return zeniAPI
11
+ .deleteAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/canned-responses/${cannedResponseId}`)
12
+ .pipe((0, operators_1.mergeMap)((response) => {
13
+ if ((0, responsePayload_1.isSuccessResponse)(response)) {
14
+ return (0, rxjs_1.of)((0, cannedResponsesReducer_1.deleteCannedResponseSuccess)({ cannedResponseId }));
15
+ }
16
+ return (0, rxjs_1.of)((0, cannedResponsesReducer_1.deleteCannedResponseFailure)({ error: response.status }));
17
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, cannedResponsesReducer_1.deleteCannedResponseFailure)({
18
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Delete Canned Response errored: ' + JSON.stringify(error)),
19
+ }))));
20
+ }));
21
+ exports.deleteCannedResponseEpic = deleteCannedResponseEpic;
@@ -0,0 +1,7 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../../../reducer';
4
+ import { ZeniAPI } from '../../../../zeniAPI';
5
+ import { fetchCannedResponses, updateCannedResponses, updateCannedResponsesFetchStatus } from '../cannedResponsesReducer';
6
+ export type ActionType = ReturnType<typeof fetchCannedResponses> | ReturnType<typeof updateCannedResponses> | ReturnType<typeof updateCannedResponsesFetchStatus>;
7
+ export declare const fetchCannedResponsesEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchCannedResponsesEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../../responsePayload");
7
+ const cannedResponsesReducer_1 = require("../cannedResponsesReducer");
8
+ const fetchCannedResponsesEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(cannedResponsesReducer_1.fetchCannedResponses.match), (0, operators_1.switchMap)(() => zeniAPI
9
+ .getJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/canned-responses`)
10
+ .pipe((0, operators_1.mergeMap)((response) => {
11
+ if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
12
+ return (0, rxjs_1.of)((0, cannedResponsesReducer_1.updateCannedResponses)({
13
+ cannedResponses: response.data.canned_responses ?? [],
14
+ }));
15
+ }
16
+ return (0, rxjs_1.of)((0, cannedResponsesReducer_1.updateCannedResponsesFetchStatus)({
17
+ fetchState: 'Error',
18
+ error: response.status,
19
+ }));
20
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, cannedResponsesReducer_1.updateCannedResponsesFetchStatus)({
21
+ fetchState: 'Error',
22
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch Canned Responses errored: ' + JSON.stringify(error)),
23
+ }))))));
24
+ exports.fetchCannedResponsesEpic = fetchCannedResponsesEpic;
@@ -0,0 +1,7 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../../../reducer';
4
+ import { ZeniAPI } from '../../../../zeniAPI';
5
+ import { fetchCannedResponses, saveCannedResponse, saveCannedResponseFailure, saveCannedResponseSuccess } from '../cannedResponsesReducer';
6
+ export type ActionType = ReturnType<typeof saveCannedResponse> | ReturnType<typeof saveCannedResponseSuccess> | ReturnType<typeof saveCannedResponseFailure> | ReturnType<typeof fetchCannedResponses>;
7
+ export declare const saveCannedResponseEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.saveCannedResponseEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../../responsePayload");
7
+ const cannedResponsesReducer_1 = require("../cannedResponsesReducer");
8
+ const saveCannedResponseEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(cannedResponsesReducer_1.saveCannedResponse.match), (0, operators_1.switchMap)((action) => {
9
+ const { name, content, cannedResponseId } = action.payload;
10
+ const isUpdate = cannedResponseId != null;
11
+ const url = isUpdate
12
+ ? `${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/canned-responses/${cannedResponseId}`
13
+ : `${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/canned-responses`;
14
+ const apiCall = isUpdate
15
+ ? zeniAPI.putAndGetJSON(url, {
16
+ name,
17
+ content,
18
+ })
19
+ : zeniAPI.postAndGetJSON(url, {
20
+ name,
21
+ content,
22
+ });
23
+ return apiCall.pipe((0, operators_1.mergeMap)((response) => {
24
+ if ((0, responsePayload_1.isSuccessResponse)(response)) {
25
+ return (0, rxjs_1.of)((0, cannedResponsesReducer_1.saveCannedResponseSuccess)(), (0, cannedResponsesReducer_1.fetchCannedResponses)() // Refresh list after save
26
+ );
27
+ }
28
+ return (0, rxjs_1.of)((0, cannedResponsesReducer_1.saveCannedResponseFailure)({ error: response.status }));
29
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, cannedResponsesReducer_1.saveCannedResponseFailure)({
30
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Save Canned Response errored: ' + JSON.stringify(error)),
31
+ }))));
32
+ }));
33
+ exports.saveCannedResponseEpic = saveCannedResponseEpic;
@@ -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
  }
@@ -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 { 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
  }
@@ -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
  };
@@ -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<{