You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
253 lines
6.6 KiB
JavaScript
253 lines
6.6 KiB
JavaScript
import { call, put, select } from 'redux-saga/effects';
|
|
|
|
import { goToBoardService, goToProjectService, goToRootService } from './router';
|
|
import { logoutService } from './login';
|
|
import { closeModalService } from './modal';
|
|
import { deleteNotificationsRequest, fetchUsersRequest } from '../requests';
|
|
import {
|
|
attachmentWithIdExistsSelector,
|
|
currentModalSelector,
|
|
currentUserIdSelector,
|
|
currentUserSelector,
|
|
pathSelector,
|
|
} from '../../../selectors';
|
|
import {
|
|
createActionReceived,
|
|
createAttachmentReceived,
|
|
createBoardReceived,
|
|
createCardLabelReceived,
|
|
createCardMembershipReceived,
|
|
createCardReceived,
|
|
createLabelReceived,
|
|
createListReceived,
|
|
createNotificationReceived,
|
|
createProjectMembershipReceived,
|
|
createProjectReceived,
|
|
createTaskReceived,
|
|
createUserReceived,
|
|
deleteActionReceived,
|
|
deleteAttachmentReceived,
|
|
deleteCardLabelReceived,
|
|
deleteCardMembershipReceived,
|
|
deleteCardReceived,
|
|
deleteBoardReceived,
|
|
deleteLabelReceived,
|
|
deleteListReceived,
|
|
deleteNotificationReceived,
|
|
deleteProjectMembershipReceived,
|
|
deleteProjectReceived,
|
|
deleteTaskReceived,
|
|
deleteUserReceived,
|
|
socketDisconnected,
|
|
socketReconnected,
|
|
updateActionReceived,
|
|
updateAttachmentReceived,
|
|
updateBoardReceived,
|
|
updateCardReceived,
|
|
updateLabelReceived,
|
|
updateListReceived,
|
|
updateProjectReceived,
|
|
updateTaskReceived,
|
|
updateUserReceived,
|
|
} from '../../../actions';
|
|
import ModalTypes from '../../../constants/ModalTypes';
|
|
|
|
export function* socketDisconnectedService() {
|
|
yield put(socketDisconnected());
|
|
}
|
|
|
|
// TODO: refetch state on reconnect
|
|
export function* socketReconnectedService() {
|
|
yield put(socketReconnected());
|
|
}
|
|
|
|
export function* createUserReceivedService(user) {
|
|
yield put(createUserReceived(user));
|
|
}
|
|
|
|
export function* updateUserReceivedService(user) {
|
|
const currentUser = yield select(currentUserSelector);
|
|
|
|
if (user.id === currentUser.id) {
|
|
if (currentUser.isAdmin) {
|
|
if (!user.isAdmin) {
|
|
const currentModal = yield select(currentModalSelector);
|
|
|
|
if (currentModal === ModalTypes.USERS) {
|
|
yield call(closeModalService);
|
|
}
|
|
}
|
|
} else if (user.isAdmin) {
|
|
yield call(fetchUsersRequest);
|
|
}
|
|
}
|
|
|
|
yield put(updateUserReceived(user));
|
|
}
|
|
|
|
export function* deleteUserReceivedService(user) {
|
|
const currentUserId = yield select(currentUserIdSelector);
|
|
|
|
if (user.id === currentUserId) {
|
|
yield call(logoutService);
|
|
}
|
|
|
|
yield put(deleteUserReceived(user));
|
|
}
|
|
|
|
export function* createProjectReceivedService(project, users, projectMemberships, boards) {
|
|
yield put(createProjectReceived(project, users, projectMemberships, boards));
|
|
}
|
|
|
|
export function* updateProjectReceivedService(project) {
|
|
yield put(updateProjectReceived(project));
|
|
}
|
|
|
|
export function* deleteProjectReceivedService(project) {
|
|
const { projectId } = yield select(pathSelector);
|
|
|
|
if (project.id === projectId) {
|
|
yield call(goToRootService);
|
|
}
|
|
|
|
yield put(deleteProjectReceived(project));
|
|
}
|
|
|
|
export function* createProjectMembershipReceivedService(projectMembership, user) {
|
|
yield put(createProjectMembershipReceived(projectMembership, user));
|
|
}
|
|
|
|
export function* deleteProjectMembershipReceivedService(projectMembership) {
|
|
yield put(deleteProjectMembershipReceived(projectMembership));
|
|
}
|
|
|
|
export function* createBoardReceivedService(board, lists, labels) {
|
|
yield put(createBoardReceived(board, lists, labels));
|
|
}
|
|
|
|
export function* updateBoardReceivedService(board) {
|
|
yield put(updateBoardReceived(board));
|
|
}
|
|
|
|
export function* deleteBoardReceivedService(board) {
|
|
const { boardId, projectId } = yield select(pathSelector);
|
|
|
|
if (board.id === boardId) {
|
|
yield call(goToProjectService, projectId);
|
|
}
|
|
|
|
yield put(deleteBoardReceived(board));
|
|
}
|
|
|
|
export function* createListReceivedService(list) {
|
|
yield put(createListReceived(list));
|
|
}
|
|
|
|
export function* updateListReceivedService(list) {
|
|
yield put(updateListReceived(list));
|
|
}
|
|
|
|
export function* deleteListReceivedService(list) {
|
|
yield put(deleteListReceived(list));
|
|
}
|
|
|
|
export function* createLabelReceivedService(label) {
|
|
yield put(createLabelReceived(label));
|
|
}
|
|
|
|
export function* updateLabelReceivedService(label) {
|
|
yield put(updateLabelReceived(label));
|
|
}
|
|
|
|
export function* deleteLabelReceivedService(label) {
|
|
yield put(deleteLabelReceived(label));
|
|
}
|
|
|
|
export function* createCardReceivedService(card) {
|
|
yield put(createCardReceived(card));
|
|
}
|
|
|
|
export function* updateCardReceivedService(card) {
|
|
yield put(updateCardReceived(card));
|
|
}
|
|
|
|
export function* deleteCardReceivedService(card) {
|
|
const { cardId, boardId } = yield select(pathSelector);
|
|
|
|
if (card.id === cardId) {
|
|
yield call(goToBoardService, boardId);
|
|
}
|
|
|
|
yield put(deleteCardReceived(card));
|
|
}
|
|
|
|
export function* createCardMembershipReceivedService(cardMembership) {
|
|
yield put(createCardMembershipReceived(cardMembership));
|
|
}
|
|
|
|
export function* deleteCardMembershipReceivedService(cardMembership) {
|
|
yield put(deleteCardMembershipReceived(cardMembership));
|
|
}
|
|
|
|
export function* createCardLabelReceivedService(cardLabel) {
|
|
yield put(createCardLabelReceived(cardLabel));
|
|
}
|
|
|
|
export function* deleteCardLabelReceivedService(cardLabel) {
|
|
yield put(deleteCardLabelReceived(cardLabel));
|
|
}
|
|
|
|
export function* createTaskReceivedService(task) {
|
|
yield put(createTaskReceived(task));
|
|
}
|
|
|
|
export function* updateTaskReceivedService(task) {
|
|
yield put(updateTaskReceived(task));
|
|
}
|
|
|
|
export function* deleteTaskReceivedService(task) {
|
|
yield put(deleteTaskReceived(task));
|
|
}
|
|
|
|
export function* createAttachmentReceivedService(attachment, requestId) {
|
|
const exists = yield select(attachmentWithIdExistsSelector, requestId);
|
|
|
|
if (!exists) {
|
|
yield put(createAttachmentReceived(attachment));
|
|
}
|
|
}
|
|
|
|
export function* updateAttachmentReceivedService(attachment) {
|
|
yield put(updateAttachmentReceived(attachment));
|
|
}
|
|
|
|
export function* deleteAttachmentReceivedService(attachment) {
|
|
yield put(deleteAttachmentReceived(attachment));
|
|
}
|
|
|
|
export function* createActionReceivedService(action) {
|
|
yield put(createActionReceived(action));
|
|
}
|
|
|
|
export function* updateActionReceivedService(action) {
|
|
yield put(updateActionReceived(action));
|
|
}
|
|
|
|
export function* deleteActionReceivedService(action) {
|
|
yield put(deleteActionReceived(action));
|
|
}
|
|
|
|
export function* createNotificationReceivedService(notification, user, card, action) {
|
|
const { cardId } = yield select(pathSelector);
|
|
|
|
if (card.id === cardId) {
|
|
yield call(deleteNotificationsRequest, [notification.id]);
|
|
} else {
|
|
yield put(createNotificationReceived(notification, user, card, action));
|
|
}
|
|
}
|
|
|
|
export function* deleteNotificationReceivedService(notification) {
|
|
yield put(deleteNotificationReceived(notification));
|
|
}
|