@zeniai/client-epic-state 5.0.98-betaJK2 → 5.0.98-betaRR0

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 (43) hide show
  1. package/lib/entity/aiCfo/aiCfoState.d.ts +1 -1
  2. package/lib/entity/aiCfo/aiCfoState.js +2 -0
  3. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  4. package/lib/entity/snackbar/snackbarTypes.js +0 -1
  5. package/lib/entity/task/taskPayload.d.ts +0 -1
  6. package/lib/entity/task/taskPayload.js +0 -1
  7. package/lib/entity/task/taskReducer.d.ts +1 -5
  8. package/lib/entity/task/taskReducer.js +2 -8
  9. package/lib/entity/task/taskState.d.ts +0 -1
  10. package/lib/epic.d.ts +1 -3
  11. package/lib/epic.js +1 -3
  12. package/lib/esm/entity/aiCfo/aiCfoState.js +2 -0
  13. package/lib/esm/entity/snackbar/snackbarTypes.js +0 -1
  14. package/lib/esm/entity/task/taskPayload.js +0 -1
  15. package/lib/esm/entity/task/taskReducer.js +1 -7
  16. package/lib/esm/epic.js +1 -3
  17. package/lib/esm/index.js +3 -3
  18. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +14 -1
  19. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +13 -3
  20. package/lib/esm/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.js +0 -13
  21. package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +2 -56
  22. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +8 -19
  23. package/lib/index.d.ts +4 -4
  24. package/lib/index.js +10 -12
  25. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  26. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.d.ts +1 -1
  27. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +15 -2
  28. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.d.ts +2 -1
  29. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +12 -2
  30. package/lib/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.d.ts +1 -2
  31. package/lib/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.js +0 -13
  32. package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +0 -13
  33. package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +2 -14
  34. package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +3 -57
  35. package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +1 -2
  36. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +6 -17
  37. package/package.json +1 -1
  38. package/lib/esm/view/taskManager/taskDetailView/epics/createSubTaskEpic.js +0 -80
  39. package/lib/esm/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.js +0 -36
  40. package/lib/view/taskManager/taskDetailView/epics/createSubTaskEpic.d.ts +0 -9
  41. package/lib/view/taskManager/taskDetailView/epics/createSubTaskEpic.js +0 -84
  42. package/lib/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.d.ts +0 -8
  43. package/lib/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.js +0 -40
@@ -39,7 +39,7 @@ export declare const getLineItemsByTransactionsIdsFromResponse: (transactions: S
39
39
  export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLocalData: TransactionReviewLocalDataSelectorView[], selectedTab: TransactionsTab) => Record<ID, string[]>;
40
40
  export declare const mergeTabSpecificLineItems: (currentTabSpecificLineItems: TabSpecificLineItems, selectedTab: TransactionsTab, newLineItems: TabSpecificLineItems) => TabSpecificLineItems;
41
41
  export declare const getSnackbarMessageForTransactionReview: (updatedCount: number, failedCount: number, categorizedCount: number) => {
42
- 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_approval_reorder" | "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_approval_reorder" | "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" | "card_policy_created" | "card_policy_updated" | "card_policy_deleted" | "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" | "create_transfer_entry" | "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" | "capitalization_threshold_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "ai_accountant_trigger_job" | "oauth_consent_approve" | "oauth_consent_invalid_request" | "credit_agent_update_profile" | "credit_agent_save_macro" | "credit_agent_schedule_cron" | "create_sub_task";
42
+ 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_approval_reorder" | "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_approval_reorder" | "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" | "card_policy_created" | "card_policy_updated" | "card_policy_deleted" | "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" | "create_transfer_entry" | "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" | "capitalization_threshold_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "ai_accountant_trigger_job" | "oauth_consent_approve" | "oauth_consent_invalid_request" | "credit_agent_update_profile" | "credit_agent_save_macro" | "credit_agent_schedule_cron";
43
43
  messageText: "notification" | "failed" | "success";
44
44
  type: "error" | "success" | "info";
45
45
  variables: {
@@ -6,7 +6,7 @@ export declare const fetchCardPolicyList: import("@reduxjs/toolkit").ActionCreat
6
6
  fetchState: FetchState;
7
7
  error?: ZeniAPIStatus;
8
8
  templateIds?: ID[];
9
- }, "cardPolicyList/updateCardPolicyListFetchStatus">, archiveCardPolicy: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[templateId: string], string, "cardPolicyList/archiveCardPolicy", never, never>, updateArchiveCardPolicyFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
9
+ }, "cardPolicyList/updateCardPolicyListFetchStatus">, prependCardPolicyTemplateIds: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "cardPolicyList/prependCardPolicyTemplateIds">, archiveCardPolicy: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[templateId: string], string, "cardPolicyList/archiveCardPolicy", never, never>, updateArchiveCardPolicyFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
10
10
  fetchState: FetchState;
11
11
  error?: ZeniAPIStatus;
12
12
  templateId?: ID;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.clearCardPolicyList = exports.updateArchiveCardPolicyFetchStatus = exports.archiveCardPolicy = exports.updateCardPolicyListFetchStatus = exports.fetchCardPolicyList = exports.initialState = void 0;
4
+ exports.clearCardPolicyList = exports.updateArchiveCardPolicyFetchStatus = exports.archiveCardPolicy = exports.prependCardPolicyTemplateIds = exports.updateCardPolicyListFetchStatus = exports.fetchCardPolicyList = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  exports.initialState = {
7
7
  templateIds: [],
@@ -30,6 +30,19 @@ const cardPolicyList = (0, toolkit_1.createSlice)({
30
30
  draft.templateIds = action.payload.templateIds;
31
31
  }
32
32
  },
33
+ // Lets the create epic prepend new ids onto the list in-place after a
34
+ // successful POST so the new rows render at the top without a wipe-
35
+ // and-refetch (which would otherwise flash the page skeleton).
36
+ // Newest-first: last id in the payload lands at index 0.
37
+ prependCardPolicyTemplateIds(draft, action) {
38
+ const existing = new Set(draft.templateIds);
39
+ for (const id of action.payload) {
40
+ if (!existing.has(id)) {
41
+ draft.templateIds.unshift(id);
42
+ existing.add(id);
43
+ }
44
+ }
45
+ },
33
46
  archiveCardPolicy: {
34
47
  reducer(draft, action) {
35
48
  draft.archiveFetchState.fetchState = 'In-Progress';
@@ -58,5 +71,5 @@ const cardPolicyList = (0, toolkit_1.createSlice)({
58
71
  },
59
72
  },
60
73
  });
61
- _a = cardPolicyList.actions, exports.fetchCardPolicyList = _a.fetchCardPolicyList, exports.updateCardPolicyListFetchStatus = _a.updateCardPolicyListFetchStatus, exports.archiveCardPolicy = _a.archiveCardPolicy, exports.updateArchiveCardPolicyFetchStatus = _a.updateArchiveCardPolicyFetchStatus, exports.clearCardPolicyList = _a.clearCardPolicyList;
74
+ _a = cardPolicyList.actions, exports.fetchCardPolicyList = _a.fetchCardPolicyList, exports.updateCardPolicyListFetchStatus = _a.updateCardPolicyListFetchStatus, exports.prependCardPolicyTemplateIds = _a.prependCardPolicyTemplateIds, exports.archiveCardPolicy = _a.archiveCardPolicy, exports.updateArchiveCardPolicyFetchStatus = _a.updateArchiveCardPolicyFetchStatus, exports.clearCardPolicyList = _a.clearCardPolicyList;
62
75
  exports.default = cardPolicyList.reducer;
@@ -3,6 +3,7 @@ import { Observable } from 'rxjs';
3
3
  import { updateCreatedCardPolicyTemplate } from '../../../../../entity/cardPolicy/cardPolicyReducer';
4
4
  import { RootState } from '../../../../../reducer';
5
5
  import { ZeniAPI } from '../../../../../zeniAPI';
6
+ import { prependCardPolicyTemplateIds } from '../cardPolicyList/cardPolicyListReducer';
6
7
  import { createCardPolicyTemplates, updateCreateCardPolicyTemplateRequestState } from './createCardPolicyReducer';
7
- export type ActionType = ReturnType<typeof createCardPolicyTemplates> | ReturnType<typeof updateCreatedCardPolicyTemplate> | ReturnType<typeof updateCreateCardPolicyTemplateRequestState>;
8
+ export type ActionType = ReturnType<typeof createCardPolicyTemplates> | ReturnType<typeof updateCreatedCardPolicyTemplate> | ReturnType<typeof updateCreateCardPolicyTemplateRequestState> | ReturnType<typeof prependCardPolicyTemplateIds>;
8
9
  export declare const createCardPolicyTemplatesEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createCardPolicyTemplatesEpic = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  const operators_1 = require("rxjs/operators");
6
- const cardPolicyReducer_1 = require("../../../../../entity/cardPolicy/cardPolicyReducer");
7
6
  const cardPolicyPayload_1 = require("../../../../../entity/cardPolicy/cardPolicyPayload");
7
+ const cardPolicyReducer_1 = require("../../../../../entity/cardPolicy/cardPolicyReducer");
8
8
  const responsePayload_1 = require("../../../../../responsePayload");
9
+ const cardPolicyListReducer_1 = require("../cardPolicyList/cardPolicyListReducer");
9
10
  const createCardPolicyReducer_1 = require("./createCardPolicyReducer");
10
11
  // `POST /cards/1.0/policy-templates` (bulk). On success fans entity hydrations
11
12
  // + a single state update with ids + per-item errors. Partial success is
@@ -18,12 +19,21 @@ const createCardPolicyTemplatesEpic = (actions$, _state$, zeniAPI) => actions$.p
18
19
  if ((0, responsePayload_1.isSuccessStatus)(response) && response.data != null) {
19
20
  const { templates_created, errors } = response.data;
20
21
  const createdTemplates = templates_created.map((row) => row.template);
22
+ const createdTemplateIds = createdTemplates.map((template) => template.template_id);
23
+ // Prepend new ids onto the list slice in-place so new rows
24
+ // render at the top on back-nav without a wipe-and-refetch
25
+ // (which would flash the page skeleton). Skipped when all
26
+ // items errored.
27
+ const prependActions = createdTemplateIds.length > 0
28
+ ? [(0, cardPolicyListReducer_1.prependCardPolicyTemplateIds)(createdTemplateIds)]
29
+ : [];
21
30
  const actions = [
22
31
  ...createdTemplates.map((template) => (0, cardPolicyReducer_1.updateCreatedCardPolicyTemplate)(template)),
32
+ ...prependActions,
23
33
  (0, createCardPolicyReducer_1.updateCreateCardPolicyTemplateRequestState)({
24
34
  fetchState: 'Completed',
25
35
  perItemErrors: (errors ?? []).map(cardPolicyPayload_1.toBulkCreateCardPolicyTemplateError),
26
- templateIds: createdTemplates.map((template) => template.template_id),
36
+ templateIds: createdTemplateIds,
27
37
  }),
28
38
  ];
29
39
  return (0, rxjs_1.from)(actions);
@@ -6,7 +6,6 @@ import { updateTasks } from '../../../../entity/task/taskReducer';
6
6
  import { RootState } from '../../../../reducer';
7
7
  import { ZeniAPI } from '../../../../zeniAPI';
8
8
  import { fetchFileList } from '../../../fileView/fileViewReducer';
9
- import { updateTaskListOnNewTaskCreationSuccess } from '../../taskListView/taskListReducer';
10
9
  import { fetchTaskDetail, initializeTaskToLocalStore, removeTaskDetail, updateEditTaskFetchStatus } from '../taskDetailReducer';
11
- export type ActionType = ReturnType<typeof fetchTaskDetail> | ReturnType<typeof updateTags> | ReturnType<typeof updateEditTaskFetchStatus> | ReturnType<typeof removeTaskDetail> | ReturnType<typeof updateTasks> | ReturnType<typeof initializeTaskToLocalStore> | ReturnType<typeof fetchFileList> | ReturnType<typeof openSnackbar> | ReturnType<typeof updateTaskListOnNewTaskCreationSuccess>;
10
+ export type ActionType = ReturnType<typeof fetchTaskDetail> | ReturnType<typeof updateTags> | ReturnType<typeof updateEditTaskFetchStatus> | ReturnType<typeof removeTaskDetail> | ReturnType<typeof updateTasks> | ReturnType<typeof initializeTaskToLocalStore> | ReturnType<typeof fetchFileList> | ReturnType<typeof openSnackbar>;
12
11
  export declare const fetchTaskDetailEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -10,16 +10,13 @@ const operators_1 = require("rxjs/operators");
10
10
  const snackbarReducer_1 = require("../../../../entity/snackbar/snackbarReducer");
11
11
  const tagReducer_1 = require("../../../../entity/tag/tagReducer");
12
12
  const taskReducer_1 = require("../../../../entity/task/taskReducer");
13
- const taskSelector_1 = require("../../../../entity/task/taskSelector");
14
13
  const responsePayload_1 = require("../../../../responsePayload");
15
14
  const fileViewReducer_1 = require("../../../fileView/fileViewReducer");
16
- const taskListReducer_1 = require("../../taskListView/taskListReducer");
17
15
  const taskDetailReducer_1 = require("../taskDetailReducer");
18
16
  const fetchTaskDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskDetailReducer_1.fetchTaskDetail.match), (0, operators_1.mergeMap)((action) => {
19
17
  const { taskId, cacheOverride } = action.payload;
20
18
  const taskActions = [];
21
19
  const state = state$.value;
22
- const isTaskListFetched = state.taskListState.fetchState === 'Completed';
23
20
  const taskDetail = (0, get_1.default)(state.taskDetailState.editTaskStateById, taskId, undefined);
24
21
  if (cacheOverride === true) {
25
22
  taskActions.push((0, taskDetailReducer_1.removeTaskDetail)(taskId));
@@ -41,16 +38,6 @@ const fetchTaskDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, ope
41
38
  (0, tagReducer_1.updateTags)(response.data.tasks.map((task) => task.tags).flat()),
42
39
  (0, taskDetailReducer_1.initializeTaskToLocalStore)(taskId),
43
40
  ];
44
- if (isTaskListFetched === true) {
45
- const taskGroupId = response.data.tasks[0].task_group_ids?.[0];
46
- if (taskGroupId != null) {
47
- fetchActions.push((0, taskListReducer_1.updateTaskListOnNewTaskCreationSuccess)({
48
- taskGroupId,
49
- task: response.data.tasks[0],
50
- currentTaskState: (0, taskSelector_1.getTaskById)(state.taskState, taskId),
51
- }));
52
- }
53
- }
54
41
  const fileIds = response.data.tasks[0].file_ids;
55
42
  if (fileIds.length > 0) {
56
43
  fetchActions.push((0, fileViewReducer_1.fetchFileList)(fileIds));
@@ -3,22 +3,9 @@ import { DayOfWeek, PriorityCodeType, TaskStatusCodeType, TaskType } from '../..
3
3
  import { ZeniDate } from '../../../zeniDayJS';
4
4
  import { RecurringDatePickerOptions, RecurringFrequencyType } from '../../common/recurringViewHelper';
5
5
  import { CommonHistoryView } from '../../spendManagement/commonHistoryView/commonHistory';
6
- export interface CreateSubTaskPayload {
7
- assignee: ID[];
8
- description: string;
9
- groupAssignees: ID[];
10
- name: string;
11
- parentTaskId: ID;
12
- priority: PriorityCodeType;
13
- status: TaskStatusCodeType;
14
- tagIds: ID[];
15
- timeSpent: string;
16
- }
17
6
  export interface TaskDetailViewState {
18
7
  editTaskStateById: Record<ID, EditTaskDetail>;
19
8
  newTaskState: EditTaskDetail;
20
- subTaskCreateStatus: FetchStateAndError;
21
- subTaskListFetchStatusByParentId: Record<ID, FetchStateAndError>;
22
9
  taskHistoryById: Record<ID, CommonHistoryView>;
23
10
  }
24
11
  export interface EditTaskDetail {
@@ -1,7 +1,7 @@
1
1
  import { FetchState, ID } from '../../../commonStateTypes/common';
2
2
  import { ZeniAPIStatus } from '../../../responsePayload';
3
3
  import { HistoricEventPayload } from '../../spendManagement/commonHistoryView/commonHistoryPayload';
4
- import { CreateSubTaskPayload, EditTaskLocalData, TaskDetailViewState } from './taskDetail';
4
+ import { EditTaskLocalData, TaskDetailViewState } from './taskDetail';
5
5
  export declare const initialState: TaskDetailViewState;
6
6
  export declare const fetchTaskDetailPage: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride: boolean, taskId?: string | undefined], {
7
7
  cacheOverride: boolean;
@@ -34,19 +34,7 @@ export declare const fetchTaskDetailPage: import("@reduxjs/toolkit").ActionCreat
34
34
  error?: ZeniAPIStatus;
35
35
  newTaskId?: ID;
36
36
  taskId?: ID;
37
- }, "taskDetailView/saveTaskSuccessOrFailure">, createSubTask: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: CreateSubTaskPayload], CreateSubTaskPayload, "taskDetailView/createSubTask", never, never>, createSubTaskSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
38
- fetchState: FetchState;
39
- error?: ZeniAPIStatus;
40
- newTaskId?: ID;
41
- }, "taskDetailView/createSubTaskSuccessOrFailure">, resetSubTaskCreateStatus: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"taskDetailView/resetSubTaskCreateStatus">, fetchSubTasks: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[parentTaskId: string], {
42
- parentTaskId: string;
43
- }, "taskDetailView/fetchSubTasks", never, never>, updateSubTasks: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
44
- parentTaskId: ID;
45
- }, "taskDetailView/updateSubTasks">, updateSubTasksFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
46
- fetchState: FetchState;
47
- parentTaskId: ID;
48
- error?: ZeniAPIStatus;
49
- }, "taskDetailView/updateSubTasksFetchStatus">, deleteTask: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[taskId?: string | undefined], {
37
+ }, "taskDetailView/saveTaskSuccessOrFailure">, deleteTask: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[taskId?: string | undefined], {
50
38
  taskId: string | undefined;
51
39
  }, "taskDetailView/deleteTask", never, never>, removeTaskDetail: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "taskDetailView/removeTaskDetail">, deleteTaskSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
52
40
  fetchState: FetchState;
@@ -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.unsnoozeTask = exports.snoozeTaskSuccessOrFailure = exports.snoozeTask = exports.deleteTaskSuccessOrFailure = exports.removeTaskDetail = exports.deleteTask = exports.updateSubTasksFetchStatus = exports.updateSubTasks = exports.fetchSubTasks = exports.resetSubTaskCreateStatus = exports.createSubTaskSuccessOrFailure = exports.createSubTask = exports.saveTaskSuccessOrFailure = exports.archiveTaskSuccessOrFailure = exports.archiveTask = exports.saveTaskDetail = exports.discardTaskUpdatesInLocalStore = exports.saveTaskUpdatesToLocalStore = exports.updateEditTaskFetchStatus = exports.initializeTaskToLocalStore = exports.fetchTaskDetail = exports.fetchTaskDetailPage = exports.initialState = void 0;
7
+ exports.updateDeletedTagToLocalStore = exports.updateCreatedTagToLocalStore = exports.clearTaskDetail = exports.updateTaskHistoryFetchStatus = exports.updateTaskHistory = exports.fetchTaskHistory = exports.unsnoozeTask = exports.snoozeTaskSuccessOrFailure = exports.snoozeTask = exports.deleteTaskSuccessOrFailure = exports.removeTaskDetail = exports.deleteTask = exports.saveTaskSuccessOrFailure = exports.archiveTaskSuccessOrFailure = exports.archiveTask = exports.saveTaskDetail = exports.discardTaskUpdatesInLocalStore = exports.saveTaskUpdatesToLocalStore = exports.updateEditTaskFetchStatus = exports.initializeTaskToLocalStore = exports.fetchTaskDetail = exports.fetchTaskDetailPage = exports.initialState = void 0;
8
8
  const toolkit_1 = require("@reduxjs/toolkit");
9
9
  const get_1 = __importDefault(require("lodash/get"));
10
10
  const commonHistory_1 = require("../../spendManagement/commonHistoryView/commonHistory");
@@ -13,11 +13,6 @@ const taskDetail_1 = require("./taskDetail");
13
13
  exports.initialState = {
14
14
  newTaskState: taskDetail_1.initialTaskDetail,
15
15
  editTaskStateById: {},
16
- subTaskCreateStatus: {
17
- fetchState: 'Not-Started',
18
- error: undefined,
19
- },
20
- subTaskListFetchStatusByParentId: {},
21
16
  taskHistoryById: {},
22
17
  };
23
18
  const taskDetailView = (0, toolkit_1.createSlice)({
@@ -62,7 +57,7 @@ const taskDetailView = (0, toolkit_1.createSlice)({
62
57
  updateEditTaskFetchStatus(draft, action) {
63
58
  const { taskId, fetchState, error } = action.payload;
64
59
  draft.editTaskStateById[taskId] = {
65
- ...(draft.editTaskStateById[taskId] ?? taskDetail_1.initialTaskDetail),
60
+ ...draft.editTaskStateById[taskId],
66
61
  fetchTaskStatus: {
67
62
  fetchState,
68
63
  error: fetchState === 'Error' ? error : undefined,
@@ -330,59 +325,10 @@ const taskDetailView = (0, toolkit_1.createSlice)({
330
325
  error,
331
326
  };
332
327
  },
333
- createSubTask: {
334
- reducer(draft) {
335
- draft.subTaskCreateStatus = {
336
- fetchState: 'In-Progress',
337
- error: undefined,
338
- };
339
- },
340
- prepare(payload) {
341
- return { payload };
342
- },
343
- },
344
- createSubTaskSuccessOrFailure(draft, action) {
345
- const { fetchState, error } = action.payload;
346
- draft.subTaskCreateStatus = {
347
- fetchState,
348
- error,
349
- };
350
- },
351
- resetSubTaskCreateStatus(draft) {
352
- draft.subTaskCreateStatus = {
353
- ...exports.initialState.subTaskCreateStatus,
354
- };
355
- },
356
- fetchSubTasks: {
357
- reducer(draft, action) {
358
- const { parentTaskId } = action.payload;
359
- draft.subTaskListFetchStatusByParentId[parentTaskId] = {
360
- fetchState: 'In-Progress',
361
- error: undefined,
362
- };
363
- },
364
- prepare(parentTaskId) {
365
- return { payload: { parentTaskId } };
366
- },
367
- },
368
- updateSubTasks(draft, action) {
369
- const { parentTaskId } = action.payload;
370
- draft.subTaskListFetchStatusByParentId[parentTaskId] = {
371
- fetchState: 'Completed',
372
- error: undefined,
373
- };
374
- },
375
- updateSubTasksFetchStatus(draft, action) {
376
- const { parentTaskId, fetchState, error } = action.payload;
377
- draft.subTaskListFetchStatusByParentId[parentTaskId] = {
378
- fetchState,
379
- error,
380
- };
381
- },
382
328
  clearTaskDetail(draft) {
383
329
  Object.assign(draft, exports.initialState);
384
330
  },
385
331
  },
386
332
  });
387
- _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.createSubTask = _a.createSubTask, exports.createSubTaskSuccessOrFailure = _a.createSubTaskSuccessOrFailure, exports.resetSubTaskCreateStatus = _a.resetSubTaskCreateStatus, exports.fetchSubTasks = _a.fetchSubTasks, exports.updateSubTasks = _a.updateSubTasks, exports.updateSubTasksFetchStatus = _a.updateSubTasksFetchStatus, exports.deleteTask = _a.deleteTask, exports.removeTaskDetail = _a.removeTaskDetail, exports.deleteTaskSuccessOrFailure = _a.deleteTaskSuccessOrFailure, exports.snoozeTask = _a.snoozeTask, exports.snoozeTaskSuccessOrFailure = _a.snoozeTaskSuccessOrFailure, exports.unsnoozeTask = _a.unsnoozeTask, exports.fetchTaskHistory = _a.fetchTaskHistory, exports.updateTaskHistory = _a.updateTaskHistory, exports.updateTaskHistoryFetchStatus = _a.updateTaskHistoryFetchStatus, exports.clearTaskDetail = _a.clearTaskDetail, exports.updateCreatedTagToLocalStore = _a.updateCreatedTagToLocalStore, exports.updateDeletedTagToLocalStore = _a.updateDeletedTagToLocalStore;
333
+ _a = taskDetailView.actions, exports.fetchTaskDetailPage = _a.fetchTaskDetailPage, exports.fetchTaskDetail = _a.fetchTaskDetail, exports.initializeTaskToLocalStore = _a.initializeTaskToLocalStore, exports.updateEditTaskFetchStatus = _a.updateEditTaskFetchStatus, exports.saveTaskUpdatesToLocalStore = _a.saveTaskUpdatesToLocalStore, exports.discardTaskUpdatesInLocalStore = _a.discardTaskUpdatesInLocalStore, exports.saveTaskDetail = _a.saveTaskDetail, exports.archiveTask = _a.archiveTask, exports.archiveTaskSuccessOrFailure = _a.archiveTaskSuccessOrFailure, exports.saveTaskSuccessOrFailure = _a.saveTaskSuccessOrFailure, exports.deleteTask = _a.deleteTask, exports.removeTaskDetail = _a.removeTaskDetail, exports.deleteTaskSuccessOrFailure = _a.deleteTaskSuccessOrFailure, exports.snoozeTask = _a.snoozeTask, exports.snoozeTaskSuccessOrFailure = _a.snoozeTaskSuccessOrFailure, exports.unsnoozeTask = _a.unsnoozeTask, exports.fetchTaskHistory = _a.fetchTaskHistory, exports.updateTaskHistory = _a.updateTaskHistory, exports.updateTaskHistoryFetchStatus = _a.updateTaskHistoryFetchStatus, exports.clearTaskDetail = _a.clearTaskDetail, exports.updateCreatedTagToLocalStore = _a.updateCreatedTagToLocalStore, exports.updateDeletedTagToLocalStore = _a.updateDeletedTagToLocalStore;
388
334
  exports.default = taskDetailView.reducer;
@@ -2,7 +2,7 @@ import { FetchStateAndError, ID } from '../../../commonStateTypes/common';
2
2
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
3
3
  import { Class } from '../../../entity/class/classState';
4
4
  import { File } from '../../../entity/file/fileState';
5
- import { Task, TaskPriority, TaskStatus } from '../../../entity/task/taskState';
5
+ import { TaskPriority, TaskStatus } from '../../../entity/task/taskState';
6
6
  import { RootState } from '../../../reducer';
7
7
  import { ZeniDate } from '../../../zeniDayJS';
8
8
  import { UserAndRole } from '../../companyView/types/userAndRole';
@@ -14,7 +14,6 @@ export interface TaskDetailSelectorView extends SelectorView {
14
14
  deleteFileStatusById: Record<ID, FetchStateAndError | undefined>;
15
15
  files: File[];
16
16
  showTaskDetailFormFooter: boolean;
17
- subtasks: Task[];
18
17
  taskDetailView: EditTaskDetail;
19
18
  taskHistory: HistoricEvent[];
20
19
  updateFileStatusById: Record<ID, FetchStateAndError | undefined>;
@@ -33,13 +33,8 @@ const getTaskDetail = (state, taskId) => {
33
33
  let recurringSourceTaskId = undefined;
34
34
  let snoozedUntil = undefined;
35
35
  let taskGroupId = undefined;
36
- let subtasks = [];
37
36
  if (taskId != null && sourceTaskDetail != null) {
38
37
  const taskEntity = (0, taskSelector_1.getTaskById)(taskState, taskId);
39
- subtasks =
40
- taskEntity != null
41
- ? (0, taskSelector_1.getTasksByIds)(taskState, taskEntity.subTasksIds)
42
- : [];
43
38
  const fileIdsInEntity = taskEntity?.fileIds ?? [];
44
39
  if (taskEntity != null) {
45
40
  createdByUser = (0, userAndRole_1.getUserAndUserRole)(userState, userRoleState, addressState, taskEntity.createdBy);
@@ -50,27 +45,25 @@ const getTaskDetail = (state, taskId) => {
50
45
  taskGroupId = taskEntity.taskGroupIds[0];
51
46
  }
52
47
  if (fileIdsInEntity.length > 0) {
53
- fetchStatus = (0, reduceFetchState_1.reduceAnyFetchState)([
48
+ fetchStatus = (0, reduceFetchState_1.reduceFetchState)([
54
49
  fileViewState.fetchFilesStatus,
55
50
  sourceTaskDetail.fetchTaskStatus,
56
51
  userList,
57
52
  classListState,
58
- taskDetailState.subTaskListFetchStatusByParentId[taskId] ?? fetchStatus,
59
53
  ]);
60
54
  }
61
55
  else {
62
- fetchStatus = (0, reduceFetchState_1.reduceAnyFetchState)([
56
+ fetchStatus = (0, reduceFetchState_1.reduceFetchState)([
63
57
  sourceTaskDetail.fetchTaskStatus,
64
58
  userList,
65
59
  classListState,
66
- taskDetailState.subTaskListFetchStatusByParentId[taskId] ?? fetchStatus,
67
60
  ]);
68
61
  }
69
62
  showTaskDetailFormFooter = showFormFooter(sourceTaskDetail.taskDetailLocalData, taskEntity);
70
63
  taskHistory = taskDetailState.taskHistoryById[taskId]?.historicEvents ?? [];
71
64
  }
72
65
  else if (taskId == null) {
73
- fetchStatus = (0, reduceFetchState_1.reduceAnyFetchState)([userList, classListState]);
66
+ fetchStatus = (0, reduceFetchState_1.reduceFetchState)([userList, classListState]);
74
67
  }
75
68
  const { classIds } = classListState;
76
69
  const allAccountingClasses = (0, classSelector_1.getClassesByIds)(classState, {
@@ -103,7 +96,6 @@ const getTaskDetail = (state, taskId) => {
103
96
  showTaskDetailFormFooter,
104
97
  snoozedUntil,
105
98
  taskGroupId,
106
- subtasks,
107
99
  };
108
100
  };
109
101
  exports.getTaskDetail = getTaskDetail;
@@ -152,16 +144,13 @@ exports.allTaskPriority = [
152
144
  },
153
145
  ];
154
146
  const showFormFooter = (taskDetailLocalData, taskDetailInStore) => {
155
- if (taskDetailInStore == null) {
156
- return false;
157
- }
158
- if (taskDetailLocalData.name !== taskDetailInStore.name ||
147
+ if (taskDetailLocalData.name !== taskDetailInStore?.name ||
159
148
  taskDetailLocalData.description !== taskDetailInStore.description ||
160
149
  taskDetailLocalData.priority !== taskDetailInStore.priority.code ||
161
150
  taskDetailLocalData.status !== taskDetailInStore.status.code ||
162
151
  !(0, isEqual_1.default)(taskDetailInStore.tagIds, taskDetailLocalData.tagIds) ||
163
- !(0, isEqual_1.default)(taskDetailLocalData.assignee, taskDetailInStore.assignees ?? []) ||
164
- !(0, isEqual_1.default)(taskDetailLocalData.groupAssignees, taskDetailInStore.groupAssignees ?? []) ||
152
+ !(0, isEqual_1.default)(taskDetailLocalData.assignee, taskDetailInStore?.assignees ?? []) ||
153
+ !(0, isEqual_1.default)(taskDetailLocalData.groupAssignees, taskDetailInStore?.groupAssignees ?? []) ||
165
154
  !(0, isEqual_1.default)(taskDetailLocalData.fileIds, taskDetailInStore.fileIds ?? []) ||
166
155
  !(0, isEqual_1.default)(taskDetailLocalData.dueDate, taskDetailInStore.dueDate) ||
167
156
  !(0, isEqual_1.default)(taskDetailLocalData.type, taskDetailInStore.type) ||
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.0.98-betaJK2",
3
+ "version": "5.0.98-betaRR0",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -1,80 +0,0 @@
1
- import { from, of } from 'rxjs';
2
- import { catchError, filter, mergeMap } from 'rxjs/operators';
3
- import { convertHHMMStrToMinutes } from '../../../../commonStateTypes/fiscalYearHelpers/formatMinutesToFromHHMM';
4
- import { openSnackbar } from '../../../../entity/snackbar/snackbarReducer';
5
- import { appendSubTaskId, updateTasks, } from '../../../../entity/task/taskReducer';
6
- import { getTaskById } from '../../../../entity/task/taskSelector';
7
- import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
8
- import { updateTaskListOnNewTaskCreationSuccess } from '../../taskListView/taskListReducer';
9
- import { createSubTask, createSubTaskSuccessOrFailure, } from '../taskDetailReducer';
10
- export const createSubTaskEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(createSubTask.match), mergeMap((action) => {
11
- const state = state$.value;
12
- const parentTask = getTaskById(state.taskState, action.payload.parentTaskId);
13
- const parentTaskGroupId = parentTask?.taskGroupIds[0];
14
- const isTaskListFetched = state.taskListState.fetchState === 'Completed';
15
- const payload = prepareSubTaskPayload(action.payload, parentTaskGroupId);
16
- return zeniAPI
17
- .postAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks`, payload)
18
- .pipe(mergeMap((response) => {
19
- if (isSuccessResponse(response) &&
20
- response.data != null &&
21
- response.data.tasks.length > 0) {
22
- const newTaskId = response.data.tasks[0].task_id;
23
- const actions = [
24
- updateTasks(response.data.tasks),
25
- appendSubTaskId({
26
- parentTaskId: action.payload.parentTaskId,
27
- subTaskId: newTaskId,
28
- }),
29
- createSubTaskSuccessOrFailure({
30
- fetchState: 'Completed',
31
- newTaskId,
32
- }),
33
- openSnackbar({
34
- messageSection: 'create_sub_task',
35
- messageText: 'success',
36
- type: 'success',
37
- }),
38
- ];
39
- if (isTaskListFetched === true && parentTaskGroupId != null) {
40
- actions.push(updateTaskListOnNewTaskCreationSuccess({
41
- taskGroupId: parentTaskGroupId,
42
- task: response.data.tasks[0],
43
- }));
44
- }
45
- return from(actions);
46
- }
47
- else {
48
- return of(createSubTaskSuccessOrFailure({
49
- fetchState: 'Error',
50
- error: response.status,
51
- }), openSnackbar({
52
- messageSection: 'create_sub_task',
53
- messageText: 'failed',
54
- type: 'error',
55
- variables: [
56
- {
57
- variableName: '_api-error_',
58
- variableValue: response.status.message,
59
- },
60
- ],
61
- }));
62
- }
63
- }), catchError((error) => of(createSubTaskSuccessOrFailure({
64
- fetchState: 'Error',
65
- error: createZeniAPIStatus('Unexpected Error', 'Create Sub Task REST API call errored out' +
66
- JSON.stringify(error)),
67
- }))));
68
- }));
69
- const prepareSubTaskPayload = (subTask, parentTaskGroupId) => ({
70
- name: subTask.name,
71
- assignees: subTask.assignee,
72
- description: subTask.description,
73
- priority: subTask.priority,
74
- status: subTask.status,
75
- tags: subTask.tagIds,
76
- time_spent: convertHHMMStrToMinutes(subTask.timeSpent),
77
- group_assignees: subTask.groupAssignees,
78
- parent_task_id: subTask.parentTaskId,
79
- task_group_ids: parentTaskGroupId == null ? [] : [parentTaskGroupId],
80
- });
@@ -1,36 +0,0 @@
1
- import { of } from 'rxjs';
2
- import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
- import { updateTasks } from '../../../../entity/task/taskReducer';
4
- import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
5
- import { fetchSubTasks, updateSubTasks, updateSubTasksFetchStatus, } from '../taskDetailReducer';
6
- export const fetchSubTasksEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchSubTasks.match), switchMap((action) => {
7
- const { parentTaskId } = action.payload;
8
- const query = JSON.stringify({
9
- task_type: 'subtasks',
10
- parent_task_id: parentTaskId,
11
- });
12
- return zeniAPI
13
- .getJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks?query=${encodeURIComponent(query)}`)
14
- .pipe(mergeMap((response) => {
15
- if (isSuccessResponse(response) && response.data != null) {
16
- const { tasks } = response.data;
17
- return of(updateTasks(tasks), updateSubTasks({
18
- parentTaskId,
19
- }));
20
- }
21
- else {
22
- return of(updateSubTasksFetchStatus({
23
- parentTaskId,
24
- fetchState: 'Error',
25
- error: response.status,
26
- }));
27
- }
28
- }), catchError((error) => {
29
- return of(updateSubTasksFetchStatus({
30
- parentTaskId,
31
- fetchState: 'Error',
32
- error: createZeniAPIStatus('Unexpected Error', 'Fetch Sub Tasks REST API call errored out' +
33
- JSON.stringify(error)),
34
- }));
35
- }));
36
- }));
@@ -1,9 +0,0 @@
1
- import { ActionsObservable, StateObservable } from 'redux-observable';
2
- import { openSnackbar } from '../../../../entity/snackbar/snackbarReducer';
3
- import { appendSubTaskId, updateTasks } from '../../../../entity/task/taskReducer';
4
- import { RootState } from '../../../../reducer';
5
- import { ZeniAPI } from '../../../../zeniAPI';
6
- import { updateTaskListOnNewTaskCreationSuccess } from '../../taskListView/taskListReducer';
7
- import { createSubTask, createSubTaskSuccessOrFailure } from '../taskDetailReducer';
8
- export type ActionType = ReturnType<typeof createSubTask> | ReturnType<typeof updateTasks> | ReturnType<typeof appendSubTaskId> | ReturnType<typeof openSnackbar> | ReturnType<typeof updateTaskListOnNewTaskCreationSuccess> | ReturnType<typeof createSubTaskSuccessOrFailure>;
9
- export declare const createSubTaskEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => import("rxjs").Observable<ActionType>;