@zeniai/client-epic-state 5.0.11-betaND1 → 5.0.11-betaRR2

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 (71) 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 -1
  6. package/lib/entity/task/taskPayload.js +5 -3
  7. package/lib/entity/task/taskState.d.ts +3 -1
  8. package/lib/entity/transaction/stateTypes/attachment.d.ts +2 -2
  9. package/lib/epic.d.ts +3 -2
  10. package/lib/epic.js +3 -2
  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 -3
  14. package/lib/esm/epic.js +3 -2
  15. package/lib/esm/index.js +4 -4
  16. package/lib/esm/view/spendManagement/billPay/billDetailView/epics/fetchBillDetailEpic.js +5 -5
  17. package/lib/esm/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +3 -0
  18. package/lib/esm/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +5 -0
  19. package/lib/esm/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +1 -0
  20. package/lib/esm/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -0
  21. package/lib/esm/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +65 -0
  22. package/lib/esm/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +56 -0
  23. package/lib/esm/view/taskManager/taskDetailView/taskDetail.js +4 -0
  24. package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +51 -1
  25. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +15 -2
  26. package/lib/esm/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +56 -21
  27. package/lib/esm/view/taskManager/taskListView/epics/dragNDropTasksEpic.js +1 -0
  28. package/lib/esm/view/taskManager/taskListView/epics/fetchTaskListEpic.js +12 -5
  29. package/lib/esm/view/taskManager/taskListView/epics/updateTaskFromListViewEpic.js +3 -2
  30. package/lib/esm/view/taskManager/taskListView/taskList.js +7 -0
  31. package/lib/esm/view/taskManager/taskListView/taskListPayload.js +1 -5
  32. package/lib/esm/view/taskManager/taskListView/taskListReducer.js +89 -39
  33. package/lib/esm/view/taskManager/taskListView/taskListSelector.js +51 -65
  34. package/lib/index.d.ts +4 -4
  35. package/lib/index.js +9 -6
  36. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  37. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  38. package/lib/view/spendManagement/billPay/billDetailView/epics/fetchBillDetailEpic.js +5 -5
  39. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.d.ts +2 -1
  40. package/lib/view/taskManager/taskDetailView/epics/archiveTaskEpic.js +3 -0
  41. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.d.ts +2 -1
  42. package/lib/view/taskManager/taskDetailView/epics/deleteTaskEpic.js +5 -0
  43. package/lib/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +1 -0
  44. package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -0
  45. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.d.ts +9 -0
  46. package/lib/view/taskManager/taskDetailView/epics/snoozeTaskEpic.js +69 -0
  47. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.d.ts +9 -0
  48. package/lib/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +60 -0
  49. package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +2 -0
  50. package/lib/view/taskManager/taskDetailView/taskDetail.js +4 -0
  51. package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +10 -1
  52. package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +52 -2
  53. package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +5 -0
  54. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +15 -2
  55. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.d.ts +6 -7
  56. package/lib/view/taskManager/taskListView/epics/bulkUpdateTaskListEpic.js +56 -22
  57. package/lib/view/taskManager/taskListView/epics/dragNDropTasksEpic.js +1 -0
  58. package/lib/view/taskManager/taskListView/epics/fetchTaskListEpic.js +12 -5
  59. package/lib/view/taskManager/taskListView/epics/updateTaskFromListViewEpic.js +3 -2
  60. package/lib/view/taskManager/taskListView/taskList.d.ts +14 -3
  61. package/lib/view/taskManager/taskListView/taskList.js +8 -1
  62. package/lib/view/taskManager/taskListView/taskListPayload.d.ts +4 -31
  63. package/lib/view/taskManager/taskListView/taskListPayload.js +0 -7
  64. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +9 -9
  65. package/lib/view/taskManager/taskListView/taskListReducer.js +90 -40
  66. package/lib/view/taskManager/taskListView/taskListSelector.d.ts +10 -7
  67. package/lib/view/taskManager/taskListView/taskListSelector.js +51 -65
  68. package/package.json +2 -2
  69. package/lib/esm/view/taskManager/taskListView/epics/createSubtaskFromListViewEpic.js +0 -31
  70. package/lib/view/taskManager/taskListView/epics/createSubtaskFromListViewEpic.d.ts +0 -8
  71. package/lib/view/taskManager/taskListView/epics/createSubtaskFromListViewEpic.js +0 -35
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getTaskPayload = exports.getTasksListPayload = exports.bulkUpdateTaskListEpic = void 0;
6
+ exports.getTaskPayload = exports.bulkUpdateTaskListEpic = void 0;
7
7
  const get_1 = __importDefault(require("lodash/get"));
8
8
  const rxjs_1 = require("rxjs");
9
9
  const operators_1 = require("rxjs/operators");
@@ -12,20 +12,25 @@ const formatZeniDateFY_1 = require("../../../../commonStateTypes/fiscalYearHelpe
12
12
  const taskReducer_1 = require("../../../../entity/task/taskReducer");
13
13
  const responsePayload_1 = require("../../../../responsePayload");
14
14
  const taskListReducer_1 = require("../taskListReducer");
15
- const bulkUpdateTaskListEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskListReducer_1.bulkUpdateTaskList.match), (0, operators_1.switchMap)((action) => {
16
- const state = state$.value;
15
+ const bulkUpdateTaskListEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskListReducer_1.bulkUpdateTaskList.match), (0, operators_1.switchMap)((action) => {
17
16
  const { taskIds, updates, groupId } = action.payload;
18
- const payload = {
19
- tasks: (0, exports.getTasksListPayload)(state, taskIds, updates),
20
- };
17
+ const bulkUpdates = toBulkUpdatesPayload(updates);
18
+ if (groupId != null) {
19
+ bulkUpdates.task_group_ids = [groupId];
20
+ }
21
+ const payload = { task_ids: taskIds, updates: bulkUpdates };
21
22
  return zeniAPI
22
- .putAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks`, payload)
23
+ .putAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks/bulk-update`, payload)
23
24
  .pipe((0, operators_1.mergeMap)((response) => {
24
25
  if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
26
+ const removeFromList = updates.isArchived === true ||
27
+ updates.isDeleted === true ||
28
+ ('snoozedUntil' in updates && updates.snoozedUntil != null);
25
29
  return (0, rxjs_1.of)((0, taskReducer_1.updateTasks)(response.data.tasks), (0, taskListReducer_1.updateTasksListOnBulkUpdateTasksSuccess)({
26
30
  taskIds,
27
31
  groupId,
28
- }));
32
+ removeFromList,
33
+ }), (0, taskListReducer_1.fetchTaskList)());
29
34
  }
30
35
  else {
31
36
  return (0, rxjs_1.of)((0, taskListReducer_1.updateTasksListOnBulkUpdateTasksFailure)({
@@ -40,21 +45,47 @@ const bulkUpdateTaskListEpic = (actions$, state$, zeniAPI) => actions$.pipe((0,
40
45
  }));
41
46
  }));
42
47
  exports.bulkUpdateTaskListEpic = bulkUpdateTaskListEpic;
43
- const getTasksListPayload = (state, taskIds, updates) => {
44
- const { taskState } = state;
45
- const tasksList = taskIds
46
- .map((taskId) => {
47
- const task = (0, get_1.default)(taskState.taskByID, taskId);
48
- return {
49
- ...task,
50
- ...updates,
51
- };
52
- })
53
- .filter((task) => task != null);
54
- const tasksPayload = tasksList.map((task) => toTaskPayload(state, task));
55
- return tasksPayload;
48
+ /**
49
+ * Helpers
50
+ */
51
+ const toBulkUpdatesPayload = (updates) => {
52
+ const payload = {};
53
+ if (updates.status != null) {
54
+ payload.status = updates.status.code;
55
+ }
56
+ if (updates.priority != null) {
57
+ payload.priority = updates.priority.code;
58
+ }
59
+ if (updates.assignees != null) {
60
+ payload.assignees = updates.assignees;
61
+ }
62
+ if (updates.groupAssignees != null) {
63
+ payload.group_assignees = updates.groupAssignees;
64
+ }
65
+ if (updates.dueDate != null) {
66
+ payload.due_date = updates.dueDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT);
67
+ }
68
+ if (updates.tagIds != null) {
69
+ payload.tags = updates.tagIds;
70
+ }
71
+ if (updates.timeSpent != null) {
72
+ payload.time_spent = (0, formatMinutesToFromHHMM_1.convertHHMMStrToMinutes)(updates.timeSpent.replace(/\D/g, ''));
73
+ }
74
+ if (updates.isArchived != null) {
75
+ payload.is_archived = updates.isArchived;
76
+ }
77
+ if (updates.isDeleted != null) {
78
+ payload.is_deleted = updates.isDeleted;
79
+ }
80
+ // Bulk snooze is not supported — only bulk unsnooze (clear all snooze fields)
81
+ if ('snoozedUntil' in updates) {
82
+ payload.snoozed_until = null;
83
+ payload.snoozed_by = null;
84
+ payload.snoozed_at = null;
85
+ payload.is_snooze_notification_sent = false;
86
+ }
87
+ return payload;
56
88
  };
57
- exports.getTasksListPayload = getTasksListPayload;
58
89
  const getTaskPayload = (state, taskId, updates) => {
59
90
  const { taskState } = state;
60
91
  const taskData = (0, get_1.default)(taskState.taskByID, taskId);
@@ -80,6 +111,9 @@ const toTaskPayload = (state, task) => {
80
111
  assignees: task.assignees,
81
112
  description: task.description,
82
113
  group_assignees: task.groupAssignees,
114
+ is_archived: task.isArchived,
115
+ is_deleted: task.isDeleted,
116
+ snoozed_until: task.snoozedUntil != null ? task.snoozedUntil.toISOString() : null,
83
117
  due_date: task.dueDate != null ? task.dueDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT) : null,
84
118
  priority: task.priority.code,
85
119
  status: task.status.code,
@@ -14,6 +14,7 @@ const dragNDropTasksEpic = (actions$, state$) => actions$.pipe((0, operators_1.f
14
14
  (0, taskListReducer_1.updateTasksListOnBulkUpdateTasksSuccess)({
15
15
  taskIds,
16
16
  groupId,
17
+ removeFromList: false,
17
18
  }),
18
19
  (0, taskListReducer_1.bulkUpdateTaskList)(taskIds, groupId, updates),
19
20
  ];
@@ -6,19 +6,26 @@ const operators_1 = require("rxjs/operators");
6
6
  const tagReducer_1 = require("../../../../entity/tag/tagReducer");
7
7
  const taskReducer_1 = require("../../../../entity/task/taskReducer");
8
8
  const responsePayload_1 = require("../../../../responsePayload");
9
- const taskListPayload_1 = require("../taskListPayload");
10
9
  const taskListReducer_1 = require("../taskListReducer");
11
10
  const fetchTaskListEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskListReducer_1.fetchTaskList.match), (0, operators_1.switchMap)(() => {
12
11
  return zeniAPI
13
12
  .getJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks?query=${encodeURIComponent(`{"task_type": "all"}`)}`)
14
13
  .pipe((0, operators_1.mergeMap)((response) => {
15
14
  if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
16
- const { tasks } = response.data;
17
- const tasksForEntity = (0, taskListPayload_1.flattenTasksAndSubtasksForEntity)(tasks);
18
- return (0, rxjs_1.of)((0, taskReducer_1.updateTasks)(tasksForEntity), (0, taskListReducer_1.updateTaskList)({
15
+ const { tasks, deleted, archived, snoozed } = response.data;
16
+ const allTasks = [
17
+ ...tasks,
18
+ ...(deleted ?? []),
19
+ ...(archived ?? []),
20
+ ...(snoozed ?? []),
21
+ ];
22
+ return (0, rxjs_1.of)((0, taskReducer_1.updateTasks)(allTasks), (0, taskListReducer_1.updateTaskList)({
19
23
  data: tasks,
24
+ deleted: deleted ?? [],
25
+ archived: archived ?? [],
26
+ snoozed: snoozed ?? [],
20
27
  updateType: 'replace',
21
- }), (0, tagReducer_1.updateTags)(tasksForEntity.map((task) => task.tags).flat()));
28
+ }), (0, tagReducer_1.updateTags)(allTasks.map((task) => task.tags).flat()));
22
29
  }
23
30
  else {
24
31
  return (0, rxjs_1.of)((0, taskListReducer_1.updateTaskListFetchStatus)({
@@ -11,9 +11,10 @@ const updateTaskFromListViewEpic = (actions$, state$, zeniAPI) => actions$.pipe(
11
11
  const state = state$.value;
12
12
  const { task, updates } = action.payload;
13
13
  const taskId = task.id;
14
- const taskData = (0, bulkUpdateTaskListEpic_1.getTaskPayload)(state, taskId, updates);
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ const { snoozed_until: _snoozedUntil, ...taskData } = (0, bulkUpdateTaskListEpic_1.getTaskPayload)(state, taskId, updates);
15
16
  return zeniAPI
16
- .putAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks/${taskId}`, { ...taskData })
17
+ .putAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks/${taskId}`, taskData)
17
18
  .pipe((0, operators_1.mergeMap)((response) => {
18
19
  if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
19
20
  return (0, rxjs_1.from)([
@@ -3,6 +3,17 @@ import { PriorityCodeType, TaskStatusCodeType } from '../../../entity/task/taskS
3
3
  import { ZeniDate } from '../../../zeniDayJS';
4
4
  import { SpendManagementUIState } from '../../spendManagement/billPay/billList/billListState';
5
5
  import { CategoryCombinationOperator, FilterCategoryType } from '../../spendManagement/spendManagementFilterHelpers';
6
+ export declare const ALL_TASK_LIST_TABS: readonly ["live", "archived", "deleted", "snoozed"];
7
+ export type TaskListTab = (typeof ALL_TASK_LIST_TABS)[number];
8
+ export interface TaskListTabData {
9
+ taskIds: ID[];
10
+ taskIdsByAssignees: Record<ID, ID[]>;
11
+ taskIdsByDueDate: Record<DueDateGroupKey, ID[]>;
12
+ taskIdsByGroupsIds: Record<ID, ID[]>;
13
+ taskIdsByPriority: Record<PriorityCodeType, ID[]>;
14
+ taskIdsByStatus: Record<TaskStatusCodeType, ID[]>;
15
+ taskIdsByTags: Record<ID, ID[]>;
16
+ }
6
17
  export interface TaskListLocalData {
7
18
  defaultTaskGroupId: ID | null;
8
19
  existingTaskGroupNamesByGroupId: Record<ID, string>;
@@ -13,10 +24,10 @@ export declare const DUE_DATE_GROUP_KEYS: readonly ["overdue", "today", "this_we
13
24
  export declare const toDueDateGroupKeyType: (v: string) => "overdue" | "today" | "this_week" | "this_month" | "upcoming";
14
25
  export declare type DueDateGroupKey = ReturnType<typeof toDueDateGroupKeyType>;
15
26
  export interface TaskListState extends FetchedState {
27
+ byTab: Record<TaskListTab, TaskListTabData>;
28
+ currentTab: TaskListTab;
16
29
  filters: TaskListFilters;
17
30
  localData: TaskListLocalData;
18
- /** Maps each list (parent) task id to ordered subtask ids from the last list fetch. */
19
- subtaskIdsByParentTaskId: Record<ID, ID[]>;
20
31
  taskIds: ID[];
21
32
  taskIdsByAssignees: Record<ID, ID[]>;
22
33
  taskIdsByDueDate: Record<DueDateGroupKey, ID[]>;
@@ -47,7 +58,7 @@ export interface TaskListUIState extends SpendManagementUIState {
47
58
  searchText: string;
48
59
  sortKey: TaskListViewSortKey;
49
60
  }
50
- declare const toTaskListSortKeyType: (v: string) => "status" | "name" | "dueDate" | "tag" | "priority" | "timeSpent" | "assignee" | "creationDate";
61
+ declare const toTaskListSortKeyType: (v: string) => "status" | "name" | "dueDate" | "tag" | "priority" | "timeSpent" | "assignee" | "creationDate" | "visibility";
51
62
  export declare type TaskListViewSortKey = ReturnType<typeof toTaskListSortKeyType>;
52
63
  export declare const TASK_LIST_FILTER_CATEGORIES: TaskListFilterCategoryOption[];
53
64
  interface TaskListFilterCategoryOption {
@@ -1,7 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TASK_LIST_GROUP_BY_CATEGORIES = exports.TASK_LIST_FILTER_CATEGORIES = exports.toTaskListGroupByKeyTypeStrict = exports.toTaskListGroupByKeyType = exports.TASK_LIST_GROUP_BY_KEYS = exports.toDueDateGroupKeyType = exports.DUE_DATE_GROUP_KEYS = void 0;
3
+ exports.TASK_LIST_GROUP_BY_CATEGORIES = exports.TASK_LIST_FILTER_CATEGORIES = exports.toTaskListGroupByKeyTypeStrict = exports.toTaskListGroupByKeyType = exports.TASK_LIST_GROUP_BY_KEYS = exports.toDueDateGroupKeyType = exports.DUE_DATE_GROUP_KEYS = exports.ALL_TASK_LIST_TABS = void 0;
4
4
  const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
5
+ exports.ALL_TASK_LIST_TABS = [
6
+ 'live',
7
+ 'archived',
8
+ 'deleted',
9
+ 'snoozed',
10
+ ];
5
11
  exports.DUE_DATE_GROUP_KEYS = [
6
12
  'overdue',
7
13
  'today',
@@ -32,6 +38,7 @@ const ALL_TASK_LIST_SORT_KEYS = [
32
38
  'status',
33
39
  'priority',
34
40
  'timeSpent',
41
+ 'visibility',
35
42
  ];
36
43
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
44
  const toTaskListSortKeyType = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_TASK_LIST_SORT_KEYS);
@@ -1,37 +1,10 @@
1
- import { ID } from '../../../commonStateTypes/common';
2
1
  import { TaskPayload } from '../../../entity/task/taskPayload';
3
2
  import { ZeniAPIResponse } from '../../../responsePayload';
4
- /**
5
- * Task row returned by the task list API. Subtasks share the same wire shape
6
- * as tasks but are nested under their parent and indexed separately in list state.
7
- */
8
- export interface TaskListTaskPayload extends TaskPayload {
9
- subtasks?: TaskPayload[];
10
- }
11
3
  interface FetchTaskListPayload {
12
- tasks: TaskListTaskPayload[];
4
+ tasks: TaskPayload[];
5
+ archived?: TaskPayload[];
6
+ deleted?: TaskPayload[];
7
+ snoozed?: TaskPayload[];
13
8
  }
14
9
  export type FetchTaskListResponse = ZeniAPIResponse<FetchTaskListPayload>;
15
- /** Request body for POST `/task-manager/tasks` when creating a subtask from the list view. */
16
- export interface CreateSubtaskFromListViewPayload {
17
- assignees: string[];
18
- description: string;
19
- due_date: string | null;
20
- file_ids: string[];
21
- group_assignees: string[];
22
- name: string;
23
- parent_task_id: ID;
24
- priority: string;
25
- recurring_end_date: string | null;
26
- recurring_frequency: string | null;
27
- recurring_start_date: string | null;
28
- status: string;
29
- sync_token: string;
30
- tags: string[];
31
- task_group_ids: string[];
32
- time_spent: number;
33
- type: string;
34
- }
35
- /** Parent tasks and nested subtasks as flat `TaskPayload`s for `updateTasks`. */
36
- export declare const flattenTasksAndSubtasksForEntity: (tasks: TaskListTaskPayload[]) => TaskPayload[];
37
10
  export {};
@@ -1,9 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flattenTasksAndSubtasksForEntity = void 0;
4
- /** Parent tasks and nested subtasks as flat `TaskPayload`s for `updateTasks`. */
5
- const flattenTasksAndSubtasksForEntity = (tasks) => tasks.flatMap((task) => {
6
- const { subtasks, ...parent } = task;
7
- return [parent, ...(subtasks ?? [])];
8
- });
9
- exports.flattenTasksAndSubtasksForEntity = flattenTasksAndSubtasksForEntity;
@@ -5,15 +5,17 @@ import { TaskGroupPayload } from '../../../entity/taskGroup/taskGroupPayload';
5
5
  import { TaskGroup } from '../../../entity/taskGroup/taskGroupState';
6
6
  import { ZeniAPIStatus } from '../../../responsePayload';
7
7
  import { TaskListFilters, TaskListLocalData, TaskListState, TaskListUIState } from './taskList';
8
- import { CreateSubtaskFromListViewPayload, TaskListTaskPayload } from './taskListPayload';
9
8
  export declare const initialState: TaskListState;
10
9
  export declare const fetchTaskListPage: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride: boolean, isTaskTemplatesEnabled: boolean], {
11
10
  cacheOverride: boolean;
12
11
  isTaskTemplatesEnabled: boolean;
13
12
  }, "taskList/fetchTaskListPage", never, never>, fetchTaskList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"taskList/fetchTaskList">, updateTaskList: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
14
- data: TaskListTaskPayload[];
13
+ data: TaskPayload[];
15
14
  updateType: UpdateType;
16
- }, "taskList/updateTaskList">, updateTaskListFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
15
+ archived?: TaskPayload[];
16
+ deleted?: TaskPayload[];
17
+ snoozed?: TaskPayload[];
18
+ }, "taskList/updateTaskList">, updateTaskListTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"deleted" | "live" | "archived" | "snoozed", "taskList/updateTaskListTab">, updateTaskListFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
17
19
  fetchState: FetchState;
18
20
  error?: ZeniAPIStatus;
19
21
  }, "taskList/updateTaskListFetchStatus">, updateTaskListSearchText: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -30,6 +32,7 @@ export declare const fetchTaskListPage: import("@reduxjs/toolkit").ActionCreator
30
32
  groupId: string;
31
33
  }, "taskList/bulkUpdateTaskList", never, never>, updateTasksListOnBulkUpdateTasksSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
32
34
  groupId: ID | null;
35
+ removeFromList: boolean;
33
36
  taskIds: ID[];
34
37
  }, "taskList/updateTasksListOnBulkUpdateTasksSuccess">, updateTasksListOnBulkUpdateTasksFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
35
38
  error: ZeniAPIStatus;
@@ -49,16 +52,13 @@ export declare const fetchTaskListPage: import("@reduxjs/toolkit").ActionCreator
49
52
  }, "taskList/updateTaskListOnNewTaskCreationSuccess">, updateTaskListOnTaskGroupNameUpdate: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
50
53
  taskGroupId: ID;
51
54
  taskGroupName: ID;
52
- }, "taskList/updateTaskListOnTaskGroupNameUpdate">, createSubtaskFromListView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: CreateSubtaskFromListViewPayload], CreateSubtaskFromListViewPayload, "taskList/createSubtaskFromListView", never, never>, updateTaskFromListView: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
55
+ }, "taskList/updateTaskListOnTaskGroupNameUpdate">, updateTaskFromListView: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
53
56
  task: Task;
54
57
  updates: Partial<Task>;
55
- }, "taskList/updateTaskFromListView">, updateTasksListOnCreateSubtaskFromListViewSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
56
- parentTaskId: ID;
57
- subtaskId: ID;
58
- }, "taskList/updateTasksListOnCreateSubtaskFromListViewSuccess">, updateTasksListOnUpdateTaskSuccess: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"taskList/updateTasksListOnUpdateTaskSuccess">, updateTasksListOnUpdateTaskFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
58
+ }, "taskList/updateTaskFromListView">, updateTasksListOnUpdateTaskSuccess: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"taskList/updateTasksListOnUpdateTaskSuccess">, updateTasksListOnUpdateTaskFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
59
59
  error: ZeniAPIStatus;
60
60
  }, "taskList/updateTasksListOnUpdateTaskFailure">, updateTaskListOnCreateTaskFromTemplateSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
61
61
  tasks: TaskPayload[];
62
- }, "taskList/updateTaskListOnCreateTaskFromTemplateSuccess">, clearTaskList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"taskList/clearTaskList">;
62
+ }, "taskList/updateTaskListOnCreateTaskFromTemplateSuccess">, removeTaskFromList: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "taskList/removeTaskFromList">, clearTaskList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"taskList/clearTaskList">;
63
63
  declare const _default: import("redux").Reducer<TaskListState>;
64
64
  export default _default;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.clearTaskList = exports.updateTaskListOnCreateTaskFromTemplateSuccess = exports.updateTasksListOnUpdateTaskFailure = exports.updateTasksListOnUpdateTaskSuccess = exports.updateTasksListOnCreateSubtaskFromListViewSuccess = exports.updateTaskFromListView = exports.createSubtaskFromListView = exports.updateTaskListOnTaskGroupNameUpdate = exports.updateTaskListOnNewTaskCreationSuccess = exports.dragNDropTasks = exports.updateTaskListOnTaskGroupDeletion = exports.updateTaskListLocalData = exports.initiateTaskListLocalData = exports.updateTasksListOnBulkUpdateTasksFailure = exports.updateTasksListOnBulkUpdateTasksSuccess = exports.bulkUpdateTaskList = exports.updateTaskListOnNewGroupCreationSuccess = exports.updateTaskFilters = exports.updateTaskListUIState = exports.updateTaskListSearchText = exports.updateTaskListFetchStatus = exports.updateTaskList = exports.fetchTaskList = exports.fetchTaskListPage = exports.initialState = void 0;
4
+ exports.clearTaskList = exports.removeTaskFromList = exports.updateTaskListOnCreateTaskFromTemplateSuccess = exports.updateTasksListOnUpdateTaskFailure = exports.updateTasksListOnUpdateTaskSuccess = exports.updateTaskFromListView = exports.updateTaskListOnTaskGroupNameUpdate = exports.updateTaskListOnNewTaskCreationSuccess = exports.dragNDropTasks = exports.updateTaskListOnTaskGroupDeletion = exports.updateTaskListLocalData = exports.initiateTaskListLocalData = exports.updateTasksListOnBulkUpdateTasksFailure = exports.updateTasksListOnBulkUpdateTasksSuccess = exports.bulkUpdateTaskList = exports.updateTaskListOnNewGroupCreationSuccess = exports.updateTaskFilters = exports.updateTaskListUIState = exports.updateTaskListSearchText = exports.updateTaskListFetchStatus = exports.updateTaskListTab = exports.updateTaskList = exports.fetchTaskList = exports.fetchTaskListPage = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const taskState_1 = require("../../../entity/task/taskState");
7
7
  const zeniDayJS_1 = require("../../../zeniDayJS");
@@ -33,8 +33,23 @@ const initialTaskIdsByDueDate = {
33
33
  today: [],
34
34
  upcoming: [],
35
35
  };
36
+ const initialTabData = {
37
+ taskIds: [],
38
+ taskIdsByAssignees: {},
39
+ taskIdsByDueDate: { ...initialTaskIdsByDueDate },
40
+ taskIdsByGroupsIds: {},
41
+ taskIdsByPriority: { ...initialTaskIdsByPriority },
42
+ taskIdsByStatus: { ...initialTaskIdsByStatus },
43
+ taskIdsByTags: {},
44
+ };
36
45
  exports.initialState = {
37
- subtaskIdsByParentTaskId: {},
46
+ currentTab: 'live',
47
+ byTab: {
48
+ live: { ...initialTabData },
49
+ archived: { ...initialTabData },
50
+ deleted: { ...initialTabData },
51
+ snoozed: { ...initialTabData },
52
+ },
38
53
  taskIds: [],
39
54
  taskIdsByGroupsIds: {},
40
55
  taskIdsByPriority: initialTaskIdsByPriority,
@@ -91,18 +106,30 @@ const taskList = (0, toolkit_1.createSlice)({
91
106
  draft.error = undefined;
92
107
  },
93
108
  updateTaskList(draft, action) {
94
- const { data } = action.payload;
109
+ const { data, archived, deleted, snoozed } = action.payload;
95
110
  draft.fetchState = 'Completed';
96
111
  draft.error = undefined;
97
- draft.subtaskIdsByParentTaskId = buildSubtaskIdsByParentTaskId(data);
98
- const { taskIds, taskIdsGroupedByPriority, taskIdsByGroupIds, taskIdsGroupedByStatus, taskIdsByAssignees, taskIdsByDueDate, taskIdsByTags, } = getGroupedTaskIds(data);
99
- draft.taskIds = taskIds;
100
- draft.taskIdsByGroupsIds = taskIdsByGroupIds;
101
- draft.taskIdsByPriority = taskIdsGroupedByPriority;
102
- draft.taskIdsByStatus = taskIdsGroupedByStatus;
103
- draft.taskIdsByAssignees = taskIdsByAssignees;
104
- draft.taskIdsByDueDate = taskIdsByDueDate;
105
- draft.taskIdsByTags = taskIdsByTags;
112
+ // Group live tasks
113
+ const liveGrouped = getGroupedTaskIds(data);
114
+ draft.byTab.live = toTabData(liveGrouped);
115
+ // Group other tabs if provided
116
+ if (archived != null) {
117
+ draft.byTab.archived = toTabData(getGroupedTaskIds(archived));
118
+ }
119
+ if (deleted != null) {
120
+ draft.byTab.deleted = toTabData(getGroupedTaskIds(deleted));
121
+ }
122
+ if (snoozed != null) {
123
+ draft.byTab.snoozed = toTabData(getGroupedTaskIds(snoozed));
124
+ }
125
+ // Copy active tab data to top-level fields
126
+ const activeTabData = draft.byTab[draft.currentTab];
127
+ copyTabDataToTopLevel(draft, activeTabData);
128
+ },
129
+ updateTaskListTab(draft, action) {
130
+ draft.currentTab = action.payload;
131
+ const activeTabData = draft.byTab[action.payload];
132
+ copyTabDataToTopLevel(draft, activeTabData);
106
133
  },
107
134
  initiateTaskListLocalData(draft, action) {
108
135
  const { taskGroupById } = action.payload;
@@ -190,10 +217,13 @@ const taskList = (0, toolkit_1.createSlice)({
190
217
  },
191
218
  },
192
219
  updateTasksListOnBulkUpdateTasksSuccess(draft, action) {
193
- const { taskIds, groupId } = action.payload;
220
+ const { taskIds, groupId, removeFromList } = action.payload;
194
221
  draft.updateTasksFetchState.fetchState = 'Completed';
195
222
  draft.updateTasksFetchState.error = undefined;
196
- if (groupId != null) {
223
+ if (removeFromList) {
224
+ removeTaskIds(draft, taskIds);
225
+ }
226
+ else if (groupId != null) {
197
227
  const { groupByKey } = draft.uiState;
198
228
  if (groupByKey === 'groupName') {
199
229
  Object.keys(draft.taskIdsByGroupsIds).forEach((gId) => {
@@ -346,17 +376,6 @@ const taskList = (0, toolkit_1.createSlice)({
346
376
  [taskGroupId]: taskGroupName,
347
377
  };
348
378
  },
349
- createSubtaskFromListView: {
350
- reducer(draft) {
351
- draft.updateTasksFetchState = {
352
- fetchState: 'In-Progress',
353
- error: undefined,
354
- };
355
- },
356
- prepare(payload) {
357
- return { payload };
358
- },
359
- },
360
379
  updateTaskFromListView(draft, action) {
361
380
  const { updates, task } = action.payload;
362
381
  const taskId = task.id;
@@ -413,13 +432,6 @@ const taskList = (0, toolkit_1.createSlice)({
413
432
  }
414
433
  }
415
434
  },
416
- updateTasksListOnCreateSubtaskFromListViewSuccess(draft, action) {
417
- const { parentTaskId, subtaskId } = action.payload;
418
- draft.updateTasksFetchState.fetchState = 'Completed';
419
- draft.updateTasksFetchState.error = undefined;
420
- const existing = draft.subtaskIdsByParentTaskId[parentTaskId] ?? [];
421
- draft.subtaskIdsByParentTaskId[parentTaskId] = [...existing, subtaskId];
422
- },
423
435
  updateTasksListOnUpdateTaskSuccess(draft) {
424
436
  draft.updateTasksFetchState.fetchState = 'Completed';
425
437
  draft.updateTasksFetchState.error = undefined;
@@ -428,12 +440,15 @@ const taskList = (0, toolkit_1.createSlice)({
428
440
  draft.updateTasksFetchState.fetchState = 'Error';
429
441
  draft.updateTasksFetchState.error = action.payload.error;
430
442
  },
443
+ removeTaskFromList(draft, action) {
444
+ removeTaskIds(draft, [action.payload]);
445
+ },
431
446
  clearTaskList(draft) {
432
447
  Object.assign(draft, exports.initialState);
433
448
  },
434
449
  },
435
450
  });
436
- _a = taskList.actions, exports.fetchTaskListPage = _a.fetchTaskListPage, exports.fetchTaskList = _a.fetchTaskList, exports.updateTaskList = _a.updateTaskList, exports.updateTaskListFetchStatus = _a.updateTaskListFetchStatus, exports.updateTaskListSearchText = _a.updateTaskListSearchText, exports.updateTaskListUIState = _a.updateTaskListUIState, exports.updateTaskFilters = _a.updateTaskFilters, exports.updateTaskListOnNewGroupCreationSuccess = _a.updateTaskListOnNewGroupCreationSuccess, exports.bulkUpdateTaskList = _a.bulkUpdateTaskList, exports.updateTasksListOnBulkUpdateTasksSuccess = _a.updateTasksListOnBulkUpdateTasksSuccess, exports.updateTasksListOnBulkUpdateTasksFailure = _a.updateTasksListOnBulkUpdateTasksFailure, exports.initiateTaskListLocalData = _a.initiateTaskListLocalData, exports.updateTaskListLocalData = _a.updateTaskListLocalData, exports.updateTaskListOnTaskGroupDeletion = _a.updateTaskListOnTaskGroupDeletion, exports.dragNDropTasks = _a.dragNDropTasks, exports.updateTaskListOnNewTaskCreationSuccess = _a.updateTaskListOnNewTaskCreationSuccess, exports.updateTaskListOnTaskGroupNameUpdate = _a.updateTaskListOnTaskGroupNameUpdate, exports.createSubtaskFromListView = _a.createSubtaskFromListView, exports.updateTaskFromListView = _a.updateTaskFromListView, exports.updateTasksListOnCreateSubtaskFromListViewSuccess = _a.updateTasksListOnCreateSubtaskFromListViewSuccess, exports.updateTasksListOnUpdateTaskSuccess = _a.updateTasksListOnUpdateTaskSuccess, exports.updateTasksListOnUpdateTaskFailure = _a.updateTasksListOnUpdateTaskFailure, exports.updateTaskListOnCreateTaskFromTemplateSuccess = _a.updateTaskListOnCreateTaskFromTemplateSuccess, exports.clearTaskList = _a.clearTaskList;
451
+ _a = taskList.actions, exports.fetchTaskListPage = _a.fetchTaskListPage, exports.fetchTaskList = _a.fetchTaskList, exports.updateTaskList = _a.updateTaskList, exports.updateTaskListTab = _a.updateTaskListTab, exports.updateTaskListFetchStatus = _a.updateTaskListFetchStatus, exports.updateTaskListSearchText = _a.updateTaskListSearchText, exports.updateTaskListUIState = _a.updateTaskListUIState, exports.updateTaskFilters = _a.updateTaskFilters, exports.updateTaskListOnNewGroupCreationSuccess = _a.updateTaskListOnNewGroupCreationSuccess, exports.bulkUpdateTaskList = _a.bulkUpdateTaskList, exports.updateTasksListOnBulkUpdateTasksSuccess = _a.updateTasksListOnBulkUpdateTasksSuccess, exports.updateTasksListOnBulkUpdateTasksFailure = _a.updateTasksListOnBulkUpdateTasksFailure, exports.initiateTaskListLocalData = _a.initiateTaskListLocalData, exports.updateTaskListLocalData = _a.updateTaskListLocalData, exports.updateTaskListOnTaskGroupDeletion = _a.updateTaskListOnTaskGroupDeletion, exports.dragNDropTasks = _a.dragNDropTasks, exports.updateTaskListOnNewTaskCreationSuccess = _a.updateTaskListOnNewTaskCreationSuccess, exports.updateTaskListOnTaskGroupNameUpdate = _a.updateTaskListOnTaskGroupNameUpdate, exports.updateTaskFromListView = _a.updateTaskFromListView, exports.updateTasksListOnUpdateTaskSuccess = _a.updateTasksListOnUpdateTaskSuccess, exports.updateTasksListOnUpdateTaskFailure = _a.updateTasksListOnUpdateTaskFailure, exports.updateTaskListOnCreateTaskFromTemplateSuccess = _a.updateTaskListOnCreateTaskFromTemplateSuccess, exports.removeTaskFromList = _a.removeTaskFromList, exports.clearTaskList = _a.clearTaskList;
437
452
  exports.default = taskList.reducer;
438
453
  /**
439
454
  * helpers
@@ -512,14 +527,49 @@ const getTagsGroupKey = (tags) => {
512
527
  tagIds.sort();
513
528
  return tagIds.join(',');
514
529
  };
515
- const buildSubtaskIdsByParentTaskId = (tasks) => {
516
- const subtaskIdsByParentTaskId = {};
517
- tasks.forEach((task) => {
518
- if (task.subtasks != null && task.subtasks.length > 0) {
519
- subtaskIdsByParentTaskId[task.task_id] = task.subtasks.map((s) => s.task_id);
520
- }
530
+ const toTabData = (grouped) => ({
531
+ taskIds: grouped.taskIds,
532
+ taskIdsByAssignees: grouped.taskIdsByAssignees,
533
+ taskIdsByDueDate: grouped.taskIdsByDueDate,
534
+ taskIdsByGroupsIds: grouped.taskIdsByGroupIds,
535
+ taskIdsByPriority: grouped.taskIdsGroupedByPriority,
536
+ taskIdsByStatus: grouped.taskIdsGroupedByStatus,
537
+ taskIdsByTags: grouped.taskIdsByTags,
538
+ });
539
+ const copyTabDataToTopLevel = (draft, tabData) => {
540
+ draft.taskIds = tabData.taskIds;
541
+ draft.taskIdsByGroupsIds = tabData.taskIdsByGroupsIds;
542
+ draft.taskIdsByPriority = tabData.taskIdsByPriority;
543
+ draft.taskIdsByStatus = tabData.taskIdsByStatus;
544
+ draft.taskIdsByAssignees = tabData.taskIdsByAssignees;
545
+ draft.taskIdsByDueDate = tabData.taskIdsByDueDate;
546
+ draft.taskIdsByTags = tabData.taskIdsByTags;
547
+ };
548
+ const removeIdsFromTabData = (tabData, taskIds) => {
549
+ const isRemoved = (id) => taskIds.includes(id);
550
+ tabData.taskIds = tabData.taskIds.filter((id) => !isRemoved(id));
551
+ Object.keys(tabData.taskIdsByGroupsIds).forEach((gId) => {
552
+ tabData.taskIdsByGroupsIds[gId] = tabData.taskIdsByGroupsIds[gId].filter((id) => !isRemoved(id));
553
+ });
554
+ Object.keys(tabData.taskIdsByPriority).forEach((key) => {
555
+ tabData.taskIdsByPriority[key] = tabData.taskIdsByPriority[key].filter((id) => !isRemoved(id));
556
+ });
557
+ Object.keys(tabData.taskIdsByStatus).forEach((key) => {
558
+ tabData.taskIdsByStatus[key] = tabData.taskIdsByStatus[key].filter((id) => !isRemoved(id));
521
559
  });
522
- return subtaskIdsByParentTaskId;
560
+ Object.keys(tabData.taskIdsByDueDate).forEach((key) => {
561
+ tabData.taskIdsByDueDate[key] = tabData.taskIdsByDueDate[key].filter((id) => !isRemoved(id));
562
+ });
563
+ Object.keys(tabData.taskIdsByAssignees).forEach((key) => {
564
+ tabData.taskIdsByAssignees[key] = tabData.taskIdsByAssignees[key].filter((id) => !isRemoved(id));
565
+ });
566
+ Object.keys(tabData.taskIdsByTags).forEach((key) => {
567
+ tabData.taskIdsByTags[key] = tabData.taskIdsByTags[key].filter((id) => !isRemoved(id));
568
+ });
569
+ };
570
+ const removeTaskIds = (draft, taskIds) => {
571
+ removeIdsFromTabData(draft, taskIds);
572
+ removeIdsFromTabData(draft.byTab[draft.currentTab], taskIds);
523
573
  };
524
574
  const getGroupedTaskIds = (tasks) => {
525
575
  const taskIds = [];
@@ -1,19 +1,20 @@
1
- import { FetchStateAndError, ID } from '../../../commonStateTypes/common';
1
+ import { FetchStateAndError } from '../../../commonStateTypes/common';
2
2
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
3
3
  import { AddressState } from '../../../entity/address/addressState';
4
4
  import { TagState } from '../../../entity/tag/tagState';
5
5
  import { Task, TaskState } from '../../../entity/task/taskState';
6
6
  import { TaskGroupTemplate } from '../../../entity/taskGroupTemplate/taskGroupTemplateState';
7
7
  import { UserState } from '../../../entity/user/userState';
8
+ import { UserGroupsState } from '../../../entity/userGroups/userGroupsState';
8
9
  import { UserRoleState } from '../../../entity/userRole/userRoleState';
9
10
  import { RootState } from '../../../reducer';
10
11
  import { UserAndRole } from '../../companyView/types/userAndRole';
11
12
  import { UserGroupListSelectorView } from '../../userGroupListView/userGroupListViewSelector';
12
13
  import { UserListSelectorView } from '../../userListView/userListViewSelector';
13
- import { TaskListFilters, TaskListLocalData, TaskListState, TaskListUIState } from './taskList';
14
+ import { TaskListFilters, TaskListLocalData, TaskListState, TaskListTab, TaskListUIState } from './taskList';
14
15
  export interface TaskWithUserDetails extends Task {
15
16
  assigneeUsers: UserAndRole[];
16
- subtasks: TaskWithUserDetails[];
17
+ firstAssigneeSortName: string;
17
18
  }
18
19
  export interface TaskGroupWithTasksList {
19
20
  groupName: string;
@@ -22,10 +23,10 @@ export interface TaskGroupWithTasksList {
22
23
  tasks: TaskWithUserDetails[];
23
24
  }
24
25
  export interface TaskListSelectorView extends SelectorView {
26
+ currentTab: TaskListTab;
25
27
  filters: TaskListFilters;
26
28
  localData: TaskListLocalData;
27
- /** Subtask ids grouped by parent list task id (from the task list API). */
28
- subtaskIdsByParentTaskId: Record<ID, ID[]>;
29
+ tabCounts: Record<TaskListTab, number>;
29
30
  taskCreationFromTemplateStatus: FetchStateAndError;
30
31
  taskGroupCreationStatus: FetchStateAndError;
31
32
  taskGroupDeleteStatus: FetchStateAndError;
@@ -37,11 +38,12 @@ export interface TaskListSelectorView extends SelectorView {
37
38
  userGroupList: UserGroupListSelectorView;
38
39
  userList: UserListSelectorView;
39
40
  }
40
- export declare const getTaskListGroupedByAssignees: ({ taskListState, taskState, userState, userRoleState, addressState, tagState, }: {
41
+ export declare const getTaskListGroupedByAssignees: ({ taskListState, taskState, userState, userRoleState, addressState, tagState, userGroupsState, }: {
41
42
  addressState: AddressState;
42
43
  tagState: TagState;
43
44
  taskListState: TaskListState;
44
45
  taskState: TaskState;
46
+ userGroupsState: UserGroupsState;
45
47
  userRoleState: UserRoleState;
46
48
  userState: UserState;
47
49
  }) => {
@@ -50,11 +52,12 @@ export declare const getTaskListGroupedByAssignees: ({ taskListState, taskState,
50
52
  isDefault: boolean;
51
53
  tasks: TaskWithUserDetails[];
52
54
  }[];
53
- export declare const getTaskListGroupedByPriority: ({ taskListState, taskState, userState, userRoleState, addressState, tagState, }: {
55
+ export declare const getTaskListGroupedByPriority: ({ taskListState, taskState, userState, userRoleState, addressState, tagState, userGroupsState, }: {
54
56
  addressState: AddressState;
55
57
  tagState: TagState;
56
58
  taskListState: TaskListState;
57
59
  taskState: TaskState;
60
+ userGroupsState: UserGroupsState;
58
61
  userRoleState: UserRoleState;
59
62
  userState: UserState;
60
63
  }) => {