@zeniai/client-epic-state 5.0.3-betaND1 → 5.0.3-betaND4
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.
- package/lib/entity/task/taskPayload.d.ts +1 -0
- package/lib/entity/task/taskPayload.js +3 -0
- package/lib/entity/task/taskState.d.ts +1 -0
- package/lib/epic.d.ts +2 -1
- package/lib/epic.js +2 -1
- package/lib/esm/entity/task/taskPayload.js +3 -0
- package/lib/esm/epic.js +2 -1
- package/lib/esm/index.js +2 -2
- package/lib/esm/view/taskManager/taskListView/epics/createSubtaskFromListViewEpic.js +31 -0
- package/lib/esm/view/taskManager/taskListView/taskListReducer.js +19 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +6 -4
- package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
- package/lib/view/taskManager/taskListView/epics/createSubtaskFromListViewEpic.d.ts +8 -0
- package/lib/view/taskManager/taskListView/epics/createSubtaskFromListViewEpic.js +35 -0
- package/lib/view/taskManager/taskListView/taskListPayload.d.ts +21 -0
- package/lib/view/taskManager/taskListView/taskListReducer.d.ts +6 -3
- package/lib/view/taskManager/taskListView/taskListReducer.js +20 -2
- package/package.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { updateTasks } from '../../../../entity/task/taskReducer';
|
|
4
|
+
import { RootState } from '../../../../reducer';
|
|
5
|
+
import { ZeniAPI } from '../../../../zeniAPI';
|
|
6
|
+
import { createSubtaskFromListView, updateTasksListOnCreateSubtaskFromListViewSuccess, updateTasksListOnUpdateTaskFailure } from '../taskListReducer';
|
|
7
|
+
export type ActionType = ReturnType<typeof createSubtaskFromListView> | ReturnType<typeof updateTasks> | ReturnType<typeof updateTasksListOnCreateSubtaskFromListViewSuccess> | ReturnType<typeof updateTasksListOnUpdateTaskFailure>;
|
|
8
|
+
export declare const createSubtaskFromListViewEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSubtaskFromListViewEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const taskReducer_1 = require("../../../../entity/task/taskReducer");
|
|
7
|
+
const responsePayload_1 = require("../../../../responsePayload");
|
|
8
|
+
const taskListReducer_1 = require("../taskListReducer");
|
|
9
|
+
const createSubtaskFromListViewEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(taskListReducer_1.createSubtaskFromListView.match), (0, operators_1.switchMap)((action) => {
|
|
10
|
+
const payload = action.payload;
|
|
11
|
+
const parentTaskId = payload.parent_task_id;
|
|
12
|
+
return zeniAPI
|
|
13
|
+
.postAndGetJSON(`${zeniAPI.apiEndPoints.taskMicroServiceBaseUrl}/1.0/task-manager/tasks`, { ...payload })
|
|
14
|
+
.pipe((0, operators_1.mergeMap)((response) => {
|
|
15
|
+
if ((0, responsePayload_1.isSuccessResponse)(response) &&
|
|
16
|
+
response.data != null &&
|
|
17
|
+
response.data.tasks.length > 0) {
|
|
18
|
+
const subtaskId = response.data.tasks[0].task_id;
|
|
19
|
+
return (0, rxjs_1.from)([
|
|
20
|
+
(0, taskReducer_1.updateTasks)(response.data.tasks),
|
|
21
|
+
(0, taskListReducer_1.updateTasksListOnCreateSubtaskFromListViewSuccess)({
|
|
22
|
+
parentTaskId,
|
|
23
|
+
subtaskId,
|
|
24
|
+
}),
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
return (0, rxjs_1.of)((0, taskListReducer_1.updateTasksListOnUpdateTaskFailure)({
|
|
28
|
+
error: response.status,
|
|
29
|
+
}));
|
|
30
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, taskListReducer_1.updateTasksListOnUpdateTaskFailure)({
|
|
31
|
+
error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'create subtask from list view REST API call errored out' +
|
|
32
|
+
JSON.stringify(error)),
|
|
33
|
+
}))));
|
|
34
|
+
}));
|
|
35
|
+
exports.createSubtaskFromListViewEpic = createSubtaskFromListViewEpic;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ID } from '../../../commonStateTypes/common';
|
|
1
2
|
import { TaskPayload } from '../../../entity/task/taskPayload';
|
|
2
3
|
import { ZeniAPIResponse } from '../../../responsePayload';
|
|
3
4
|
/**
|
|
@@ -11,6 +12,26 @@ interface FetchTaskListPayload {
|
|
|
11
12
|
tasks: TaskListTaskPayload[];
|
|
12
13
|
}
|
|
13
14
|
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
|
+
}
|
|
14
35
|
/** Parent tasks and nested subtasks as flat `TaskPayload`s for `updateTasks`. */
|
|
15
36
|
export declare const flattenTasksAndSubtasksForEntity: (tasks: TaskListTaskPayload[]) => TaskPayload[];
|
|
16
37
|
export {};
|
|
@@ -5,7 +5,7 @@ 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 { TaskListTaskPayload } from './taskListPayload';
|
|
8
|
+
import { CreateSubtaskFromListViewPayload, TaskListTaskPayload } from './taskListPayload';
|
|
9
9
|
export declare const initialState: TaskListState;
|
|
10
10
|
export declare const fetchTaskListPage: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride: boolean, isTaskTemplatesEnabled: boolean], {
|
|
11
11
|
cacheOverride: boolean;
|
|
@@ -49,10 +49,13 @@ export declare const fetchTaskListPage: import("@reduxjs/toolkit").ActionCreator
|
|
|
49
49
|
}, "taskList/updateTaskListOnNewTaskCreationSuccess">, updateTaskListOnTaskGroupNameUpdate: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
50
50
|
taskGroupId: ID;
|
|
51
51
|
taskGroupName: ID;
|
|
52
|
-
}, "taskList/updateTaskListOnTaskGroupNameUpdate">, updateTaskFromListView: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
52
|
+
}, "taskList/updateTaskListOnTaskGroupNameUpdate">, createSubtaskFromListView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: CreateSubtaskFromListViewPayload], CreateSubtaskFromListViewPayload, "taskList/createSubtaskFromListView", never, never>, updateTaskFromListView: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
53
53
|
task: Task;
|
|
54
54
|
updates: Partial<Task>;
|
|
55
|
-
}, "taskList/updateTaskFromListView">,
|
|
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<{
|
|
56
59
|
error: ZeniAPIStatus;
|
|
57
60
|
}, "taskList/updateTasksListOnUpdateTaskFailure">, updateTaskListOnCreateTaskFromTemplateSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
58
61
|
tasks: TaskPayload[];
|
|
@@ -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.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.updateTaskList = exports.fetchTaskList = exports.fetchTaskListPage = exports.initialState = void 0;
|
|
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;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
6
|
const taskState_1 = require("../../../entity/task/taskState");
|
|
7
7
|
const zeniDayJS_1 = require("../../../zeniDayJS");
|
|
@@ -346,6 +346,17 @@ const taskList = (0, toolkit_1.createSlice)({
|
|
|
346
346
|
[taskGroupId]: taskGroupName,
|
|
347
347
|
};
|
|
348
348
|
},
|
|
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
|
+
},
|
|
349
360
|
updateTaskFromListView(draft, action) {
|
|
350
361
|
const { updates, task } = action.payload;
|
|
351
362
|
const taskId = task.id;
|
|
@@ -402,6 +413,13 @@ const taskList = (0, toolkit_1.createSlice)({
|
|
|
402
413
|
}
|
|
403
414
|
}
|
|
404
415
|
},
|
|
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
|
+
},
|
|
405
423
|
updateTasksListOnUpdateTaskSuccess(draft) {
|
|
406
424
|
draft.updateTasksFetchState.fetchState = 'Completed';
|
|
407
425
|
draft.updateTasksFetchState.error = undefined;
|
|
@@ -415,7 +433,7 @@ const taskList = (0, toolkit_1.createSlice)({
|
|
|
415
433
|
},
|
|
416
434
|
},
|
|
417
435
|
});
|
|
418
|
-
_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.updateTaskFromListView = _a.updateTaskFromListView, exports.updateTasksListOnUpdateTaskSuccess = _a.updateTasksListOnUpdateTaskSuccess, exports.updateTasksListOnUpdateTaskFailure = _a.updateTasksListOnUpdateTaskFailure, exports.updateTaskListOnCreateTaskFromTemplateSuccess = _a.updateTaskListOnCreateTaskFromTemplateSuccess, exports.clearTaskList = _a.clearTaskList;
|
|
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;
|
|
419
437
|
exports.default = taskList.reducer;
|
|
420
438
|
/**
|
|
421
439
|
* helpers
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.0.3-
|
|
3
|
+
"version": "5.0.3-betaND4",
|
|
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",
|