mirror of
https://github.com/plankanban/planka.git
synced 2025-07-19 13:19:44 +02:00
137 lines
3.3 KiB
JavaScript
137 lines
3.3 KiB
JavaScript
|
import { call, put, select } from 'redux-saga/effects';
|
||
|
|
||
|
import { goToProject, goToRoot } from './router';
|
||
|
import request from '../request';
|
||
|
import selectors from '../../../selectors';
|
||
|
import actions from '../../../actions';
|
||
|
import api from '../../../api';
|
||
|
|
||
|
export function* createProject(data) {
|
||
|
yield put(actions.createProject(data));
|
||
|
|
||
|
let project;
|
||
|
let projectManagers;
|
||
|
|
||
|
try {
|
||
|
({
|
||
|
item: project,
|
||
|
included: { projectManagers },
|
||
|
} = yield call(request, api.createProject, data));
|
||
|
} catch (error) {
|
||
|
yield put(actions.createProject.failure(error));
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
yield put(actions.createProject.success(project, projectManagers));
|
||
|
yield call(goToProject, project.id);
|
||
|
}
|
||
|
|
||
|
export function* handleProjectCreate({ id }) {
|
||
|
let project;
|
||
|
let users;
|
||
|
let projectManagers;
|
||
|
let boards;
|
||
|
let boardMemberships;
|
||
|
|
||
|
try {
|
||
|
({
|
||
|
item: project,
|
||
|
included: { users, projectManagers, boards, boardMemberships },
|
||
|
} = yield call(request, api.getProject, id));
|
||
|
} catch (error) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
yield put(actions.handleProjectCreate(project, users, projectManagers, boards, boardMemberships));
|
||
|
}
|
||
|
|
||
|
export function* updateProject(id, data) {
|
||
|
yield put(actions.updateProject(id, data));
|
||
|
|
||
|
let project;
|
||
|
try {
|
||
|
({ item: project } = yield call(request, api.updateProject, id, data));
|
||
|
} catch (error) {
|
||
|
yield put(actions.updateProject.failure(id, error));
|
||
|
}
|
||
|
|
||
|
yield put(actions.updateProject.success(project));
|
||
|
}
|
||
|
|
||
|
export function* updateCurrentProject(data) {
|
||
|
const { projectId } = yield select(selectors.selectPath);
|
||
|
|
||
|
yield call(updateProject, projectId, data);
|
||
|
}
|
||
|
|
||
|
export function* handleProjectUpdate(project) {
|
||
|
yield put(actions.handleProjectUpdate(project));
|
||
|
}
|
||
|
|
||
|
export function* updateProjectBackgroundImage(id, data) {
|
||
|
yield put(actions.updateProjectBackgroundImage(id));
|
||
|
|
||
|
let project;
|
||
|
try {
|
||
|
({ item: project } = yield call(request, api.updateProjectBackgroundImage, id, data));
|
||
|
} catch (error) {
|
||
|
yield put(actions.updateProjectBackgroundImage.failure(id, error));
|
||
|
}
|
||
|
|
||
|
yield put(actions.updateProjectBackgroundImage.success(project));
|
||
|
}
|
||
|
|
||
|
export function* updateCurrentProjectBackgroundImage(data) {
|
||
|
const { projectId } = yield select(selectors.selectPath);
|
||
|
|
||
|
yield call(updateProjectBackgroundImage, projectId, data);
|
||
|
}
|
||
|
|
||
|
export function* deleteProject(id) {
|
||
|
const { projectId } = yield select(selectors.selectPath);
|
||
|
|
||
|
if (id === projectId) {
|
||
|
yield call(goToRoot);
|
||
|
}
|
||
|
|
||
|
yield put(actions.deleteProject(id));
|
||
|
|
||
|
let project;
|
||
|
try {
|
||
|
({ item: project } = yield call(request, api.deleteProject, id));
|
||
|
} catch (error) {
|
||
|
yield put(actions.deleteProject.failure(id, error));
|
||
|
}
|
||
|
|
||
|
yield put(actions.deleteProject.success(project));
|
||
|
}
|
||
|
|
||
|
export function* deleteCurrentProject() {
|
||
|
const { projectId } = yield select(selectors.selectPath);
|
||
|
|
||
|
yield call(deleteProject, projectId);
|
||
|
}
|
||
|
|
||
|
export function* handleProjectDelete(project) {
|
||
|
const { projectId } = yield select(selectors.selectPath);
|
||
|
|
||
|
if (project.id === projectId) {
|
||
|
yield call(goToRoot);
|
||
|
}
|
||
|
|
||
|
yield put(actions.handleProjectDelete(project));
|
||
|
}
|
||
|
|
||
|
export default {
|
||
|
createProject,
|
||
|
handleProjectCreate,
|
||
|
updateProject,
|
||
|
updateCurrentProject,
|
||
|
handleProjectUpdate,
|
||
|
updateProjectBackgroundImage,
|
||
|
updateCurrentProjectBackgroundImage,
|
||
|
deleteProject,
|
||
|
deleteCurrentProject,
|
||
|
handleProjectDelete,
|
||
|
};
|