Initial commit

This commit is contained in:
Maksim Eltyshev
2019-08-31 04:07:25 +05:00
commit 5ffef61fe7
613 changed files with 91659 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
import { takeLatest } from 'redux-saga/effects';
import { fetchActionsInCurrentCardService } from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
// eslint-disable-next-line max-len
yield takeLatest(EntryActionTypes.ACTIONS_IN_CURRENT_CARD_FETCH, () => fetchActionsInCurrentCardService());
}
+20
View File
@@ -0,0 +1,20 @@
import { all, takeLatest } from 'redux-saga/effects';
import {
createBoardInCurrentProjectService,
deleteBoardService,
moveBoardService,
updateBoardService,
} from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.BOARD_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) => createBoardInCurrentProjectService(data)),
takeLatest(EntryActionTypes.BOARD_UPDATE, ({ payload: { id, data } }) => updateBoardService(id, data)),
takeLatest(EntryActionTypes.BOARD_MOVE, ({ payload: { id, index } }) => moveBoardService(id, index)),
/* eslint-enable max-len */
takeLatest(EntryActionTypes.BOARD_DELETE, ({ payload: { id } }) => deleteBoardService(id)),
]);
}
+24
View File
@@ -0,0 +1,24 @@
import { all, takeLatest } from 'redux-saga/effects';
import {
createCardService,
deleteCardService,
deleteCurrentCardService,
moveCardService,
updateCardService,
updateCurrentCardService,
} from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data } }) => createCardService(listId, data)),
takeLatest(EntryActionTypes.CARD_UPDATE, ({ payload: { id, data } }) => updateCardService(id, data)),
takeLatest(EntryActionTypes.CURRENT_CARD_UPDATE, ({ payload: { data } }) => updateCurrentCardService(data)),
takeLatest(EntryActionTypes.CARD_MOVE, ({ payload: { id, listId, index } }) => moveCardService(id, listId, index)),
/* eslint-enable max-len */
takeLatest(EntryActionTypes.CARD_DELETE, ({ payload: { id } }) => deleteCardService(id)),
takeLatest(EntryActionTypes.CURRENT_CARD_DELETE, () => deleteCurrentCardService()),
]);
}
@@ -0,0 +1,18 @@
import { all, takeLatest } from 'redux-saga/effects';
import {
createCommentActionInCurrentCardService,
deleteCommentActionService,
updateCommentActionService,
} from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.COMMENT_ACTION_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => createCommentActionInCurrentCardService(data)),
takeLatest(EntryActionTypes.COMMENT_ACTION_UPDATE, ({ payload: { id, data } }) => updateCommentActionService(id, data)),
takeLatest(EntryActionTypes.COMMENT_ACTION_DELETE, ({ payload: { id } }) => deleteCommentActionService(id)),
/* eslint-enable max-len */
]);
}
+33
View File
@@ -0,0 +1,33 @@
import router from './router';
import socket from './socket';
import login from './login';
import modal from './modal';
import user from './user';
import project from './project';
import projectMembership from './project-membership';
import board from './board';
import list from './list';
import label from './label';
import card from './card';
import task from './task';
import actions from './actions';
import commentAction from './comment-action';
import notification from './notification';
export default [
router,
socket,
login,
modal,
user,
project,
projectMembership,
board,
list,
label,
card,
task,
actions,
commentAction,
notification,
];
+32
View File
@@ -0,0 +1,32 @@
import { all, takeLatest } from 'redux-saga/effects';
import {
addLabelToCardService,
addLabelToCurrentCardService,
addLabelToFilterInCurrentBoardService,
createLabelInCurrentBoardService,
deleteLabelService,
removeLabelFromCardService,
removeLabelFromCurrentCardService,
removeLabelFromFilterInCurrentBoardService,
updateLabelService,
} from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.LABEL_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => createLabelInCurrentBoardService(data)),
takeLatest(EntryActionTypes.LABEL_UPDATE, ({ payload: { id, data } }) => updateLabelService(id, data)),
/* eslint-enable max-len */
takeLatest(EntryActionTypes.LABEL_DELETE, ({ payload: { id } }) => deleteLabelService(id)),
/* eslint-disable max-len */
takeLatest(EntryActionTypes.LABEL_TO_CARD_ADD, ({ payload: { id, cardId } }) => addLabelToCardService(id, cardId)),
takeLatest(EntryActionTypes.LABEL_TO_CURRENT_CARD_ADD, ({ payload: { id } }) => addLabelToCurrentCardService(id)),
takeLatest(EntryActionTypes.LABEL_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) => removeLabelFromCardService(id, cardId)),
takeLatest(EntryActionTypes.LABEL_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) => removeLabelFromCurrentCardService(id)),
takeLatest(EntryActionTypes.LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) => addLabelToFilterInCurrentBoardService(id)),
takeLatest(EntryActionTypes.LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) => removeLabelFromFilterInCurrentBoardService(id)),
/* eslint-enable max-len */
]);
}
+20
View File
@@ -0,0 +1,20 @@
import { all, takeLatest } from 'redux-saga/effects';
import {
createListInCurrentBoardService,
deleteListService,
moveListService,
updateListService,
} from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.LIST_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => createListInCurrentBoardService(data)),
takeLatest(EntryActionTypes.LIST_UPDATE, ({ payload: { id, data } }) => updateListService(id, data)),
takeLatest(EntryActionTypes.LIST_MOVE, ({ payload: { id, index } }) => moveListService(id, index)),
/* eslint-enable max-len */
takeLatest(EntryActionTypes.LIST_DELETE, ({ payload: { id } }) => deleteListService(id)),
]);
}
+8
View File
@@ -0,0 +1,8 @@
import { takeLatest } from 'redux-saga/effects';
import { logoutService } from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield takeLatest(EntryActionTypes.LOGOUT, () => logoutService());
}
+11
View File
@@ -0,0 +1,11 @@
import { all, takeLatest } from 'redux-saga/effects';
import { closeModalService, openModalService } from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
takeLatest(EntryActionTypes.MODAL_OPEN, ({ payload: { type } }) => openModalService(type)),
takeLatest(EntryActionTypes.MODAL_CLOSE, () => closeModalService()),
]);
}
@@ -0,0 +1,9 @@
import { takeLatest } from 'redux-saga/effects';
import { deleteNotificationService } from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
// eslint-disable-next-line max-len
yield takeLatest(EntryActionTypes.NOTIFICATION_DELETE, ({ payload: { id } }) => deleteNotificationService(id));
}
@@ -0,0 +1,16 @@
import { all, takeLatest } from 'redux-saga/effects';
import {
createMembershipInCurrentProjectService,
deleteProjectMembershipService,
} from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.MEMBERSHIP_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) => createMembershipInCurrentProjectService(data)),
takeLatest(EntryActionTypes.PROJECT_MEMBERSHIP_DELETE, ({ payload: { id } }) => deleteProjectMembershipService(id)),
/* eslint-enable max-len */
]);
}
+18
View File
@@ -0,0 +1,18 @@
import { all, takeLatest } from 'redux-saga/effects';
import {
createProjectService,
deleteCurrentProjectService,
updateCurrentProjectService,
} from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.PROJECT_CREATE, ({ payload: { data } }) => createProjectService(data)),
takeLatest(EntryActionTypes.CURRENT_PROJECT_UPDATE, ({ payload: { data } }) => updateCurrentProjectService(data)),
/* eslint-enable max-len */
takeLatest(EntryActionTypes.CURRENT_PROJECT_DELETE, () => deleteCurrentProjectService()),
]);
}
+8
View File
@@ -0,0 +1,8 @@
import { takeEvery } from 'redux-saga/effects';
import { LOCATION_CHANGE } from 'connected-react-router';
import { locationChangedService } from '../services';
export default function* () {
yield takeEvery(LOCATION_CHANGE, () => locationChangedService());
}
+295
View File
@@ -0,0 +1,295 @@
import { eventChannel } from 'redux-saga';
import { call, cancelled, take } from 'redux-saga/effects';
import {
createActionReceivedService,
createBoardReceivedService,
createCardLabelReceivedService,
createCardMembershipReceivedService,
createCardReceivedService,
createLabelReceivedService,
createListReceivedService,
createNotificationReceivedService,
createProjectMembershipReceivedService,
createProjectReceivedService,
createTaskReceivedService,
createUserReceivedService,
deleteActionReceivedService,
deleteCardLabelReceivedService,
deleteCardMembershipReceivedService,
deleteCardReceivedService,
deleteBoardReceivedService,
deleteLabelReceivedService,
deleteListReceivedService,
deleteNotificationReceivedService,
deleteProjectMembershipReceivedService,
deleteProjectReceivedService,
deleteTaskReceivedService,
deleteUserReceivedService,
socketDisconnectedService,
socketReconnectedService,
updateActionReceivedService,
updateBoardReceivedService,
updateCardReceivedService,
updateLabelReceivedService,
updateListReceivedService,
updateProjectReceivedService,
updateTaskReceivedService,
updateUserReceivedService,
} from '../services';
import api, { socket } from '../../../api';
const createSocketEventsChannel = () => eventChannel((emit) => {
const handleReconnect = () => {
emit([socketReconnectedService]);
};
const handleUserCreate = ({ item }) => {
emit([createUserReceivedService, item]);
};
const handleUserUpdate = ({ item }) => {
emit([updateUserReceivedService, item]);
};
const handleUserDelete = ({ item }) => {
emit([deleteUserReceivedService, item]);
};
const handleProjectCreate = ({ item, included: { users, projectMemberships, boards } }) => {
emit([createProjectReceivedService, item, users, projectMemberships, boards]);
};
const handleProjectUpdate = ({ item }) => {
emit([updateProjectReceivedService, item]);
};
const handleProjectDelete = ({ item }) => {
emit([deleteProjectReceivedService, item]);
};
const handleProjectMembershipCreate = ({ item, included: { users } }) => {
emit([createProjectMembershipReceivedService, item, users[0]]);
};
const handleProjectMembershipDelete = ({ item }) => {
emit([deleteProjectMembershipReceivedService, item]);
};
const handleBoardCreate = ({ item, included: { lists, labels } }) => {
emit([createBoardReceivedService, item, lists, labels]);
};
const handleBoardUpdate = ({ item }) => {
emit([updateBoardReceivedService, item]);
};
const handleBoardDelete = ({ item }) => {
emit([deleteBoardReceivedService, item]);
};
const handleListCreate = ({ item }) => {
emit([createListReceivedService, item]);
};
const handleListUpdate = ({ item }) => {
emit([updateListReceivedService, item]);
};
const handleListDelete = ({ item }) => {
emit([deleteListReceivedService, item]);
};
const handleLabelCreate = ({ item }) => {
emit([createLabelReceivedService, item]);
};
const handleLabelUpdate = ({ item }) => {
emit([updateLabelReceivedService, item]);
};
const handleLabelDelete = ({ item }) => {
emit([deleteLabelReceivedService, item]);
};
const handleCardCreate = api.makeHandleCardCreate(({ item }) => {
emit([createCardReceivedService, item]);
});
const handleCardUpdate = api.makeHandleCardUpdate(({ item }) => {
emit([updateCardReceivedService, item]);
});
const handleCardDelete = api.makeHandleCardDelete(({ item }) => {
emit([deleteCardReceivedService, item]);
});
const handleCardMembershipCreate = ({ item }) => {
emit([createCardMembershipReceivedService, item]);
};
const handleCardMembershipDelete = ({ item }) => {
emit([deleteCardMembershipReceivedService, item]);
};
const handleCardLabelCreate = ({ item }) => {
emit([createCardLabelReceivedService, item]);
};
const handleCardLabelDelete = ({ item }) => {
emit([deleteCardLabelReceivedService, item]);
};
const handleTaskCreate = ({ item }) => {
emit([createTaskReceivedService, item]);
};
const handleTaskUpdate = ({ item }) => {
emit([updateTaskReceivedService, item]);
};
const handleTaskDelete = ({ item }) => {
emit([deleteTaskReceivedService, item]);
};
const handleActionCreate = api.makeHandleActionCreate(({ item }) => {
emit([createActionReceivedService, item]);
});
const handleActionUpdate = api.makeHandleActionUpdate(({ item }) => {
emit([updateActionReceivedService, item]);
});
const handleActionDelete = api.makeHandleActionDelete(({ item }) => {
emit([deleteActionReceivedService, item]);
});
const handleNotificationCreate = api.makeHandleNotificationCreate(
({ item, included: { users, cards, actions } }) => {
emit([createNotificationReceivedService, item, users[0], cards[0], actions[0]]);
},
);
const handleNotificationDelete = ({ item }) => {
emit([deleteNotificationReceivedService, item]);
};
const handleDisconnect = () => {
socket.off('disconnect', handleDisconnect);
emit([socketDisconnectedService]);
socket.on('reconnect', handleReconnect);
};
socket.on('disconnect', handleDisconnect);
socket.on('userCreate', handleUserCreate);
socket.on('userUpdate', handleUserUpdate);
socket.on('userDelete', handleUserDelete);
socket.on('projectCreate', handleProjectCreate);
socket.on('projectUpdate', handleProjectUpdate);
socket.on('projectDelete', handleProjectDelete);
socket.on('projectMembershipCreate', handleProjectMembershipCreate);
socket.on('projectMembershipDelete', handleProjectMembershipDelete);
socket.on('boardCreate', handleBoardCreate);
socket.on('boardUpdate', handleBoardUpdate);
socket.on('boardDelete', handleBoardDelete);
socket.on('listCreate', handleListCreate);
socket.on('listUpdate', handleListUpdate);
socket.on('listDelete', handleListDelete);
socket.on('labelCreate', handleLabelCreate);
socket.on('labelUpdate', handleLabelUpdate);
socket.on('labelDelete', handleLabelDelete);
socket.on('cardCreate', handleCardCreate);
socket.on('cardUpdate', handleCardUpdate);
socket.on('cardDelete', handleCardDelete);
socket.on('cardMembershipCreate', handleCardMembershipCreate);
socket.on('cardMembershipDelete', handleCardMembershipDelete);
socket.on('cardLabelCreate', handleCardLabelCreate);
socket.on('cardLabelDelete', handleCardLabelDelete);
socket.on('taskCreate', handleTaskCreate);
socket.on('taskUpdate', handleTaskUpdate);
socket.on('taskDelete', handleTaskDelete);
socket.on('actionCreate', handleActionCreate);
socket.on('actionUpdate', handleActionUpdate);
socket.on('actionDelete', handleActionDelete);
socket.on('notificationCreate', handleNotificationCreate);
socket.on('notificationUpdate', handleNotificationDelete);
return () => {
socket.off('disconnect', handleDisconnect);
socket.off('reconnect', handleReconnect);
socket.off('userCreate', handleUserCreate);
socket.off('userUpdate', handleUserUpdate);
socket.off('userDelete', handleUserDelete);
socket.off('projectCreate', handleProjectCreate);
socket.off('projectUpdate', handleProjectUpdate);
socket.off('projectDelete', handleProjectDelete);
socket.off('projectMembershipCreate', handleProjectMembershipCreate);
socket.off('projectMembershipDelete', handleProjectMembershipDelete);
socket.off('boardCreate', handleBoardCreate);
socket.off('boardUpdate', handleBoardUpdate);
socket.off('boardDelete', handleBoardDelete);
socket.off('listCreate', handleListCreate);
socket.off('listUpdate', handleListUpdate);
socket.off('listDelete', handleListDelete);
socket.off('labelCreate', handleLabelCreate);
socket.off('labelUpdate', handleLabelUpdate);
socket.off('labelDelete', handleLabelDelete);
socket.off('cardCreate', handleCardCreate);
socket.off('cardUpdate', handleCardUpdate);
socket.off('cardDelete', handleCardDelete);
socket.off('cardMembershipCreate', handleCardMembershipCreate);
socket.off('cardMembershipDelete', handleCardMembershipDelete);
socket.off('cardLabelCreate', handleCardLabelCreate);
socket.off('cardLabelDelete', handleCardLabelDelete);
socket.off('taskCreate', handleTaskCreate);
socket.off('taskUpdate', handleTaskUpdate);
socket.off('taskDelete', handleTaskDelete);
socket.off('actionCreate', handleActionCreate);
socket.off('actionUpdate', handleActionUpdate);
socket.off('actionDelete', handleActionDelete);
socket.off('notificationCreate', handleNotificationCreate);
socket.off('notificationUpdate', handleNotificationDelete);
};
});
export default function* () {
const socketEventsChannel = yield call(createSocketEventsChannel);
try {
while (true) {
const args = yield take(socketEventsChannel);
yield call(...args);
}
} finally {
if (yield cancelled()) {
socketEventsChannel.close();
}
}
}
+14
View File
@@ -0,0 +1,14 @@
import { all, takeLatest } from 'redux-saga/effects';
import { createTaskInCurrentCardService, deleteTaskService, updateTaskService } from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.TASK_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => createTaskInCurrentCardService(data)),
takeLatest(EntryActionTypes.TASK_UPDATE, ({ payload: { id, data } }) => updateTaskService(id, data)),
/* eslint-enable max-len */
takeLatest(EntryActionTypes.TASK_DELETE, ({ payload: { id } }) => deleteTaskService(id)),
]);
}
+38
View File
@@ -0,0 +1,38 @@
import { all, takeLatest } from 'redux-saga/effects';
import {
addUserToCardService,
addUserToCurrentCardService,
addUserToFilterInCurrentBoardService,
clearUserCreationErrorService,
createUserService,
deleteUserService,
removeUserFromCardService,
removeUserFromCurrentCardService,
removeUserFromFilterInCurrentBoardService,
updateUserService,
updateCurrentUserService,
uploadCurrentUserAvatarService,
} from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
takeLatest(EntryActionTypes.USER_CREATE, ({ payload: { data } }) => createUserService(data)),
takeLatest(EntryActionTypes.USER_CREATION_ERROR_CLEAR, () => clearUserCreationErrorService()),
/* eslint-disable max-len */
takeLatest(EntryActionTypes.USER_UPDATE, ({ payload: { id, data } }) => updateUserService(id, data)),
takeLatest(EntryActionTypes.CURRENT_USER_UPDATE, ({ payload: { data } }) => updateCurrentUserService(data)),
takeLatest(EntryActionTypes.CURRENT_USER_AVATAR_UPLOAD, ({ payload: { file } }) => uploadCurrentUserAvatarService(file)),
/* eslint-enable max-len */
takeLatest(EntryActionTypes.USER_DELETE, ({ payload: { id } }) => deleteUserService(id)),
/* eslint-disable max-len */
takeLatest(EntryActionTypes.USER_TO_CARD_ADD, ({ payload: { id, cardId } }) => addUserToCardService(id, cardId)),
takeLatest(EntryActionTypes.USER_TO_CURRENT_CARD_ADD, ({ payload: { id } }) => addUserToCurrentCardService(id)),
takeLatest(EntryActionTypes.USER_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) => removeUserFromCardService(id, cardId)),
takeLatest(EntryActionTypes.USER_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) => removeUserFromCurrentCardService(id)),
takeLatest(EntryActionTypes.USER_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) => addUserToFilterInCurrentBoardService(id)),
takeLatest(EntryActionTypes.USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) => removeUserFromFilterInCurrentBoardService(id)),
/* eslint-enable max-len */
]);
}