diff --git a/client/src/actions/action.js b/client/src/actions/action.js
deleted file mode 100644
index b0c6fd68..00000000
--- a/client/src/actions/action.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import ActionTypes from '../constants/ActionTypes';
-
-export const handleActionCreate = (action) => ({
- type: ActionTypes.ACTION_CREATE_HANDLE,
- payload: {
- action,
- },
-});
-
-export const handleActionUpdate = (action) => ({
- type: ActionTypes.ACTION_UPDATE_HANDLE,
- payload: {
- action,
- },
-});
-
-export const handleActionDelete = (action) => ({
- type: ActionTypes.ACTION_DELETE_HANDLE,
- payload: {
- action,
- },
-});
diff --git a/client/src/actions/actions.js b/client/src/actions/actions.js
deleted file mode 100644
index 527be153..00000000
--- a/client/src/actions/actions.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import ActionTypes from '../constants/ActionTypes';
-
-export const fetchActions = (cardId) => ({
- type: ActionTypes.ACTIONS_FETCH,
- payload: {
- cardId,
- },
-});
-
-fetchActions.success = (cardId, actions, users) => ({
- type: ActionTypes.ACTIONS_FETCH__SUCCESS,
- payload: {
- cardId,
- actions,
- users,
- },
-});
-
-fetchActions.failure = (cardId, error) => ({
- type: ActionTypes.ACTIONS_FETCH__FAILURE,
- payload: {
- cardId,
- error,
- },
-});
-
-export const toggleActionsDetails = (cardId, isVisible) => ({
- type: ActionTypes.ACTIONS_DETAILS_TOGGLE,
- payload: {
- cardId,
- isVisible,
- },
-});
-
-toggleActionsDetails.success = (cardId, actions, users) => ({
- type: ActionTypes.ACTIONS_DETAILS_TOGGLE__SUCCESS,
- payload: {
- cardId,
- actions,
- users,
- },
-});
-
-toggleActionsDetails.failure = (cardId, error) => ({
- type: ActionTypes.ACTIONS_DETAILS_TOGGLE__FAILURE,
- payload: {
- cardId,
- error,
- },
-});
diff --git a/client/src/actions/activities.js b/client/src/actions/activities.js
new file mode 100644
index 00000000..d3a23a91
--- /dev/null
+++ b/client/src/actions/activities.js
@@ -0,0 +1,79 @@
+import ActionTypes from '../constants/ActionTypes';
+
+const fetchActivities = (cardId) => ({
+ type: ActionTypes.ACTIVITIES_FETCH,
+ payload: {
+ cardId,
+ },
+});
+
+fetchActivities.success = (cardId, activities, users) => ({
+ type: ActionTypes.ACTIVITIES_FETCH__SUCCESS,
+ payload: {
+ cardId,
+ activities,
+ users,
+ },
+});
+
+fetchActivities.failure = (cardId, error) => ({
+ type: ActionTypes.ACTIVITIES_FETCH__FAILURE,
+ payload: {
+ cardId,
+ error,
+ },
+});
+
+const toggleActivitiesDetails = (cardId, isVisible) => ({
+ type: ActionTypes.ACTIVITIES_DETAILS_TOGGLE,
+ payload: {
+ cardId,
+ isVisible,
+ },
+});
+
+toggleActivitiesDetails.success = (cardId, activities, users) => ({
+ type: ActionTypes.ACTIVITIES_DETAILS_TOGGLE__SUCCESS,
+ payload: {
+ cardId,
+ activities,
+ users,
+ },
+});
+
+toggleActivitiesDetails.failure = (cardId, error) => ({
+ type: ActionTypes.ACTIVITIES_DETAILS_TOGGLE__FAILURE,
+ payload: {
+ cardId,
+ error,
+ },
+});
+
+const handleActivityCreate = (activity) => ({
+ type: ActionTypes.ACTIVITY_CREATE_HANDLE,
+ payload: {
+ activity,
+ },
+});
+
+const handleActivityUpdate = (activity) => ({
+ type: ActionTypes.ACTIVITY_UPDATE_HANDLE,
+ payload: {
+ activity,
+ },
+});
+
+const handleActivityDelete = (activity) => ({
+ type: ActionTypes.ACTIVITY_DELETE_HANDLE,
+ payload: {
+ activity,
+ },
+});
+
+export default {
+ fetchActivities,
+ toggleActivitiesDetails,
+ handleActivityCreate,
+ handleActivityUpdate,
+ handleActivityDelete,
+};
diff --git a/client/src/actions/attachment.js b/client/src/actions/attachments.js
similarity index 76%
rename from client/src/actions/attachment.js
rename to client/src/actions/attachments.js
index b89e5af0..91c6c382 100644
--- a/client/src/actions/attachment.js
+++ b/client/src/actions/attachments.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createAttachment = (attachment) => ({
+const createAttachment = (attachment) => ({
type: ActionTypes.ATTACHMENT_CREATE,
payload: {
attachment,
@@ -23,14 +23,14 @@ createAttachment.failure = (localId, error) => ({
},
});
-export const handleAttachmentCreate = (attachment) => ({
+const handleAttachmentCreate = (attachment) => ({
type: ActionTypes.ATTACHMENT_CREATE_HANDLE,
payload: {
attachment,
},
});
-export const updateAttachment = (id, data) => ({
+const updateAttachment = (id, data) => ({
type: ActionTypes.ATTACHMENT_UPDATE,
payload: {
id,
@@ -53,14 +53,14 @@ updateAttachment.failure = (id, error) => ({
},
});
-export const handleAttachmentUpdate = (attachment) => ({
+const handleAttachmentUpdate = (attachment) => ({
type: ActionTypes.ATTACHMENT_UPDATE_HANDLE,
payload: {
attachment,
},
});
-export const deleteAttachment = (id) => ({
+const deleteAttachment = (id) => ({
type: ActionTypes.ATTACHMENT_DELETE,
payload: {
id,
@@ -82,9 +82,18 @@ deleteAttachment.failure = (id, error) => ({
},
});
-export const handleAttachmentDelete = (attachment) => ({
+const handleAttachmentDelete = (attachment) => ({
type: ActionTypes.ATTACHMENT_DELETE_HANDLE,
payload: {
attachment,
},
});
+
+export default {
+ createAttachment,
+ handleAttachmentCreate,
+ updateAttachment,
+ handleAttachmentUpdate,
+ deleteAttachment,
+ handleAttachmentDelete,
+};
diff --git a/client/src/actions/board-membership.js b/client/src/actions/board-memberships.js
similarity index 81%
rename from client/src/actions/board-membership.js
rename to client/src/actions/board-memberships.js
index c6b2a568..4871a0a6 100644
--- a/client/src/actions/board-membership.js
+++ b/client/src/actions/board-memberships.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createBoardMembership = (boardMembership) => ({
+const createBoardMembership = (boardMembership) => ({
type: ActionTypes.BOARD_MEMBERSHIP_CREATE,
payload: {
boardMembership,
@@ -23,7 +23,7 @@ createBoardMembership.failure = (localId, error) => ({
},
});
-export const handleBoardMembershipCreate = (
+const handleBoardMembershipCreate = (
boardMembership,
project,
board,
@@ -38,6 +38,7 @@ export const handleBoardMembershipCreate = (
cardLabels,
tasks,
attachments,
+ deletedNotifications,
) => ({
type: ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE,
payload: {
@@ -55,6 +56,7 @@ export const handleBoardMembershipCreate = (
cardLabels,
tasks,
attachments,
+ deletedNotifications,
},
});
@@ -67,7 +69,7 @@ handleBoardMembershipCreate.fetchProject = (id, currentUserId, currentBoardId) =
},
});
-export const deleteBoardMembership = (id) => ({
+const deleteBoardMembership = (id) => ({
type: ActionTypes.BOARD_MEMBERSHIP_DELETE,
payload: {
id,
@@ -89,9 +91,16 @@ deleteBoardMembership.failure = (id, error) => ({
},
});
-export const handleBoardMembershipDelete = (boardMembership) => ({
+const handleBoardMembershipDelete = (boardMembership) => ({
type: ActionTypes.BOARD_MEMBERSHIP_DELETE_HANDLE,
payload: {
boardMembership,
},
});
+
+export default {
+ createBoardMembership,
+ handleBoardMembershipCreate,
+ deleteBoardMembership,
+ handleBoardMembershipDelete,
+};
diff --git a/client/src/actions/board.js b/client/src/actions/boards.js
similarity index 82%
rename from client/src/actions/board.js
rename to client/src/actions/boards.js
index 23e336f9..484ae23a 100644
--- a/client/src/actions/board.js
+++ b/client/src/actions/boards.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createBoard = (board) => ({
+const createBoard = (board) => ({
type: ActionTypes.BOARD_CREATE,
payload: {
board,
@@ -24,14 +24,14 @@ createBoard.failure = (localId, error) => ({
},
});
-export const handleBoardCreate = (board) => ({
+const handleBoardCreate = (board) => ({
type: ActionTypes.BOARD_CREATE_HANDLE,
payload: {
board,
},
});
-export const fetchBoard = (id) => ({
+const fetchBoard = (id) => ({
type: ActionTypes.BOARD_FETCH,
payload: {
id,
@@ -75,7 +75,7 @@ fetchBoard.failure = (id, error) => ({
},
});
-export const updateBoard = (id, data) => ({
+const updateBoard = (id, data) => ({
type: ActionTypes.BOARD_UPDATE,
payload: {
id,
@@ -98,14 +98,14 @@ updateBoard.failure = (id, error) => ({
},
});
-export const handleBoardUpdate = (board) => ({
+const handleBoardUpdate = (board) => ({
type: ActionTypes.BOARD_UPDATE_HANDLE,
payload: {
board,
},
});
-export const deleteBoard = (id) => ({
+const deleteBoard = (id) => ({
type: ActionTypes.BOARD_DELETE,
payload: {
id,
@@ -127,9 +127,19 @@ deleteBoard.failure = (id, error) => ({
},
});
-export const handleBoardDelete = (board) => ({
+const handleBoardDelete = (board) => ({
type: ActionTypes.BOARD_DELETE_HANDLE,
payload: {
board,
},
});
+
+export default {
+ createBoard,
+ handleBoardCreate,
+ fetchBoard,
+ updateBoard,
+ handleBoardUpdate,
+ deleteBoard,
+ handleBoardDelete,
+};
diff --git a/client/src/actions/card.js b/client/src/actions/cards.js
similarity index 78%
rename from client/src/actions/card.js
rename to client/src/actions/cards.js
index 1efb3473..09699108 100644
--- a/client/src/actions/card.js
+++ b/client/src/actions/cards.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createCard = (card) => ({
+const createCard = (card) => ({
type: ActionTypes.CARD_CREATE,
payload: {
card,
@@ -23,14 +23,14 @@ createCard.failure = (localId, error) => ({
},
});
-export const handleCardCreate = (card) => ({
+const handleCardCreate = (card) => ({
type: ActionTypes.CARD_CREATE_HANDLE,
payload: {
card,
},
});
-export const updateCard = (id, data) => ({
+const updateCard = (id, data) => ({
type: ActionTypes.CARD_UPDATE,
payload: {
id,
@@ -53,14 +53,14 @@ updateCard.failure = (id, error) => ({
},
});
-export const handleCardUpdate = (card) => ({
+const handleCardUpdate = (card) => ({
type: ActionTypes.CARD_UPDATE_HANDLE,
payload: {
card,
},
});
-export const deleteCard = (id) => ({
+const deleteCard = (id) => ({
type: ActionTypes.CARD_DELETE,
payload: {
id,
@@ -82,9 +82,18 @@ deleteCard.failure = (id, error) => ({
},
});
-export const handleCardDelete = (card) => ({
+const handleCardDelete = (card) => ({
type: ActionTypes.CARD_DELETE_HANDLE,
payload: {
card,
},
});
+
+export default {
+ createCard,
+ handleCardCreate,
+ updateCard,
+ handleCardUpdate,
+ deleteCard,
+ handleCardDelete,
+};
diff --git a/client/src/actions/comment-action.js b/client/src/actions/comment-action.js
deleted file mode 100644
index b9443e30..00000000
--- a/client/src/actions/comment-action.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import ActionTypes from '../constants/ActionTypes';
-
-export const createCommentAction = (action) => ({
- type: ActionTypes.COMMENT_ACTION_CREATE,
- payload: {
- action,
- },
-});
-
-createCommentAction.success = (localId, action) => ({
- type: ActionTypes.COMMENT_ACTION_CREATE__SUCCESS,
- payload: {
- localId,
- action,
- },
-});
-
-createCommentAction.failure = (localId, error) => ({
- type: ActionTypes.COMMENT_ACTION_CREATE__FAILURE,
- payload: {
- localId,
- error,
- },
-});
-
-export const updateCommentAction = (id, data) => ({
- type: ActionTypes.COMMENT_ACTION_UPDATE,
- payload: {
- id,
- data,
- },
-});
-
-updateCommentAction.success = (action) => ({
- type: ActionTypes.COMMENT_ACTION_UPDATE__SUCCESS,
- payload: {
- action,
- },
-});
-
-updateCommentAction.failure = (id, error) => ({
- type: ActionTypes.COMMENT_ACTION_UPDATE__FAILURE,
- payload: {
- id,
- error,
- },
-});
-
-export const deleteCommentAction = (id) => ({
- type: ActionTypes.COMMENT_ACTION_DELETE,
- payload: {
- id,
- },
-});
-
-deleteCommentAction.success = (action) => ({
- type: ActionTypes.COMMENT_ACTION_DELETE__SUCCESS,
- payload: {
- action,
- },
-});
-
-deleteCommentAction.failure = (id, error) => ({
- type: ActionTypes.COMMENT_ACTION_DELETE__FAILURE,
- payload: {
- id,
- error,
- },
-});
diff --git a/client/src/actions/comment-activities.js b/client/src/actions/comment-activities.js
new file mode 100644
index 00000000..03710e17
--- /dev/null
+++ b/client/src/actions/comment-activities.js
@@ -0,0 +1,75 @@
+import ActionTypes from '../constants/ActionTypes';
+
+const createCommentActivity = (activity) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_CREATE,
+ payload: {
+ activity,
+ },
+});
+
+createCommentActivity.success = (localId, activity) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_CREATE__SUCCESS,
+ payload: {
+ localId,
+ activity,
+ },
+});
+
+createCommentActivity.failure = (localId, error) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_CREATE__FAILURE,
+ payload: {
+ localId,
+ error,
+ },
+});
+
+const updateCommentActivity = (id, data) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_UPDATE,
+ payload: {
+ id,
+ data,
+ },
+});
+
+updateCommentActivity.success = (activity) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_UPDATE__SUCCESS,
+ payload: {
+ activity,
+ },
+});
+
+updateCommentActivity.failure = (id, error) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_UPDATE__FAILURE,
+ payload: {
+ id,
+ error,
+ },
+});
+
+const deleteCommentActivity = (id) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_DELETE,
+ payload: {
+ id,
+ },
+});
+
+deleteCommentActivity.success = (activity) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_DELETE__SUCCESS,
+ payload: {
+ activity,
+ },
+});
+
+deleteCommentActivity.failure = (id, error) => ({
+ type: ActionTypes.COMMENT_ACTIVITY_DELETE__FAILURE,
+ payload: {
+ id,
+ error,
+ },
+});
+
+export default {
+ createCommentActivity,
+ updateCommentActivity,
+ deleteCommentActivity,
+};
diff --git a/client/src/actions/core.js b/client/src/actions/core.js
index b81f1768..e144bd94 100644
--- a/client/src/actions/core.js
+++ b/client/src/actions/core.js
@@ -1,7 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-// eslint-disable-next-line import/prefer-default-export
-export const initializeCore = (
+const initializeCore = (
user,
board,
users,
@@ -16,7 +15,7 @@ export const initializeCore = (
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
) => ({
type: ActionTypes.CORE_INITIALIZE,
@@ -35,7 +34,17 @@ export const initializeCore = (
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
},
});
+
+const logout = () => ({
+ type: ActionTypes.LOGOUT,
+ payload: {},
+});
+
+export default {
+ initializeCore,
+ logout,
+};
diff --git a/client/src/actions/entry/action.js b/client/src/actions/entry/action.js
deleted file mode 100644
index 01cd322c..00000000
--- a/client/src/actions/entry/action.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-export const handleActionCreate = (action) => ({
- type: EntryActionTypes.ACTION_CREATE_HANDLE,
- payload: {
- action,
- },
-});
-
-export const handleActionUpdate = (action) => ({
- type: EntryActionTypes.ACTION_UPDATE_HANDLE,
- payload: {
- action,
- },
-});
-
-export const handleActionDelete = (action) => ({
- type: EntryActionTypes.ACTION_DELETE_HANDLE,
- payload: {
- action,
- },
-});
diff --git a/client/src/actions/entry/actions.js b/client/src/actions/entry/actions.js
deleted file mode 100755
index a83a544e..00000000
--- a/client/src/actions/entry/actions.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-export const fetchActionsInCurrentCard = () => ({
- type: EntryActionTypes.ACTIONS_IN_CURRENT_CARD_FETCH,
- payload: {},
-});
-
-export const toggleActionsDetailsInCurrentCard = (isVisible) => ({
- type: EntryActionTypes.ACTIONS_DETAILS_IN_CURRENT_CARD_TOGGLE,
- payload: {
- isVisible,
- },
-});
diff --git a/client/src/actions/entry/board-membership.js b/client/src/actions/entry/board-membership.js
deleted file mode 100644
index 109ec360..00000000
--- a/client/src/actions/entry/board-membership.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-export const createMembershipInCurrentBoard = (data) => ({
- type: EntryActionTypes.MEMBERSHIP_IN_CURRENT_BOARD_CREATE,
- payload: {
- data,
- },
-});
-
-export const handleBoardMembershipCreate = (boardMembership) => ({
- type: EntryActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE,
- payload: {
- boardMembership,
- },
-});
-
-export const deleteBoardMembership = (id) => ({
- type: EntryActionTypes.BOARD_MEMBERSHIP_DELETE,
- payload: {
- id,
- },
-});
-
-export const handleBoardMembershipDelete = (boardMembership) => ({
- type: EntryActionTypes.BOARD_MEMBERSHIP_DELETE_HANDLE,
- payload: {
- boardMembership,
- },
-});
diff --git a/client/src/actions/entry/comment-action.js b/client/src/actions/entry/comment-action.js
deleted file mode 100755
index 8e60b945..00000000
--- a/client/src/actions/entry/comment-action.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-export const createCommentActionInCurrentCard = (data) => ({
- type: EntryActionTypes.COMMENT_ACTION_IN_CURRENT_CARD_CREATE,
- payload: {
- data,
- },
-});
-
-export const updateCommentAction = (id, data) => ({
- type: EntryActionTypes.COMMENT_ACTION_UPDATE,
- payload: {
- id,
- data,
- },
-});
-
-export const deleteCommentAction = (id) => ({
- type: EntryActionTypes.COMMENT_ACTION_DELETE,
- payload: {
- id,
- },
-});
diff --git a/client/src/actions/entry/core.js b/client/src/actions/entry/core.js
deleted file mode 100644
index b6aa410b..00000000
--- a/client/src/actions/entry/core.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-// eslint-disable-next-line import/prefer-default-export
-export const initializeCore = () => ({
- type: EntryActionTypes.CORE_INITIALIZE,
- payload: {},
-});
diff --git a/client/src/actions/entry/index.js b/client/src/actions/entry/index.js
deleted file mode 100755
index 56339dcc..00000000
--- a/client/src/actions/entry/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-export * from './socket';
-export * from './login';
-export * from './core';
-export * from './modal';
-export * from './user';
-export * from './project';
-export * from './project-manager';
-export * from './board';
-export * from './board-membership';
-export * from './label';
-export * from './list';
-export * from './card';
-export * from './task';
-export * from './attachment';
-export * from './actions';
-export * from './action';
-export * from './comment-action';
-export * from './notification';
diff --git a/client/src/actions/entry/login.js b/client/src/actions/entry/login.js
deleted file mode 100755
index 7faf5323..00000000
--- a/client/src/actions/entry/login.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-export const authenticate = (data) => ({
- type: EntryActionTypes.AUTHENTICATE,
- payload: {
- data,
- },
-});
-
-export const clearAuthenticateError = () => ({
- type: EntryActionTypes.AUTHENTICATE_ERROR_CLEAR,
- payload: {},
-});
-
-export const logout = () => ({
- type: EntryActionTypes.LOGOUT,
- payload: {},
-});
diff --git a/client/src/actions/entry/notification.js b/client/src/actions/entry/notification.js
deleted file mode 100755
index 0f2a7395..00000000
--- a/client/src/actions/entry/notification.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-export const handleNotificationCreate = (notification) => ({
- type: EntryActionTypes.NOTIFICATION_CREATE_HANDLE,
- payload: {
- notification,
- },
-});
-
-export const deleteNotification = (id) => ({
- type: EntryActionTypes.NOTIFICATION_DELETE,
- payload: {
- id,
- },
-});
-
-export const handleNotificationDelete = (notification) => ({
- type: EntryActionTypes.NOTIFICATION_DELETE_HANDLE,
- payload: {
- notification,
- },
-});
diff --git a/client/src/actions/entry/project-manager.js b/client/src/actions/entry/project-manager.js
deleted file mode 100755
index 3fc6b42d..00000000
--- a/client/src/actions/entry/project-manager.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-export const createManagerInCurrentProject = (data) => ({
- type: EntryActionTypes.MANAGER_IN_CURRENT_PROJECT_CREATE,
- payload: {
- data,
- },
-});
-
-export const handleProjectManagerCreate = (projectManager) => ({
- type: EntryActionTypes.PROJECT_MANAGER_CREATE_HANDLE,
- payload: {
- projectManager,
- },
-});
-
-export const deleteProjectManager = (id) => ({
- type: EntryActionTypes.PROJECT_MANAGER_DELETE,
- payload: {
- id,
- },
-});
-
-export const handleProjectManagerDelete = (projectManager) => ({
- type: EntryActionTypes.PROJECT_MANAGER_DELETE_HANDLE,
- payload: {
- projectManager,
- },
-});
diff --git a/client/src/actions/entry/socket.js b/client/src/actions/entry/socket.js
deleted file mode 100644
index c200ecb5..00000000
--- a/client/src/actions/entry/socket.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-
-export const handleSocketDisconnect = () => ({
- type: EntryActionTypes.SOCKET_DISCONNECT_HANDLE,
- payload: {},
-});
-
-export const handleSocketReconnect = () => ({
- type: EntryActionTypes.SOCKET_RECONNECT_HANDLE,
- payload: {},
-});
diff --git a/client/src/actions/index.js b/client/src/actions/index.js
index 161add47..fb60dd42 100644
--- a/client/src/actions/index.js
+++ b/client/src/actions/index.js
@@ -1,19 +1,39 @@
-export * from './router';
-export * from './socket';
-export * from './login';
-export * from './core';
-export * from './modal';
-export * from './user';
-export * from './project';
-export * from './project-manager';
-export * from './board';
-export * from './board-membership';
-export * from './label';
-export * from './list';
-export * from './card';
-export * from './task';
-export * from './attachment';
-export * from './actions';
-export * from './action';
-export * from './comment-action';
-export * from './notification';
+import router from './router';
+import socket from './socket';
+import login from './login';
+import core from './core';
+import modals from './modals';
+import users from './users';
+import projects from './projects';
+import projectManagers from './project-managers';
+import boards from './boards';
+import boardMemberships from './board-memberships';
+import labels from './labels';
+import lists from './lists';
+import cards from './cards';
+import tasks from './tasks';
+import attachments from './attachments';
+import activities from './activities';
+import commentActivities from './comment-activities';
+import notifications from './notifications';
+
+export default {
+ ...router,
+ ...socket,
+ ...login,
+ ...core,
+ ...modals,
+ ...users,
+ ...projects,
+ ...projectManagers,
+ ...boards,
+ ...boardMemberships,
+ ...labels,
+ ...lists,
+ ...cards,
+ ...tasks,
+ ...attachments,
+ ...activities,
+ ...commentActivities,
+ ...notifications,
+};
diff --git a/client/src/actions/label.js b/client/src/actions/labels.js
similarity index 74%
rename from client/src/actions/label.js
rename to client/src/actions/labels.js
index 5a9c3072..fdb93124 100644
--- a/client/src/actions/label.js
+++ b/client/src/actions/labels.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createLabel = (label) => ({
+const createLabel = (label) => ({
type: ActionTypes.LABEL_CREATE,
payload: {
label,
@@ -23,14 +23,14 @@ createLabel.failure = (localId, error) => ({
},
});
-export const handleLabelCreate = (label) => ({
+const handleLabelCreate = (label) => ({
type: ActionTypes.LABEL_CREATE_HANDLE,
payload: {
label,
},
});
-export const updateLabel = (id, data) => ({
+const updateLabel = (id, data) => ({
type: ActionTypes.LABEL_UPDATE,
payload: {
id,
@@ -53,14 +53,14 @@ updateLabel.failure = (id, error) => ({
},
});
-export const handleLabelUpdate = (label) => ({
+const handleLabelUpdate = (label) => ({
type: ActionTypes.LABEL_UPDATE_HANDLE,
payload: {
label,
},
});
-export const deleteLabel = (id) => ({
+const deleteLabel = (id) => ({
type: ActionTypes.LABEL_DELETE,
payload: {
id,
@@ -82,14 +82,14 @@ deleteLabel.failure = (id, error) => ({
},
});
-export const handleLabelDelete = (label) => ({
+const handleLabelDelete = (label) => ({
type: ActionTypes.LABEL_DELETE_HANDLE,
payload: {
label,
},
});
-export const addLabelToCard = (id, cardId) => ({
+const addLabelToCard = (id, cardId) => ({
type: ActionTypes.LABEL_TO_CARD_ADD,
payload: {
id,
@@ -113,14 +113,14 @@ addLabelToCard.failure = (id, cardId, error) => ({
},
});
-export const handleLabelToCardAdd = (cardLabel) => ({
+const handleLabelToCardAdd = (cardLabel) => ({
type: ActionTypes.LABEL_TO_CARD_ADD_HANDLE,
payload: {
cardLabel,
},
});
-export const removeLabelFromCard = (id, cardId) => ({
+const removeLabelFromCard = (id, cardId) => ({
type: ActionTypes.LABEL_FROM_CARD_REMOVE,
payload: {
id,
@@ -144,14 +144,14 @@ removeLabelFromCard.failure = (id, cardId, error) => ({
},
});
-export const handleLabelFromCardRemove = (cardLabel) => ({
+const handleLabelFromCardRemove = (cardLabel) => ({
type: ActionTypes.LABEL_FROM_CARD_REMOVE_HANDLE,
payload: {
cardLabel,
},
});
-export const addLabelToBoardFilter = (id, boardId) => ({
+const addLabelToBoardFilter = (id, boardId) => ({
type: ActionTypes.LABEL_TO_BOARD_FILTER_ADD,
payload: {
id,
@@ -159,10 +159,25 @@ export const addLabelToBoardFilter = (id, boardId) => ({
},
});
-export const removeLabelFromBoardFilter = (id, boardId) => ({
+const removeLabelFromBoardFilter = (id, boardId) => ({
type: ActionTypes.LABEL_FROM_BOARD_FILTER_REMOVE,
payload: {
id,
boardId,
},
});
+
+export default {
+ createLabel,
+ handleLabelCreate,
+ updateLabel,
+ handleLabelUpdate,
+ deleteLabel,
+ handleLabelDelete,
+ addLabelToCard,
+ handleLabelToCardAdd,
+ removeLabelFromCard,
+ handleLabelFromCardRemove,
+ addLabelToBoardFilter,
+ removeLabelFromBoardFilter,
+};
diff --git a/client/src/actions/list.js b/client/src/actions/lists.js
similarity index 78%
rename from client/src/actions/list.js
rename to client/src/actions/lists.js
index 71702be7..59f944f4 100644
--- a/client/src/actions/list.js
+++ b/client/src/actions/lists.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createList = (list) => ({
+const createList = (list) => ({
type: ActionTypes.LIST_CREATE,
payload: {
list,
@@ -23,14 +23,14 @@ createList.failure = (localId, error) => ({
},
});
-export const handleListCreate = (list) => ({
+const handleListCreate = (list) => ({
type: ActionTypes.LIST_CREATE_HANDLE,
payload: {
list,
},
});
-export const updateList = (id, data) => ({
+const updateList = (id, data) => ({
type: ActionTypes.LIST_UPDATE,
payload: {
id,
@@ -53,14 +53,14 @@ updateList.failure = (id, error) => ({
},
});
-export const handleListUpdate = (list) => ({
+const handleListUpdate = (list) => ({
type: ActionTypes.LIST_UPDATE_HANDLE,
payload: {
list,
},
});
-export const deleteList = (id) => ({
+const deleteList = (id) => ({
type: ActionTypes.LIST_DELETE,
payload: {
id,
@@ -82,9 +82,18 @@ deleteList.failure = (id, error) => ({
},
});
-export const handleListDelete = (list) => ({
+const handleListDelete = (list) => ({
type: ActionTypes.LIST_DELETE_HANDLE,
payload: {
list,
},
});
+
+export default {
+ createList,
+ handleListCreate,
+ updateList,
+ handleListUpdate,
+ deleteList,
+ handleListDelete,
+};
diff --git a/client/src/actions/login.js b/client/src/actions/login.js
index 608ee79b..8ffcded1 100644
--- a/client/src/actions/login.js
+++ b/client/src/actions/login.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const authenticate = (data) => ({
+const authenticate = (data) => ({
type: ActionTypes.AUTHENTICATE,
payload: {
data,
@@ -21,12 +21,12 @@ authenticate.failure = (error) => ({
},
});
-export const clearAuthenticateError = () => ({
+const clearAuthenticateError = () => ({
type: ActionTypes.AUTHENTICATE_ERROR_CLEAR,
payload: {},
});
-export const logout = () => ({
- type: ActionTypes.LOGOUT,
- payload: {},
-});
+export default {
+ authenticate,
+ clearAuthenticateError,
+};
diff --git a/client/src/actions/modal.js b/client/src/actions/modals.js
similarity index 61%
rename from client/src/actions/modal.js
rename to client/src/actions/modals.js
index 29ed6978..45476af1 100644
--- a/client/src/actions/modal.js
+++ b/client/src/actions/modals.js
@@ -1,13 +1,18 @@
import ActionTypes from '../constants/ActionTypes';
-export const openModal = (type) => ({
+const openModal = (type) => ({
type: ActionTypes.MODAL_OPEN,
payload: {
type,
},
});
-export const closeModal = () => ({
+const closeModal = () => ({
type: ActionTypes.MODAL_CLOSE,
payload: {},
});
+
+export default {
+ openModal,
+ closeModal,
+};
diff --git a/client/src/actions/notification.js b/client/src/actions/notifications.js
similarity index 67%
rename from client/src/actions/notification.js
rename to client/src/actions/notifications.js
index 0ac3d0fc..5e3084b9 100644
--- a/client/src/actions/notification.js
+++ b/client/src/actions/notifications.js
@@ -1,16 +1,16 @@
import ActionTypes from '../constants/ActionTypes';
-export const handleNotificationCreate = (notification, users, cards, actions) => ({
+const handleNotificationCreate = (notification, users, cards, activities) => ({
type: ActionTypes.NOTIFICATION_CREATE_HANDLE,
payload: {
notification,
users,
cards,
- actions,
+ activities,
},
});
-export const deleteNotification = (id) => ({
+const deleteNotification = (id) => ({
type: ActionTypes.NOTIFICATION_DELETE,
payload: {
id,
@@ -32,9 +32,15 @@ deleteNotification.failure = (id, error) => ({
},
});
-export const handleNotificationDelete = (notification) => ({
+const handleNotificationDelete = (notification) => ({
type: ActionTypes.NOTIFICATION_DELETE_HANDLE,
payload: {
notification,
},
});
+
+export default {
+ handleNotificationCreate,
+ deleteNotification,
+ handleNotificationDelete,
+};
diff --git a/client/src/actions/project-manager.js b/client/src/actions/project-managers.js
similarity index 79%
rename from client/src/actions/project-manager.js
rename to client/src/actions/project-managers.js
index 32e8125a..d7595b9b 100644
--- a/client/src/actions/project-manager.js
+++ b/client/src/actions/project-managers.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createProjectManager = (projectManager) => ({
+const createProjectManager = (projectManager) => ({
type: ActionTypes.PROJECT_MANAGER_CREATE,
payload: {
projectManager,
@@ -23,7 +23,7 @@ createProjectManager.failure = (localId, error) => ({
},
});
-export const handleProjectManagerCreate = (
+const handleProjectManagerCreate = (
projectManager,
project,
board,
@@ -38,6 +38,7 @@ export const handleProjectManagerCreate = (
cardLabels,
tasks,
attachments,
+ deletedNotifications,
) => ({
type: ActionTypes.PROJECT_MANAGER_CREATE_HANDLE,
payload: {
@@ -55,6 +56,7 @@ export const handleProjectManagerCreate = (
cardLabels,
tasks,
attachments,
+ deletedNotifications,
},
});
@@ -67,7 +69,7 @@ handleProjectManagerCreate.fetchProject = (id, currentUserId, currentBoardId) =>
},
});
-export const deleteProjectManager = (id, isCurrentUser, isCurrentProject) => ({
+const deleteProjectManager = (id, isCurrentUser, isCurrentProject) => ({
type: ActionTypes.PROJECT_MANAGER_DELETE,
payload: {
id,
@@ -91,7 +93,7 @@ deleteProjectManager.failure = (id, error) => ({
},
});
-export const handleProjectManagerDelete = (projectManager, isCurrentUser, isCurrentProject) => ({
+const handleProjectManagerDelete = (projectManager, isCurrentUser, isCurrentProject) => ({
type: ActionTypes.PROJECT_MANAGER_DELETE_HANDLE,
payload: {
projectManager,
@@ -99,3 +101,10 @@ export const handleProjectManagerDelete = (projectManager, isCurrentUser, isCurr
isCurrentProject,
},
});
+
+export default {
+ createProjectManager,
+ handleProjectManagerCreate,
+ deleteProjectManager,
+ handleProjectManagerDelete,
+};
diff --git a/client/src/actions/project.js b/client/src/actions/projects.js
similarity index 77%
rename from client/src/actions/project.js
rename to client/src/actions/projects.js
index 099cd7c7..d6374bdd 100644
--- a/client/src/actions/project.js
+++ b/client/src/actions/projects.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createProject = (data) => ({
+const createProject = (data) => ({
type: ActionTypes.PROJECT_CREATE,
payload: {
data,
@@ -22,7 +22,7 @@ createProject.failure = (error) => ({
},
});
-export const handleProjectCreate = (project, users, projectManagers, boards, boardMemberships) => ({
+const handleProjectCreate = (project, users, projectManagers, boards, boardMemberships) => ({
type: ActionTypes.PROJECT_CREATE_HANDLE,
payload: {
project,
@@ -33,7 +33,7 @@ export const handleProjectCreate = (project, users, projectManagers, boards, boa
},
});
-export const updateProject = (id, data) => ({
+const updateProject = (id, data) => ({
type: ActionTypes.PROJECT_UPDATE,
payload: {
id,
@@ -56,14 +56,14 @@ updateProject.failure = (id, error) => ({
},
});
-export const handleProjectUpdate = (project) => ({
+const handleProjectUpdate = (project) => ({
type: ActionTypes.PROJECT_UPDATE_HANDLE,
payload: {
project,
},
});
-export const updateProjectBackgroundImage = (id) => ({
+const updateProjectBackgroundImage = (id) => ({
type: ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE,
payload: {
id,
@@ -85,7 +85,7 @@ updateProjectBackgroundImage.failure = (id, error) => ({
},
});
-export const deleteProject = (id) => ({
+const deleteProject = (id) => ({
type: ActionTypes.PROJECT_DELETE,
payload: {
id,
@@ -107,9 +107,19 @@ deleteProject.failure = (id, error) => ({
},
});
-export const handleProjectDelete = (project) => ({
+const handleProjectDelete = (project) => ({
type: ActionTypes.PROJECT_DELETE_HANDLE,
payload: {
project,
},
});
+
+export default {
+ createProject,
+ handleProjectCreate,
+ updateProject,
+ handleProjectUpdate,
+ updateProjectBackgroundImage,
+ deleteProject,
+ handleProjectDelete,
+};
diff --git a/client/src/actions/router.js b/client/src/actions/router.js
index 27fead85..ba743aa2 100644
--- a/client/src/actions/router.js
+++ b/client/src/actions/router.js
@@ -1,7 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-// eslint-disable-next-line import/prefer-default-export
-export const handleLocationChange = (
+const handleLocationChange = (
board,
users,
projects,
@@ -13,7 +12,7 @@ export const handleLocationChange = (
cardLabels,
tasks,
attachments,
- notifications,
+ deletedNotifications,
) => ({
type: ActionTypes.LOCATION_CHANGE_HANDLE,
payload: {
@@ -28,7 +27,7 @@ export const handleLocationChange = (
cardLabels,
tasks,
attachments,
- notifications,
+ deletedNotifications,
},
});
@@ -38,3 +37,7 @@ handleLocationChange.fetchBoard = (id) => ({
id,
},
});
+
+export default {
+ handleLocationChange,
+};
diff --git a/client/src/actions/socket.js b/client/src/actions/socket.js
index de6d42b1..8f6fdf9a 100644
--- a/client/src/actions/socket.js
+++ b/client/src/actions/socket.js
@@ -1,11 +1,11 @@
import ActionTypes from '../constants/ActionTypes';
-export const handleSocketDisconnect = () => ({
+const handleSocketDisconnect = () => ({
type: ActionTypes.SOCKET_DISCONNECT_HANDLE,
payload: {},
});
-export const handleSocketReconnect = (
+const handleSocketReconnect = (
user,
board,
users,
@@ -20,7 +20,7 @@ export const handleSocketReconnect = (
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
) => ({
type: ActionTypes.SOCKET_RECONNECT_HANDLE,
@@ -39,7 +39,7 @@ export const handleSocketReconnect = (
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
},
});
@@ -51,3 +51,8 @@ handleSocketReconnect.fetchCore = (currentUserId, currentBoardId) => ({
currentBoardId,
},
});
+
+export default {
+ handleSocketDisconnect,
+ handleSocketReconnect,
+};
diff --git a/client/src/actions/task.js b/client/src/actions/tasks.js
similarity index 78%
rename from client/src/actions/task.js
rename to client/src/actions/tasks.js
index e13752c7..679ade0f 100644
--- a/client/src/actions/task.js
+++ b/client/src/actions/tasks.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createTask = (task) => ({
+const createTask = (task) => ({
type: ActionTypes.TASK_CREATE,
payload: {
task,
@@ -23,14 +23,14 @@ createTask.failure = (localId, error) => ({
},
});
-export const handleTaskCreate = (task) => ({
+const handleTaskCreate = (task) => ({
type: ActionTypes.TASK_CREATE_HANDLE,
payload: {
task,
},
});
-export const updateTask = (id, data) => ({
+const updateTask = (id, data) => ({
type: ActionTypes.TASK_UPDATE,
payload: {
id,
@@ -53,14 +53,14 @@ updateTask.failure = (id, error) => ({
},
});
-export const handleTaskUpdate = (task) => ({
+const handleTaskUpdate = (task) => ({
type: ActionTypes.TASK_UPDATE_HANDLE,
payload: {
task,
},
});
-export const deleteTask = (id) => ({
+const deleteTask = (id) => ({
type: ActionTypes.TASK_DELETE,
payload: {
id,
@@ -82,9 +82,18 @@ deleteTask.failure = (id, error) => ({
},
});
-export const handleTaskDelete = (task) => ({
+const handleTaskDelete = (task) => ({
type: ActionTypes.TASK_DELETE_HANDLE,
payload: {
task,
},
});
+
+export default {
+ createTask,
+ handleTaskCreate,
+ updateTask,
+ handleTaskUpdate,
+ deleteTask,
+ handleTaskDelete,
+};
diff --git a/client/src/actions/user.js b/client/src/actions/users.js
similarity index 74%
rename from client/src/actions/user.js
rename to client/src/actions/users.js
index 06018f53..a1e8648a 100644
--- a/client/src/actions/user.js
+++ b/client/src/actions/users.js
@@ -1,6 +1,6 @@
import ActionTypes from '../constants/ActionTypes';
-export const createUser = (data) => ({
+const createUser = (data) => ({
type: ActionTypes.USER_CREATE,
payload: {
data,
@@ -21,19 +21,19 @@ createUser.failure = (error) => ({
},
});
-export const handleUserCreate = (user) => ({
+const handleUserCreate = (user) => ({
type: ActionTypes.USER_CREATE_HANDLE,
payload: {
user,
},
});
-export const clearUserCreateError = () => ({
+const clearUserCreateError = () => ({
type: ActionTypes.USER_CREATE_ERROR_CLEAR,
payload: {},
});
-export const updateUser = (id, data) => ({
+const updateUser = (id, data) => ({
type: ActionTypes.USER_UPDATE,
payload: {
id,
@@ -56,7 +56,7 @@ updateUser.failure = (id, error) => ({
},
});
-export const handleUserUpdate = (user, users, isCurrent) => ({
+const handleUserUpdate = (user, users, isCurrent) => ({
type: ActionTypes.USER_UPDATE_HANDLE,
payload: {
user,
@@ -65,7 +65,7 @@ export const handleUserUpdate = (user, users, isCurrent) => ({
},
});
-export const updateUserEmail = (id, data) => ({
+const updateUserEmail = (id, data) => ({
type: ActionTypes.USER_EMAIL_UPDATE,
payload: {
id,
@@ -88,14 +88,14 @@ updateUserEmail.failure = (id, error) => ({
},
});
-export const clearUserEmailUpdateError = (id) => ({
+const clearUserEmailUpdateError = (id) => ({
type: ActionTypes.USER_EMAIL_UPDATE_ERROR_CLEAR,
payload: {
id,
},
});
-export const updateUserPassword = (id, data) => ({
+const updateUserPassword = (id, data) => ({
type: ActionTypes.USER_PASSWORD_UPDATE,
payload: {
id,
@@ -118,14 +118,14 @@ updateUserPassword.failure = (id, error) => ({
},
});
-export const clearUserPasswordUpdateError = (id) => ({
+const clearUserPasswordUpdateError = (id) => ({
type: ActionTypes.USER_PASSWORD_UPDATE_ERROR_CLEAR,
payload: {
id,
},
});
-export const updateUserUsername = (id, data) => ({
+const updateUserUsername = (id, data) => ({
type: ActionTypes.USER_USERNAME_UPDATE,
payload: {
id,
@@ -148,14 +148,14 @@ updateUserUsername.failure = (id, error) => ({
},
});
-export const clearUserUsernameUpdateError = (id) => ({
+const clearUserUsernameUpdateError = (id) => ({
type: ActionTypes.USER_USERNAME_UPDATE_ERROR_CLEAR,
payload: {
id,
},
});
-export const updateUserAvatar = (id) => ({
+const updateUserAvatar = (id) => ({
type: ActionTypes.USER_AVATAR_UPDATE,
payload: {
id,
@@ -177,7 +177,7 @@ updateUserAvatar.failure = (id, error) => ({
},
});
-export const deleteUser = (id) => ({
+const deleteUser = (id) => ({
type: ActionTypes.USER_DELETE,
payload: {
id,
@@ -199,14 +199,14 @@ deleteUser.failure = (id, error) => ({
},
});
-export const handleUserDelete = (user) => ({
+const handleUserDelete = (user) => ({
type: ActionTypes.USER_DELETE_HANDLE,
payload: {
user,
},
});
-export const addUserToCard = (id, cardId, isCurrent) => ({
+const addUserToCard = (id, cardId, isCurrent) => ({
type: ActionTypes.USER_TO_CARD_ADD,
payload: {
id,
@@ -231,14 +231,14 @@ addUserToCard.failure = (id, cardId, error) => ({
},
});
-export const handleUserToCardAdd = (cardMembership) => ({
+const handleUserToCardAdd = (cardMembership) => ({
type: ActionTypes.USER_TO_CARD_ADD_HANDLE,
payload: {
cardMembership,
},
});
-export const removeUserFromCard = (id, cardId) => ({
+const removeUserFromCard = (id, cardId) => ({
type: ActionTypes.USER_FROM_CARD_REMOVE,
payload: {
id,
@@ -262,14 +262,14 @@ removeUserFromCard.failure = (id, cardId, error) => ({
},
});
-export const handleUserFromCardRemove = (cardMembership) => ({
+const handleUserFromCardRemove = (cardMembership) => ({
type: ActionTypes.USER_FROM_CARD_REMOVE_HANDLE,
payload: {
cardMembership,
},
});
-export const addUserToBoardFilter = (id, boardId) => ({
+const addUserToBoardFilter = (id, boardId) => ({
type: ActionTypes.USER_TO_BOARD_FILTER_ADD,
payload: {
id,
@@ -277,10 +277,33 @@ export const addUserToBoardFilter = (id, boardId) => ({
},
});
-export const removeUserFromBoardFilter = (id, boardId) => ({
+const removeUserFromBoardFilter = (id, boardId) => ({
type: ActionTypes.USER_FROM_BOARD_FILTER_REMOVE,
payload: {
id,
boardId,
},
});
+
+export default {
+ createUser,
+ handleUserCreate,
+ clearUserCreateError,
+ updateUser,
+ handleUserUpdate,
+ updateUserEmail,
+ clearUserEmailUpdateError,
+ updateUserPassword,
+ clearUserPasswordUpdateError,
+ updateUserUsername,
+ clearUserUsernameUpdateError,
+ updateUserAvatar,
+ deleteUser,
+ handleUserDelete,
+ addUserToCard,
+ handleUserToCardAdd,
+ removeUserFromCard,
+ handleUserFromCardRemove,
+ addUserToBoardFilter,
+ removeUserFromBoardFilter,
+};
diff --git a/client/src/api/actions.js b/client/src/api/actions.js
deleted file mode 100755
index cc1d6c09..00000000
--- a/client/src/api/actions.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import socket from './socket';
-
-/* Transformers */
-
-export const transformAction = (action) => ({
- ...action,
- createdAt: new Date(action.createdAt),
-});
-
-/* Actions */
-
-const getActions = (cardId, data) =>
- socket.get(`/cards/${cardId}/actions`, data).then((body) => ({
- ...body,
- items: body.items.map(transformAction),
- }));
-
-/* Event handlers */
-
-const makeHandleActionCreate = (next) => (body) => {
- next({
- ...body,
- item: transformAction(body.item),
- });
-};
-
-const makeHandleActionUpdate = makeHandleActionCreate;
-
-const makeHandleActionDelete = makeHandleActionCreate;
-
-export default {
- getActions,
- makeHandleActionCreate,
- makeHandleActionUpdate,
- makeHandleActionDelete,
-};
diff --git a/client/src/api/activities.js b/client/src/api/activities.js
new file mode 100755
index 00000000..b99999bf
--- /dev/null
+++ b/client/src/api/activities.js
@@ -0,0 +1,36 @@
+import socket from './socket';
+
+/* Transformers */
+
+export const transformActivity = (activity) => ({
+ ...activity,
+ createdAt: new Date(activity.createdAt),
+});
+
+/* Actions */
+
+const getActivities = (cardId, data) =>
+ socket.get(`/cards/${cardId}/actions`, data).then((body) => ({
+ ...body,
+ items: body.items.map(transformActivity),
+ }));
+
+/* Event handlers */
+
+const makeHandleActivityCreate = (next) => (body) => {
+ next({
+ ...body,
+ item: transformActivity(body.item),
+ });
+};
+
+const makeHandleActivityUpdate = makeHandleActivityCreate;
+
+const makeHandleActivityDelete = makeHandleActivityCreate;
+
+export default {
+ getActivities,
+ makeHandleActivityCreate,
+ makeHandleActivityUpdate,
+ makeHandleActivityDelete,
+};
diff --git a/client/src/api/cards.js b/client/src/api/cards.js
index 353f8f7b..b8e26244 100755
--- a/client/src/api/cards.js
+++ b/client/src/api/cards.js
@@ -78,14 +78,9 @@ const makeHandleCardCreate = (next) => (body) => {
});
};
-const makeHandleCardUpdate = (next) => (body) => {
- next({
- ...body,
- item: transformCard(body.item),
- });
-};
+const makeHandleCardUpdate = makeHandleCardCreate;
-const makeHandleCardDelete = makeHandleCardUpdate;
+const makeHandleCardDelete = makeHandleCardCreate;
export default {
getCards,
diff --git a/client/src/api/comment-actions.js b/client/src/api/comment-actions.js
deleted file mode 100755
index 40f67db6..00000000
--- a/client/src/api/comment-actions.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import socket from './socket';
-import { transformAction } from './actions';
-
-/* Actions */
-
-const createCommentAction = (cardId, data) =>
- socket.post(`/cards/${cardId}/comment-actions`, data).then((body) => ({
- ...body,
- item: transformAction(body.item),
- }));
-
-const updateCommentAction = (id, data) =>
- socket.patch(`/comment-actions/${id}`, data).then((body) => ({
- ...body,
- item: transformAction(body.item),
- }));
-
-const deleteCommentAction = (id) =>
- socket.delete(`/comment-actions/${id}`).then((body) => ({
- ...body,
- item: transformAction(body.item),
- }));
-
-export default {
- createCommentAction,
- updateCommentAction,
- deleteCommentAction,
-};
diff --git a/client/src/api/comment-activities.js b/client/src/api/comment-activities.js
new file mode 100755
index 00000000..3d378639
--- /dev/null
+++ b/client/src/api/comment-activities.js
@@ -0,0 +1,28 @@
+import socket from './socket';
+import { transformActivity } from './activities';
+
+/* Actions */
+
+const createCommentActivity = (cardId, data) =>
+ socket.post(`/cards/${cardId}/comment-actions`, data).then((body) => ({
+ ...body,
+ item: transformActivity(body.item),
+ }));
+
+const updateCommentActivity = (id, data) =>
+ socket.patch(`/comment-actions/${id}`, data).then((body) => ({
+ ...body,
+ item: transformActivity(body.item),
+ }));
+
+const deleteCommentActivity = (id) =>
+ socket.delete(`/comment-actions/${id}`).then((body) => ({
+ ...body,
+ item: transformActivity(body.item),
+ }));
+
+export default {
+ createCommentActivity,
+ updateCommentActivity,
+ deleteCommentActivity,
+};
diff --git a/client/src/api/index.js b/client/src/api/index.js
index b7a49076..fd9db7c0 100755
--- a/client/src/api/index.js
+++ b/client/src/api/index.js
@@ -13,8 +13,8 @@ import cardMemberships from './card-memberships';
import cardLabels from './card-labels';
import tasks from './tasks';
import attachments from './attachments';
-import actions from './actions';
-import commentActions from './comment-actions';
+import activities from './activities';
+import commentActivities from './comment-activities';
import notifications from './notifications';
export { http, socket };
@@ -33,7 +33,7 @@ export default {
...cardLabels,
...tasks,
...attachments,
- ...actions,
- ...commentActions,
+ ...activities,
+ ...commentActivities,
...notifications,
};
diff --git a/client/src/api/notifications.js b/client/src/api/notifications.js
index 246165fc..3fd664fd 100755
--- a/client/src/api/notifications.js
+++ b/client/src/api/notifications.js
@@ -1,33 +1,61 @@
+import omit from 'lodash/omit';
+
import socket from './socket';
import { transformCard } from './cards';
-import { transformAction } from './actions';
+import { transformActivity } from './activities';
+
+/* Transformers */
+
+export const transformNotification = (notification) => ({
+ ...omit(notification, 'actionId'),
+ activityId: notification.actionId,
+});
/* Actions */
const getNotifications = () =>
socket.get('/notifications').then((body) => ({
...body,
+ items: body.items.map(transformNotification),
included: {
- ...body.included,
+ ...omit(body.included, 'actions'),
cards: body.included.cards.map(transformCard),
- actions: body.included.actions.map(transformAction),
+ activities: body.included.actions.map(transformActivity),
},
}));
const getNotification = (id) =>
socket.get(`/notifications/${id}`).then((body) => ({
...body,
+ item: transformNotification(body.item),
included: {
- ...body.included,
+ ...omit(body.included, 'actions'),
cards: body.included.cards.map(transformCard),
- actions: body.included.actions.map(transformAction),
+ activities: body.included.actions.map(transformActivity),
},
}));
-const updateNotifications = (ids, data) => socket.patch(`/notifications/${ids.join(',')}`, data);
+const updateNotifications = (ids, data) =>
+ socket.patch(`/notifications/${ids.join(',')}`, data).then((body) => ({
+ ...body,
+ items: body.items.map(transformNotification),
+ }));
+
+/* Event handlers */
+
+const makeHandleNotificationCreate = (next) => (body) => {
+ next({
+ ...body,
+ item: transformNotification(body.item),
+ });
+};
+
+const makeHandleNotificationUpdate = makeHandleNotificationCreate;
export default {
getNotifications,
getNotification,
updateNotifications,
+ makeHandleNotificationCreate,
+ makeHandleNotificationUpdate,
};
diff --git a/client/src/components/CardModal/Actions/index.js b/client/src/components/CardModal/Actions/index.js
deleted file mode 100755
index c8b328f7..00000000
--- a/client/src/components/CardModal/Actions/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import Actions from './Actions';
-
-export default Actions;
diff --git a/client/src/components/CardModal/Actions/Actions.jsx b/client/src/components/CardModal/Activities/Activities.jsx
similarity index 93%
rename from client/src/components/CardModal/Actions/Actions.jsx
rename to client/src/components/CardModal/Activities/Activities.jsx
index 62813213..d5790114 100755
--- a/client/src/components/CardModal/Actions/Actions.jsx
+++ b/client/src/components/CardModal/Activities/Activities.jsx
@@ -3,13 +3,13 @@ import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { Button, Comment, Icon, Loader, Visibility } from 'semantic-ui-react';
-import { ActionTypes } from '../../../constants/Enums';
+import { ActivityTypes } from '../../../constants/Enums';
import CommentAdd from './CommentAdd';
import Item from './Item';
-import styles from './Actions.module.scss';
+import styles from './Activities.module.scss';
-const Actions = React.memo(
+const Activities = React.memo(
({
items,
isFetching,
@@ -60,7 +60,7 @@ const Actions = React.memo(
- {action.user.name}
- {` left a new comment «${action.data.text}» to `}
+ {activity.user.name}
+ {` left a new comment «${activity.data.text}» to `}
{card.name}
@@ -79,11 +79,11 @@ const NotificationsStep = React.memo(({ items, onDelete, onClose }) => {
{items.length > 0
? items.map((item) => (
- {item.card && item.action ? (
+ {item.card && item.activity ? (
<>
{renderItemContent(item)}
diff --git a/client/src/components/UsersModal/Item/ActionsPopup.jsx b/client/src/components/UsersModal/Item/ActionsPopup.jsx
index 862ab524..399a9bcb 100644
--- a/client/src/components/UsersModal/Item/ActionsPopup.jsx
+++ b/client/src/components/UsersModal/Item/ActionsPopup.jsx
@@ -101,7 +101,7 @@ const ActionsStep = React.memo(
{
- const allUsers = usersSelector(state);
- const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state);
- const memberships = membershipsForCurrentBoardSelector(state);
- const labels = labelsForCurrentBoardSelector(state);
- const filterUsers = filterUsersForCurrentBoardSelector(state);
- const filterLabels = filterLabelsForCurrentBoardSelector(state);
+ const allUsers = selectors.selectUsers(state);
+ const isCurrentUserManager = selectors.selectIsCurrentUserManagerForCurrentProject(state);
+ const memberships = selectors.selectMembershipsForCurrentBoard(state);
+ const labels = selectors.selectLabelsForCurrentBoard(state);
+ const filterUsers = selectors.selectFilterUsersForCurrentBoard(state);
+ const filterLabels = selectors.selectFilterLabelsForCurrentBoard(state);
return {
memberships,
@@ -43,15 +26,15 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onMembershipCreate: createMembershipInCurrentBoard,
- onMembershipDelete: deleteBoardMembership,
- onUserToFilterAdd: addUserToFilterInCurrentBoard,
- onUserFromFilterRemove: removeUserFromFilterInCurrentBoard,
- onLabelToFilterAdd: addLabelToFilterInCurrentBoard,
- onLabelFromFilterRemove: removeLabelFromFilterInCurrentBoard,
- onLabelCreate: createLabelInCurrentBoard,
- onLabelUpdate: updateLabel,
- onLabelDelete: deleteLabel,
+ onMembershipCreate: entryActions.createMembershipInCurrentBoard,
+ onMembershipDelete: entryActions.deleteBoardMembership,
+ onUserToFilterAdd: entryActions.addUserToFilterInCurrentBoard,
+ onUserFromFilterRemove: entryActions.removeUserFromFilterInCurrentBoard,
+ onLabelToFilterAdd: entryActions.addLabelToFilterInCurrentBoard,
+ onLabelFromFilterRemove: entryActions.removeLabelFromFilterInCurrentBoard,
+ onLabelCreate: entryActions.createLabelInCurrentBoard,
+ onLabelUpdate: entryActions.updateLabel,
+ onLabelDelete: entryActions.deleteLabel,
},
dispatch,
);
diff --git a/client/src/containers/BoardKanbanContainer.js b/client/src/containers/BoardKanbanContainer.js
index ed1ad614..5460f21f 100755
--- a/client/src/containers/BoardKanbanContainer.js
+++ b/client/src/containers/BoardKanbanContainer.js
@@ -1,18 +1,14 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import {
- isCurrentUserMemberForCurrentBoardSelector,
- listIdsForCurrentBoardSelector,
- pathSelector,
-} from '../selectors';
-import { createListInCurrentBoard, moveCard, moveList } from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import BoardKanban from '../components/BoardKanban';
const mapStateToProps = (state) => {
- const { cardId } = pathSelector(state);
- const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state);
- const listIds = listIdsForCurrentBoardSelector(state);
+ const { cardId } = selectors.selectPath(state);
+ const isCurrentUserMember = selectors.selectIsCurrentUserMemberForCurrentBoard(state);
+ const listIds = selectors.selectListIdsForCurrentBoard(state);
return {
listIds,
@@ -24,9 +20,9 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onListCreate: createListInCurrentBoard,
- onListMove: moveList,
- onCardMove: moveCard,
+ onListCreate: entryActions.createListInCurrentBoard,
+ onListMove: entryActions.moveList,
+ onCardMove: entryActions.moveCard,
},
dispatch,
);
diff --git a/client/src/containers/BoardWrapperContainer.js b/client/src/containers/BoardWrapperContainer.js
index d58886cb..a7fb0609 100755
--- a/client/src/containers/BoardWrapperContainer.js
+++ b/client/src/containers/BoardWrapperContainer.js
@@ -1,10 +1,10 @@
import { connect } from 'react-redux';
-import { currentBoardSelector } from '../selectors';
+import selectors from '../selectors';
import BoardWrapper from '../components/BoardWrapper';
const mapStateToProps = (state) => {
- const { type, isFetching } = currentBoardSelector(state);
+ const { type, isFetching } = selectors.selectCurrentBoard(state);
return {
type,
diff --git a/client/src/containers/BoardsContainer.js b/client/src/containers/BoardsContainer.js
index b0d193d4..a8bbf2e3 100755
--- a/client/src/containers/BoardsContainer.js
+++ b/client/src/containers/BoardsContainer.js
@@ -1,18 +1,14 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import {
- boardsForCurrentProjectSelector,
- isCurrentUserManagerForCurrentProjectSelector,
- pathSelector,
-} from '../selectors';
-import { createBoardInCurrentProject, deleteBoard, moveBoard, updateBoard } from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import Boards from '../components/Boards';
const mapStateToProps = (state) => {
- const { boardId } = pathSelector(state);
- const boards = boardsForCurrentProjectSelector(state);
- const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state);
+ const { boardId } = selectors.selectPath(state);
+ const boards = selectors.selectBoardsForCurrentProject(state);
+ const isCurrentUserManager = selectors.selectIsCurrentUserManagerForCurrentProject(state);
return {
items: boards,
@@ -24,10 +20,10 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onCreate: createBoardInCurrentProject,
- onUpdate: updateBoard,
- onMove: moveBoard,
- onDelete: deleteBoard,
+ onCreate: entryActions.createBoardInCurrentProject,
+ onUpdate: entryActions.updateBoard,
+ onMove: entryActions.moveBoard,
+ onDelete: entryActions.deleteBoard,
},
dispatch,
);
diff --git a/client/src/containers/CardContainer.js b/client/src/containers/CardContainer.js
index 09a93cc5..7da41559 100755
--- a/client/src/containers/CardContainer.js
+++ b/client/src/containers/CardContainer.js
@@ -1,57 +1,33 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import {
- isCurrentUserMemberForCurrentBoardSelector,
- labelsForCurrentBoardSelector,
- makeCardByIdSelector,
- makeLabelsByCardIdSelector,
- makeNotificationsTotalByCardIdSelector,
- makeTasksByCardIdSelector,
- makeUsersByCardIdSelector,
- membershipsForCurrentBoardSelector,
- pathSelector,
- projectsToListsForCurrentUserSelector,
-} from '../selectors';
-import {
- addLabelToCard,
- addUserToCard,
- createLabelInCurrentBoard,
- deleteCard,
- deleteLabel,
- fetchBoard,
- moveCard,
- removeLabelFromCard,
- removeUserFromCard,
- transferCard,
- updateLabel,
- updateCard,
-} from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import Card from '../components/Card';
const makeMapStateToProps = () => {
- const cardByIdSelector = makeCardByIdSelector();
- const usersByCardIdSelector = makeUsersByCardIdSelector();
- const labelsByCardIdSelector = makeLabelsByCardIdSelector();
- const tasksByCardIdSelector = makeTasksByCardIdSelector();
- const notificationsTotalByCardIdSelector = makeNotificationsTotalByCardIdSelector();
+ const selectCardById = selectors.makeSelectCardById();
+ const selectUsersByCardId = selectors.makeSelectUsersByCardId();
+ const selectLabelsByCardId = selectors.makeSelectLabelsByCardId();
+ const selectTasksByCardId = selectors.makeSelectTasksByCardId();
+ const selectNotificationsTotalByCardId = selectors.makeSelectNotificationsTotalByCardId();
return (state, { id, index }) => {
- const { projectId } = pathSelector(state);
- const allProjectsToLists = projectsToListsForCurrentUserSelector(state);
- const allBoardMemberships = membershipsForCurrentBoardSelector(state);
- const allLabels = labelsForCurrentBoardSelector(state);
- const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state);
+ const { projectId } = selectors.selectPath(state);
+ const allProjectsToLists = selectors.selectProjectsToListsForCurrentUser(state);
+ const allBoardMemberships = selectors.selectMembershipsForCurrentBoard(state);
+ const allLabels = selectors.selectLabelsForCurrentBoard(state);
+ const isCurrentUserMember = selectors.selectIsCurrentUserMemberForCurrentBoard(state);
- const { name, dueDate, timer, coverUrl, boardId, listId, isPersisted } = cardByIdSelector(
+ const { name, dueDate, timer, coverUrl, boardId, listId, isPersisted } = selectCardById(
state,
id,
);
- const users = usersByCardIdSelector(state, id);
- const labels = labelsByCardIdSelector(state, id);
- const tasks = tasksByCardIdSelector(state, id);
- const notificationsTotal = notificationsTotalByCardIdSelector(state, id);
+ const users = selectUsersByCardId(state, id);
+ const labels = selectLabelsByCardId(state, id);
+ const tasks = selectTasksByCardId(state, id);
+ const notificationsTotal = selectNotificationsTotalByCardId(state, id);
return {
id,
@@ -79,18 +55,18 @@ const makeMapStateToProps = () => {
const mapDispatchToProps = (dispatch, { id }) =>
bindActionCreators(
{
- onUpdate: (data) => updateCard(id, data),
- onMove: (listId, index) => moveCard(id, listId, index),
- onTransfer: (boardId, listId) => transferCard(id, boardId, listId),
- onDelete: () => deleteCard(id),
- onUserAdd: (userId) => addUserToCard(userId, id),
- onUserRemove: (userId) => removeUserFromCard(userId, id),
- onBoardFetch: fetchBoard,
- onLabelAdd: (labelId) => addLabelToCard(labelId, id),
- onLabelRemove: (labelId) => removeLabelFromCard(labelId, id),
- onLabelCreate: (data) => createLabelInCurrentBoard(data),
- onLabelUpdate: (labelId, data) => updateLabel(labelId, data),
- onLabelDelete: (labelId) => deleteLabel(labelId),
+ onUpdate: (data) => entryActions.updateCard(id, data),
+ onMove: (listId, index) => entryActions.moveCard(id, listId, index),
+ onTransfer: (boardId, listId) => entryActions.transferCard(id, boardId, listId),
+ onDelete: () => entryActions.deleteCard(id),
+ onUserAdd: (userId) => entryActions.addUserToCard(userId, id),
+ onUserRemove: (userId) => entryActions.removeUserFromCard(userId, id),
+ onBoardFetch: entryActions.fetchBoard,
+ onLabelAdd: (labelId) => entryActions.addLabelToCard(labelId, id),
+ onLabelRemove: (labelId) => entryActions.removeLabelFromCard(labelId, id),
+ onLabelCreate: (data) => entryActions.createLabelInCurrentBoard(data),
+ onLabelUpdate: (labelId, data) => entryActions.updateLabel(labelId, data),
+ onLabelDelete: (labelId) => entryActions.deleteLabel(labelId),
},
dispatch,
);
diff --git a/client/src/containers/CardModalContainer.js b/client/src/containers/CardModalContainer.js
index e5ae6aa7..b83d93c7 100755
--- a/client/src/containers/CardModalContainer.js
+++ b/client/src/containers/CardModalContainer.js
@@ -3,56 +3,18 @@ import { connect } from 'react-redux';
import { push } from 'connected-react-router';
import omit from 'lodash/omit';
-import {
- actionsForCurrentCardSelector,
- attachmentsForCurrentCardSelector,
- currentCardSelector,
- isCurrentUserManagerForCurrentProjectSelector,
- isCurrentUserMemberForCurrentBoardSelector,
- labelsForCurrentBoardSelector,
- labelsForCurrentCardSelector,
- membershipsForCurrentBoardSelector,
- pathSelector,
- projectsToListsForCurrentUserSelector,
- tasksForCurrentCardSelector,
- usersForCurrentCardSelector,
-} from '../selectors';
-import {
- addLabelToCurrentCard,
- addUserToCurrentCard,
- createAttachmentInCurrentCard,
- createCommentActionInCurrentCard,
- createLabelInCurrentBoard,
- createTaskInCurrentCard,
- deleteAttachment,
- deleteCommentAction,
- deleteCurrentCard,
- deleteLabel,
- deleteTask,
- fetchActionsInCurrentCard,
- fetchBoard,
- moveCurrentCard,
- moveTask,
- removeLabelFromCurrentCard,
- removeUserFromCurrentCard,
- toggleActionsDetailsInCurrentCard,
- transferCurrentCard,
- updateAttachment,
- updateCommentAction,
- updateCurrentCard,
- updateLabel,
- updateTask,
-} from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import Paths from '../constants/Paths';
import CardModal from '../components/CardModal';
const mapStateToProps = (state) => {
- const { projectId } = pathSelector(state);
- const allProjectsToLists = projectsToListsForCurrentUserSelector(state);
- const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state);
- const allBoardMemberships = membershipsForCurrentBoardSelector(state);
- const allLabels = labelsForCurrentBoardSelector(state);
- const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state);
+ const { projectId } = selectors.selectPath(state);
+ const allProjectsToLists = selectors.selectProjectsToListsForCurrentUser(state);
+ const isCurrentUserManager = selectors.selectIsCurrentUserManagerForCurrentProject(state);
+ const allBoardMemberships = selectors.selectMembershipsForCurrentBoard(state);
+ const allLabels = selectors.selectLabelsForCurrentBoard(state);
+ const isCurrentUserMember = selectors.selectIsCurrentUserMemberForCurrentBoard(state);
const {
name,
@@ -60,19 +22,19 @@ const mapStateToProps = (state) => {
dueDate,
timer,
isSubscribed,
- isActionsFetching,
- isActionsDetailsVisible,
- isActionsDetailsFetching,
- isAllActionsFetched,
+ isActivitiesFetching,
+ isAllActivitiesFetched,
+ isActivitiesDetailsVisible,
+ isActivitiesDetailsFetching,
boardId,
listId,
- } = currentCardSelector(state);
+ } = selectors.selectCurrentCard(state);
- const users = usersForCurrentCardSelector(state);
- const labels = labelsForCurrentCardSelector(state);
- const tasks = tasksForCurrentCardSelector(state);
- const attachments = attachmentsForCurrentCardSelector(state);
- const actions = actionsForCurrentCardSelector(state);
+ const users = selectors.selectUsersForCurrentCard(state);
+ const labels = selectors.selectLabelsForCurrentCard(state);
+ const tasks = selectors.selectTasksForCurrentCard(state);
+ const attachments = selectors.selectAttachmentsForCurrentCard(state);
+ const activities = selectors.selectActivitiesForCurrentCard(state);
return {
name,
@@ -80,10 +42,10 @@ const mapStateToProps = (state) => {
dueDate,
timer,
isSubscribed,
- isActionsFetching,
- isAllActionsFetched,
- isActionsDetailsVisible,
- isActionsDetailsFetching,
+ isActivitiesFetching,
+ isAllActivitiesFetched,
+ isActivitiesDetailsVisible,
+ isActivitiesDetailsFetching,
listId,
boardId,
projectId,
@@ -91,42 +53,42 @@ const mapStateToProps = (state) => {
labels,
tasks,
attachments,
- actions,
+ activities,
allProjectsToLists,
allBoardMemberships,
allLabels,
canEdit: isCurrentUserMember,
- canEditAllCommentActions: isCurrentUserManager,
+ canEditAllCommentActivities: isCurrentUserManager,
};
};
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onUpdate: updateCurrentCard,
- onMove: moveCurrentCard,
- onTransfer: transferCurrentCard,
- onDelete: deleteCurrentCard,
- onUserAdd: addUserToCurrentCard,
- onUserRemove: removeUserFromCurrentCard,
- onBoardFetch: fetchBoard,
- onLabelAdd: addLabelToCurrentCard,
- onLabelRemove: removeLabelFromCurrentCard,
- onLabelCreate: createLabelInCurrentBoard,
- onLabelUpdate: updateLabel,
- onLabelDelete: deleteLabel,
- onTaskCreate: createTaskInCurrentCard,
- onTaskUpdate: updateTask,
- onTaskMove: moveTask,
- onTaskDelete: deleteTask,
- onAttachmentCreate: createAttachmentInCurrentCard,
- onAttachmentUpdate: updateAttachment,
- onAttachmentDelete: deleteAttachment,
- onActionsFetch: fetchActionsInCurrentCard,
- onActionsDetailsToggle: toggleActionsDetailsInCurrentCard,
- onCommentActionCreate: createCommentActionInCurrentCard,
- onCommentActionUpdate: updateCommentAction,
- onCommentActionDelete: deleteCommentAction,
+ onUpdate: entryActions.updateCurrentCard,
+ onMove: entryActions.moveCurrentCard,
+ onTransfer: entryActions.transferCurrentCard,
+ onDelete: entryActions.deleteCurrentCard,
+ onUserAdd: entryActions.addUserToCurrentCard,
+ onUserRemove: entryActions.removeUserFromCurrentCard,
+ onBoardFetch: entryActions.fetchBoard,
+ onLabelAdd: entryActions.addLabelToCurrentCard,
+ onLabelRemove: entryActions.removeLabelFromCurrentCard,
+ onLabelCreate: entryActions.createLabelInCurrentBoard,
+ onLabelUpdate: entryActions.updateLabel,
+ onLabelDelete: entryActions.deleteLabel,
+ onTaskCreate: entryActions.createTaskInCurrentCard,
+ onTaskUpdate: entryActions.updateTask,
+ onTaskMove: entryActions.moveTask,
+ onTaskDelete: entryActions.deleteTask,
+ onAttachmentCreate: entryActions.createAttachmentInCurrentCard,
+ onAttachmentUpdate: entryActions.updateAttachment,
+ onAttachmentDelete: entryActions.deleteAttachment,
+ onActivitiesFetch: entryActions.fetchActivitiesInCurrentCard,
+ onActivitiesDetailsToggle: entryActions.toggleActivitiesDetailsInCurrentCard,
+ onCommentActivityCreate: entryActions.createCommentActivityInCurrentCard,
+ onCommentActivityUpdate: entryActions.updateCommentActivity,
+ onCommentActivityDelete: entryActions.deleteCommentActivity,
push,
},
dispatch,
diff --git a/client/src/containers/CoreContainer.js b/client/src/containers/CoreContainer.js
index 2a85b28a..d251927e 100755
--- a/client/src/containers/CoreContainer.js
+++ b/client/src/containers/CoreContainer.js
@@ -1,11 +1,11 @@
import { connect } from 'react-redux';
-import { currentModalSelector, currentProjectSelector } from '../selectors';
+import selectors from '../selectors';
import Core from '../components/Core';
const mapStateToProps = (state) => {
- const currentModal = currentModalSelector(state);
- const currentProject = currentProjectSelector(state);
+ const currentModal = selectors.selectCurrentModal(state);
+ const currentProject = selectors.selectCurrentProject(state);
return {
currentModal,
diff --git a/client/src/containers/CoreWrapperContainer.js b/client/src/containers/CoreWrapperContainer.js
index e8679b75..f50ca642 100755
--- a/client/src/containers/CoreWrapperContainer.js
+++ b/client/src/containers/CoreWrapperContainer.js
@@ -1,10 +1,10 @@
import { connect } from 'react-redux';
-import { isCoreInitializingSelector } from '../selectors';
+import selectors from '../selectors';
import CoreWrapper from '../components/CoreWrapper';
const mapStateToProps = (state) => {
- const isCoreInitializing = isCoreInitializingSelector(state);
+ const isCoreInitializing = selectors.selectIsCoreInitializing(state);
return {
isInitializing: isCoreInitializing,
diff --git a/client/src/containers/FixedContainer.js b/client/src/containers/FixedContainer.js
index 70d6813a..2b4e3639 100644
--- a/client/src/containers/FixedContainer.js
+++ b/client/src/containers/FixedContainer.js
@@ -1,11 +1,11 @@
import { connect } from 'react-redux';
-import { currentBoardSelector, pathSelector } from '../selectors';
+import selectors from '../selectors';
import Fixed from '../components/Fixed';
const mapStateToProps = (state) => {
- const { projectId } = pathSelector(state);
- const currentBoard = currentBoardSelector(state);
+ const { projectId } = selectors.selectPath(state);
+ const currentBoard = selectors.selectCurrentBoard(state);
return {
projectId,
diff --git a/client/src/containers/HeaderContainer.js b/client/src/containers/HeaderContainer.js
index 08434014..0ceb24a8 100755
--- a/client/src/containers/HeaderContainer.js
+++ b/client/src/containers/HeaderContainer.js
@@ -1,26 +1,15 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import {
- currentProjectSelector,
- currentUserSelector,
- isCurrentUserManagerForCurrentProjectSelector,
- notificationsForCurrentUserSelector,
-} from '../selectors';
-import {
- deleteNotification,
- logout,
- openProjectSettingsModal,
- openUserSettingsModal,
- openUsersModal,
-} from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import Header from '../components/Header';
const mapStateToProps = (state) => {
- const currentUser = currentUserSelector(state);
- const currentProject = currentProjectSelector(state);
- const notifications = notificationsForCurrentUserSelector(state);
- const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state);
+ const currentUser = selectors.selectCurrentUser(state);
+ const currentProject = selectors.selectCurrentProject(state);
+ const notifications = selectors.selectNotificationsForCurrentUser(state);
+ const isCurrentUserManager = selectors.selectIsCurrentUserManagerForCurrentProject(state);
return {
notifications,
@@ -34,11 +23,11 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onProjectSettingsClick: openProjectSettingsModal,
- onUsersClick: openUsersModal,
- onNotificationDelete: deleteNotification,
- onUserSettingsClick: openUserSettingsModal,
- onLogout: logout,
+ onProjectSettingsClick: entryActions.openProjectSettingsModal,
+ onUsersClick: entryActions.openUsersModal,
+ onNotificationDelete: entryActions.deleteNotification,
+ onUserSettingsClick: entryActions.openUserSettingsModal,
+ onLogout: entryActions.logout,
},
dispatch,
);
diff --git a/client/src/containers/ListContainer.js b/client/src/containers/ListContainer.js
index 84dac1f9..40da4e2e 100755
--- a/client/src/containers/ListContainer.js
+++ b/client/src/containers/ListContainer.js
@@ -1,22 +1,18 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import {
- isCurrentUserMemberForCurrentBoardSelector,
- makeCardIdsByListIdSelector,
- makeListByIdSelector,
-} from '../selectors';
-import { createCard, deleteList, updateList } from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import List from '../components/List';
const makeMapStateToProps = () => {
- const listByIdSelector = makeListByIdSelector();
- const cardIdsByListIdSelector = makeCardIdsByListIdSelector();
+ const selectListById = selectors.makeSelectListById();
+ const selectCardIdsByListId = selectors.makeSelectCardIdsByListId();
return (state, { id, index }) => {
- const { name, isPersisted } = listByIdSelector(state, id);
- const cardIds = cardIdsByListIdSelector(state, id);
- const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state);
+ const { name, isPersisted } = selectListById(state, id);
+ const cardIds = selectCardIdsByListId(state, id);
+ const isCurrentUserMember = selectors.selectIsCurrentUserMemberForCurrentBoard(state);
return {
id,
@@ -32,9 +28,9 @@ const makeMapStateToProps = () => {
const mapDispatchToProps = (dispatch, { id }) =>
bindActionCreators(
{
- onUpdate: (data) => updateList(id, data),
- onDelete: () => deleteList(id),
- onCardCreate: (data) => createCard(id, data),
+ onUpdate: (data) => entryActions.updateList(id, data),
+ onDelete: () => entryActions.deleteList(id),
+ onCardCreate: (data) => entryActions.createCard(id, data),
},
dispatch,
);
diff --git a/client/src/containers/LoginContainer.js b/client/src/containers/LoginContainer.js
index d895adb9..af25d0d5 100755
--- a/client/src/containers/LoginContainer.js
+++ b/client/src/containers/LoginContainer.js
@@ -1,7 +1,7 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import { authenticate, clearAuthenticateError } from '../actions/entry';
+import entryActions from '../entry-actions';
import Login from '../components/Login';
const mapStateToProps = ({
@@ -17,8 +17,8 @@ const mapStateToProps = ({
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onAuthenticate: authenticate,
- onMessageDismiss: clearAuthenticateError,
+ onAuthenticate: entryActions.authenticate,
+ onMessageDismiss: entryActions.clearAuthenticateError,
},
dispatch,
);
diff --git a/client/src/containers/ProjectAddModalContainer.js b/client/src/containers/ProjectAddModalContainer.js
index 5c20abe3..8ec9eacb 100755
--- a/client/src/containers/ProjectAddModalContainer.js
+++ b/client/src/containers/ProjectAddModalContainer.js
@@ -1,7 +1,7 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import { closeModal, createProject } from '../actions/entry';
+import entryActions from '../entry-actions';
import ProjectAddModal from '../components/ProjectAddModal';
const mapStateToProps = ({
@@ -16,8 +16,8 @@ const mapStateToProps = ({
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onCreate: createProject,
- onClose: closeModal,
+ onCreate: entryActions.createProject,
+ onClose: entryActions.closeModal,
},
dispatch,
);
diff --git a/client/src/containers/ProjectContainer.js b/client/src/containers/ProjectContainer.js
index 266d0f7e..9e24aa90 100755
--- a/client/src/containers/ProjectContainer.js
+++ b/client/src/containers/ProjectContainer.js
@@ -1,11 +1,11 @@
import { connect } from 'react-redux';
-import { currentModalSelector } from '../selectors';
+import selectors from '../selectors';
import ModalTypes from '../constants/ModalTypes';
import Project from '../components/Project';
const mapStateToProps = (state) => {
- const currentModal = currentModalSelector(state);
+ const currentModal = selectors.selectCurrentModal(state);
return {
isSettingsModalOpened: currentModal === ModalTypes.PROJECT_SETTINGS,
diff --git a/client/src/containers/ProjectSettingsModalContainer.js b/client/src/containers/ProjectSettingsModalContainer.js
index f4fa2970..e9c4ffcd 100644
--- a/client/src/containers/ProjectSettingsModalContainer.js
+++ b/client/src/containers/ProjectSettingsModalContainer.js
@@ -1,28 +1,17 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import {
- currentProjectSelector,
- managersForCurrentProjectSelector,
- usersSelector,
-} from '../selectors';
-import {
- closeModal,
- createManagerInCurrentProject,
- deleteCurrentProject,
- deleteProjectManager,
- updateCurrentProject,
- updateCurrentProjectBackgroundImage,
-} from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import ProjectSettingsModal from '../components/ProjectSettingsModal';
const mapStateToProps = (state) => {
- const users = usersSelector(state);
+ const users = selectors.selectUsers(state);
const { name, background, backgroundImage, isBackgroundImageUpdating } =
- currentProjectSelector(state);
+ selectors.selectCurrentProject(state);
- const managers = managersForCurrentProjectSelector(state);
+ const managers = selectors.selectManagersForCurrentProject(state);
return {
name,
@@ -37,12 +26,12 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onUpdate: updateCurrentProject,
- onBackgroundImageUpdate: updateCurrentProjectBackgroundImage,
- onDelete: deleteCurrentProject,
- onManagerCreate: createManagerInCurrentProject,
- onManagerDelete: deleteProjectManager,
- onClose: closeModal,
+ onUpdate: entryActions.updateCurrentProject,
+ onBackgroundImageUpdate: entryActions.updateCurrentProjectBackgroundImage,
+ onDelete: entryActions.deleteCurrentProject,
+ onManagerCreate: entryActions.createManagerInCurrentProject,
+ onManagerDelete: entryActions.deleteProjectManager,
+ onClose: entryActions.closeModal,
},
dispatch,
);
diff --git a/client/src/containers/ProjectsContainer.js b/client/src/containers/ProjectsContainer.js
index 1db7b074..b3622c7d 100755
--- a/client/src/containers/ProjectsContainer.js
+++ b/client/src/containers/ProjectsContainer.js
@@ -1,16 +1,16 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import { currentUserSelector, projectsForCurrentUserSelector } from '../selectors';
-import { openProjectAddModal } from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import Projects from '../components/Projects';
const mapStateToProps = (state) => {
- const { isAdmin } = currentUserSelector(state);
- const project = projectsForCurrentUserSelector(state);
+ const { isAdmin } = selectors.selectCurrentUser(state);
+ const projects = selectors.selectProjectsForCurrentUser(state);
return {
- items: project,
+ items: projects,
canAdd: isAdmin,
};
};
@@ -18,7 +18,7 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onAdd: openProjectAddModal,
+ onAdd: entryActions.openProjectAddModal,
},
dispatch,
);
diff --git a/client/src/containers/StaticContainer.js b/client/src/containers/StaticContainer.js
index 563b9506..01e10793 100644
--- a/client/src/containers/StaticContainer.js
+++ b/client/src/containers/StaticContainer.js
@@ -1,10 +1,10 @@
import { connect } from 'react-redux';
-import { pathSelector } from '../selectors';
+import selectors from '../selectors';
import Static from '../components/Static';
const mapStateToProps = (state) => {
- const { cardId, boardId, projectId } = pathSelector(state);
+ const { cardId, boardId, projectId } = selectors.selectPath(state);
return {
cardId,
diff --git a/client/src/containers/UserAddPopupContainer.js b/client/src/containers/UserAddPopupContainer.js
index 9915c0b7..10a042b8 100755
--- a/client/src/containers/UserAddPopupContainer.js
+++ b/client/src/containers/UserAddPopupContainer.js
@@ -1,7 +1,7 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import { clearUserCreateError, createUser } from '../actions/entry';
+import entryActions from '../entry-actions';
import UserAddPopup from '../components/UserAddPopup';
const mapStateToProps = ({
@@ -17,8 +17,8 @@ const mapStateToProps = ({
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onCreate: createUser,
- onMessageDismiss: clearUserCreateError,
+ onCreate: entryActions.createUser,
+ onMessageDismiss: entryActions.clearUserCreateError,
},
dispatch,
);
diff --git a/client/src/containers/UserSettingsModalContainer.js b/client/src/containers/UserSettingsModalContainer.js
index 388d3623..2b8dee87 100644
--- a/client/src/containers/UserSettingsModalContainer.js
+++ b/client/src/containers/UserSettingsModalContainer.js
@@ -1,19 +1,8 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import { currentUserSelector } from '../selectors';
-import {
- clearCurrentUserEmailUpdateError,
- clearCurrentUserPasswordUpdateError,
- clearCurrentUserUsernameUpdateError,
- closeModal,
- updateCurrentUser,
- updateCurrentUserAvatar,
- updateCurrentUserEmail,
- updateCurrentUserLanguage,
- updateCurrentUserPassword,
- updateCurrentUserUsername,
-} from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import UserSettingsModal from '../components/UserSettingsModal';
const mapStateToProps = (state) => {
@@ -30,7 +19,7 @@ const mapStateToProps = (state) => {
emailUpdateForm,
passwordUpdateForm,
usernameUpdateForm,
- } = currentUserSelector(state);
+ } = selectors.selectCurrentUser(state);
return {
email,
@@ -51,16 +40,16 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onUpdate: updateCurrentUser,
- onAvatarUpdate: updateCurrentUserAvatar,
- onLanguageUpdate: updateCurrentUserLanguage,
- onUsernameUpdate: updateCurrentUserUsername,
- onUsernameUpdateMessageDismiss: clearCurrentUserUsernameUpdateError,
- onEmailUpdate: updateCurrentUserEmail,
- onEmailUpdateMessageDismiss: clearCurrentUserEmailUpdateError,
- onPasswordUpdate: updateCurrentUserPassword,
- onPasswordUpdateMessageDismiss: clearCurrentUserPasswordUpdateError,
- onClose: closeModal,
+ onUpdate: entryActions.updateCurrentUser,
+ onAvatarUpdate: entryActions.updateCurrentUserAvatar,
+ onLanguageUpdate: entryActions.updateCurrentUserLanguage,
+ onUsernameUpdate: entryActions.updateCurrentUserUsername,
+ onUsernameUpdateMessageDismiss: entryActions.clearCurrentUserUsernameUpdateError,
+ onEmailUpdate: entryActions.updateCurrentUserEmail,
+ onEmailUpdateMessageDismiss: entryActions.clearCurrentUserEmailUpdateError,
+ onPasswordUpdate: entryActions.updateCurrentUserPassword,
+ onPasswordUpdateMessageDismiss: entryActions.clearCurrentUserPasswordUpdateError,
+ onClose: entryActions.closeModal,
},
dispatch,
);
diff --git a/client/src/containers/UsersModalContainer.js b/client/src/containers/UsersModalContainer.js
index eacd08c7..53503f5b 100755
--- a/client/src/containers/UsersModalContainer.js
+++ b/client/src/containers/UsersModalContainer.js
@@ -1,22 +1,12 @@
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
-import { usersExceptCurrentSelector } from '../selectors';
-import {
- clearUserEmailUpdateError,
- clearUserPasswordUpdateError,
- clearUserUsernameUpdateError,
- closeModal,
- deleteUser,
- updateUser,
- updateUserEmail,
- updateUserPassword,
- updateUserUsername,
-} from '../actions/entry';
+import selectors from '../selectors';
+import entryActions from '../entry-actions';
import UsersModal from '../components/UsersModal';
const mapStateToProps = (state) => {
- const users = usersExceptCurrentSelector(state);
+ const users = selectors.selectUsersExceptCurrent(state);
return {
items: users,
@@ -26,15 +16,15 @@ const mapStateToProps = (state) => {
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
- onUpdate: updateUser,
- onUsernameUpdate: updateUserUsername,
- onUsernameUpdateMessageDismiss: clearUserUsernameUpdateError,
- onEmailUpdate: updateUserEmail,
- onEmailUpdateMessageDismiss: clearUserEmailUpdateError,
- onPasswordUpdate: updateUserPassword,
- onPasswordUpdateMessageDismiss: clearUserPasswordUpdateError,
- onDelete: deleteUser,
- onClose: closeModal,
+ onUpdate: entryActions.updateUser,
+ onUsernameUpdate: entryActions.updateUserUsername,
+ onUsernameUpdateMessageDismiss: entryActions.clearUserUsernameUpdateError,
+ onEmailUpdate: entryActions.updateUserEmail,
+ onEmailUpdateMessageDismiss: entryActions.clearUserEmailUpdateError,
+ onPasswordUpdate: entryActions.updateUserPassword,
+ onPasswordUpdateMessageDismiss: entryActions.clearUserPasswordUpdateError,
+ onDelete: entryActions.deleteUser,
+ onClose: entryActions.closeModal,
},
dispatch,
);
diff --git a/client/src/entry-actions/activities.js b/client/src/entry-actions/activities.js
new file mode 100755
index 00000000..9663a7d7
--- /dev/null
+++ b/client/src/entry-actions/activities.js
@@ -0,0 +1,42 @@
+import EntryActionTypes from '../constants/EntryActionTypes';
+
+const fetchActivitiesInCurrentCard = () => ({
+ type: EntryActionTypes.ACTIVITIES_IN_CURRENT_CARD_FETCH,
+ payload: {},
+});
+
+const toggleActivitiesDetailsInCurrentCard = (isVisible) => ({
+ type: EntryActionTypes.ACTIVITIES_DETAILS_IN_CURRENT_CARD_TOGGLE,
+ payload: {
+ isVisible,
+ },
+});
+
+const handleActivityCreate = (activity) => ({
+ type: EntryActionTypes.ACTIVITY_CREATE_HANDLE,
+ payload: {
+ activity,
+ },
+});
+
+const handleActivityUpdate = (activity) => ({
+ type: EntryActionTypes.ACTIVITY_UPDATE_HANDLE,
+ payload: {
+ activity,
+ },
+});
+
+const handleActivityDelete = (activity) => ({
+ type: EntryActionTypes.ACTIVITY_DELETE_HANDLE,
+ payload: {
+ activity,
+ },
+});
+
+export default {
+ fetchActivitiesInCurrentCard,
+ toggleActivitiesDetailsInCurrentCard,
+ handleActivityCreate,
+ handleActivityUpdate,
+ handleActivityDelete,
+};
diff --git a/client/src/actions/entry/attachment.js b/client/src/entry-actions/attachments.js
similarity index 50%
rename from client/src/actions/entry/attachment.js
rename to client/src/entry-actions/attachments.js
index 128a120c..732fe5e5 100644
--- a/client/src/actions/entry/attachment.js
+++ b/client/src/entry-actions/attachments.js
@@ -1,13 +1,13 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
-export const createAttachmentInCurrentCard = (data) => ({
+const createAttachmentInCurrentCard = (data) => ({
type: EntryActionTypes.ATTACHMENT_IN_CURRENT_CARD_CREATE,
payload: {
data,
},
});
-export const handleAttachmentCreate = (attachment, requestId) => ({
+const handleAttachmentCreate = (attachment, requestId) => ({
type: EntryActionTypes.ATTACHMENT_CREATE_HANDLE,
payload: {
attachment,
@@ -15,7 +15,7 @@ export const handleAttachmentCreate = (attachment, requestId) => ({
},
});
-export const updateAttachment = (id, data) => ({
+const updateAttachment = (id, data) => ({
type: EntryActionTypes.ATTACHMENT_UPDATE,
payload: {
id,
@@ -23,23 +23,32 @@ export const updateAttachment = (id, data) => ({
},
});
-export const handleAttachmentUpdate = (attachment) => ({
+const handleAttachmentUpdate = (attachment) => ({
type: EntryActionTypes.ATTACHMENT_UPDATE_HANDLE,
payload: {
attachment,
},
});
-export const deleteAttachment = (id) => ({
+const deleteAttachment = (id) => ({
type: EntryActionTypes.ATTACHMENT_DELETE,
payload: {
id,
},
});
-export const handleAttachmentDelete = (attachment) => ({
+const handleAttachmentDelete = (attachment) => ({
type: EntryActionTypes.ATTACHMENT_DELETE_HANDLE,
payload: {
attachment,
},
});
+
+export default {
+ createAttachmentInCurrentCard,
+ handleAttachmentCreate,
+ updateAttachment,
+ handleAttachmentUpdate,
+ deleteAttachment,
+ handleAttachmentDelete,
+};
diff --git a/client/src/entry-actions/board-memberships.js b/client/src/entry-actions/board-memberships.js
new file mode 100644
index 00000000..ba245438
--- /dev/null
+++ b/client/src/entry-actions/board-memberships.js
@@ -0,0 +1,36 @@
+import EntryActionTypes from '../constants/EntryActionTypes';
+
+const createMembershipInCurrentBoard = (data) => ({
+ type: EntryActionTypes.MEMBERSHIP_IN_CURRENT_BOARD_CREATE,
+ payload: {
+ data,
+ },
+});
+
+const handleBoardMembershipCreate = (boardMembership) => ({
+ type: EntryActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE,
+ payload: {
+ boardMembership,
+ },
+});
+
+const deleteBoardMembership = (id) => ({
+ type: EntryActionTypes.BOARD_MEMBERSHIP_DELETE,
+ payload: {
+ id,
+ },
+});
+
+const handleBoardMembershipDelete = (boardMembership) => ({
+ type: EntryActionTypes.BOARD_MEMBERSHIP_DELETE_HANDLE,
+ payload: {
+ boardMembership,
+ },
+});
+
+export default {
+ createMembershipInCurrentBoard,
+ handleBoardMembershipCreate,
+ deleteBoardMembership,
+ handleBoardMembershipDelete,
+};
diff --git a/client/src/actions/entry/board.js b/client/src/entry-actions/boards.js
similarity index 54%
rename from client/src/actions/entry/board.js
rename to client/src/entry-actions/boards.js
index e9e4fd4c..638f49ba 100755
--- a/client/src/actions/entry/board.js
+++ b/client/src/entry-actions/boards.js
@@ -1,27 +1,27 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
-export const createBoardInCurrentProject = (data) => ({
+const createBoardInCurrentProject = (data) => ({
type: EntryActionTypes.BOARD_IN_CURRENT_PROJECT_CREATE,
payload: {
data,
},
});
-export const handleBoardCreate = (board) => ({
+const handleBoardCreate = (board) => ({
type: EntryActionTypes.BOARD_CREATE_HANDLE,
payload: {
board,
},
});
-export const fetchBoard = (id) => ({
+const fetchBoard = (id) => ({
type: EntryActionTypes.BOARD_FETCH,
payload: {
id,
},
});
-export const updateBoard = (id, data) => ({
+const updateBoard = (id, data) => ({
type: EntryActionTypes.BOARD_UPDATE,
payload: {
id,
@@ -29,14 +29,14 @@ export const updateBoard = (id, data) => ({
},
});
-export const handleBoardUpdate = (board) => ({
+const handleBoardUpdate = (board) => ({
type: EntryActionTypes.BOARD_UPDATE_HANDLE,
payload: {
board,
},
});
-export const moveBoard = (id, index) => ({
+const moveBoard = (id, index) => ({
type: EntryActionTypes.BOARD_MOVE,
payload: {
id,
@@ -44,16 +44,27 @@ export const moveBoard = (id, index) => ({
},
});
-export const deleteBoard = (id) => ({
+const deleteBoard = (id) => ({
type: EntryActionTypes.BOARD_DELETE,
payload: {
id,
},
});
-export const handleBoardDelete = (board) => ({
+const handleBoardDelete = (board) => ({
type: EntryActionTypes.BOARD_DELETE_HANDLE,
payload: {
board,
},
});
+
+export default {
+ createBoardInCurrentProject,
+ handleBoardCreate,
+ fetchBoard,
+ updateBoard,
+ handleBoardUpdate,
+ moveBoard,
+ deleteBoard,
+ handleBoardDelete,
+};
diff --git a/client/src/actions/entry/card.js b/client/src/entry-actions/cards.js
similarity index 55%
rename from client/src/actions/entry/card.js
rename to client/src/entry-actions/cards.js
index 1382448d..c3e9eb25 100755
--- a/client/src/actions/entry/card.js
+++ b/client/src/entry-actions/cards.js
@@ -1,6 +1,6 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
-export const createCard = (listId, data) => ({
+const createCard = (listId, data) => ({
type: EntryActionTypes.CARD_CREATE,
payload: {
listId,
@@ -8,14 +8,14 @@ export const createCard = (listId, data) => ({
},
});
-export const handleCardCreate = (card) => ({
+const handleCardCreate = (card) => ({
type: EntryActionTypes.CARD_CREATE_HANDLE,
payload: {
card,
},
});
-export const updateCard = (id, data) => ({
+const updateCard = (id, data) => ({
type: EntryActionTypes.CARD_UPDATE,
payload: {
id,
@@ -23,21 +23,21 @@ export const updateCard = (id, data) => ({
},
});
-export const updateCurrentCard = (data) => ({
+const updateCurrentCard = (data) => ({
type: EntryActionTypes.CURRENT_CARD_UPDATE,
payload: {
data,
},
});
-export const handleCardUpdate = (card) => ({
+const handleCardUpdate = (card) => ({
type: EntryActionTypes.CARD_UPDATE_HANDLE,
payload: {
card,
},
});
-export const moveCard = (id, listId, index = 0) => ({
+const moveCard = (id, listId, index = 0) => ({
type: EntryActionTypes.CARD_MOVE,
payload: {
id,
@@ -46,7 +46,7 @@ export const moveCard = (id, listId, index = 0) => ({
},
});
-export const moveCurrentCard = (listId, index = 0) => ({
+const moveCurrentCard = (listId, index = 0) => ({
type: EntryActionTypes.CURRENT_CARD_MOVE,
payload: {
listId,
@@ -54,7 +54,7 @@ export const moveCurrentCard = (listId, index = 0) => ({
},
});
-export const transferCard = (id, boardId, listId, index = 0) => ({
+const transferCard = (id, boardId, listId, index = 0) => ({
type: EntryActionTypes.CARD_TRANSFER,
payload: {
id,
@@ -64,7 +64,7 @@ export const transferCard = (id, boardId, listId, index = 0) => ({
},
});
-export const transferCurrentCard = (boardId, listId, index = 0) => ({
+const transferCurrentCard = (boardId, listId, index = 0) => ({
type: EntryActionTypes.CURRENT_CARD_TRANSFER,
payload: {
boardId,
@@ -73,21 +73,36 @@ export const transferCurrentCard = (boardId, listId, index = 0) => ({
},
});
-export const deleteCard = (id) => ({
+const deleteCard = (id) => ({
type: EntryActionTypes.CARD_DELETE,
payload: {
id,
},
});
-export const deleteCurrentCard = () => ({
+const deleteCurrentCard = () => ({
type: EntryActionTypes.CURRENT_CARD_DELETE,
payload: {},
});
-export const handleCardDelete = (card) => ({
+const handleCardDelete = (card) => ({
type: EntryActionTypes.CARD_DELETE_HANDLE,
payload: {
card,
},
});
+
+export default {
+ createCard,
+ handleCardCreate,
+ updateCard,
+ updateCurrentCard,
+ handleCardUpdate,
+ moveCard,
+ moveCurrentCard,
+ transferCard,
+ transferCurrentCard,
+ deleteCard,
+ deleteCurrentCard,
+ handleCardDelete,
+};
diff --git a/client/src/entry-actions/comment-activities.js b/client/src/entry-actions/comment-activities.js
new file mode 100755
index 00000000..3e36efcf
--- /dev/null
+++ b/client/src/entry-actions/comment-activities.js
@@ -0,0 +1,29 @@
+import EntryActionTypes from '../constants/EntryActionTypes';
+
+const createCommentActivityInCurrentCard = (data) => ({
+ type: EntryActionTypes.COMMENT_ACTIVITY_IN_CURRENT_CARD_CREATE,
+ payload: {
+ data,
+ },
+});
+
+const updateCommentActivity = (id, data) => ({
+ type: EntryActionTypes.COMMENT_ACTIVITY_UPDATE,
+ payload: {
+ id,
+ data,
+ },
+});
+
+const deleteCommentActivity = (id) => ({
+ type: EntryActionTypes.COMMENT_ACTIVITY_DELETE,
+ payload: {
+ id,
+ },
+});
+
+export default {
+ createCommentActivityInCurrentCard,
+ updateCommentActivity,
+ deleteCommentActivity,
+};
diff --git a/client/src/entry-actions/core.js b/client/src/entry-actions/core.js
new file mode 100644
index 00000000..f76395c2
--- /dev/null
+++ b/client/src/entry-actions/core.js
@@ -0,0 +1,16 @@
+import EntryActionTypes from '../constants/EntryActionTypes';
+
+const initializeCore = () => ({
+ type: EntryActionTypes.CORE_INITIALIZE,
+ payload: {},
+});
+
+const logout = () => ({
+ type: EntryActionTypes.LOGOUT,
+ payload: {},
+});
+
+export default {
+ initializeCore,
+ logout,
+};
diff --git a/client/src/entry-actions/index.js b/client/src/entry-actions/index.js
new file mode 100755
index 00000000..12bbb306
--- /dev/null
+++ b/client/src/entry-actions/index.js
@@ -0,0 +1,37 @@
+import socket from './socket';
+import login from './login';
+import core from './core';
+import modals from './modals';
+import users from './users';
+import projects from './projects';
+import projectManagers from './project-managers';
+import boards from './boards';
+import boardMemberships from './board-memberships';
+import labels from './labels';
+import lists from './lists';
+import cards from './cards';
+import tasks from './tasks';
+import attachments from './attachments';
+import activities from './activities';
+import commentActivities from './comment-activities';
+import notifications from './notifications';
+
+export default {
+ ...socket,
+ ...login,
+ ...core,
+ ...modals,
+ ...users,
+ ...projects,
+ ...projectManagers,
+ ...boards,
+ ...boardMemberships,
+ ...labels,
+ ...lists,
+ ...cards,
+ ...tasks,
+ ...attachments,
+ ...activities,
+ ...commentActivities,
+ ...notifications,
+};
diff --git a/client/src/actions/entry/label.js b/client/src/entry-actions/labels.js
similarity index 53%
rename from client/src/actions/entry/label.js
rename to client/src/entry-actions/labels.js
index cec6baec..bd88b777 100755
--- a/client/src/actions/entry/label.js
+++ b/client/src/entry-actions/labels.js
@@ -1,20 +1,20 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
-export const createLabelInCurrentBoard = (data) => ({
+const createLabelInCurrentBoard = (data) => ({
type: EntryActionTypes.LABEL_IN_CURRENT_BOARD_CREATE,
payload: {
data,
},
});
-export const handleLabelCreate = (label) => ({
+const handleLabelCreate = (label) => ({
type: EntryActionTypes.LABEL_CREATE_HANDLE,
payload: {
label,
},
});
-export const updateLabel = (id, data) => ({
+const updateLabel = (id, data) => ({
type: EntryActionTypes.LABEL_UPDATE,
payload: {
id,
@@ -22,28 +22,28 @@ export const updateLabel = (id, data) => ({
},
});
-export const handleLabelUpdate = (label) => ({
+const handleLabelUpdate = (label) => ({
type: EntryActionTypes.LABEL_UPDATE_HANDLE,
payload: {
label,
},
});
-export const deleteLabel = (id) => ({
+const deleteLabel = (id) => ({
type: EntryActionTypes.LABEL_DELETE,
payload: {
id,
},
});
-export const handleLabelDelete = (label) => ({
+const handleLabelDelete = (label) => ({
type: EntryActionTypes.LABEL_DELETE_HANDLE,
payload: {
label,
},
});
-export const addLabelToCard = (id, cardId) => ({
+const addLabelToCard = (id, cardId) => ({
type: EntryActionTypes.LABEL_TO_CARD_ADD,
payload: {
id,
@@ -51,21 +51,21 @@ export const addLabelToCard = (id, cardId) => ({
},
});
-export const addLabelToCurrentCard = (id) => ({
+const addLabelToCurrentCard = (id) => ({
type: EntryActionTypes.LABEL_TO_CURRENT_CARD_ADD,
payload: {
id,
},
});
-export const handleLabelToCardAdd = (cardLabel) => ({
+const handleLabelToCardAdd = (cardLabel) => ({
type: EntryActionTypes.LABEL_TO_CARD_ADD_HANDLE,
payload: {
cardLabel,
},
});
-export const removeLabelFromCard = (id, cardId) => ({
+const removeLabelFromCard = (id, cardId) => ({
type: EntryActionTypes.LABEL_FROM_CARD_REMOVE,
payload: {
id,
@@ -73,30 +73,47 @@ export const removeLabelFromCard = (id, cardId) => ({
},
});
-export const removeLabelFromCurrentCard = (id) => ({
+const removeLabelFromCurrentCard = (id) => ({
type: EntryActionTypes.LABEL_FROM_CURRENT_CARD_REMOVE,
payload: {
id,
},
});
-export const handleLabelFromCardRemove = (cardLabel) => ({
+const handleLabelFromCardRemove = (cardLabel) => ({
type: EntryActionTypes.LABEL_FROM_CARD_REMOVE_HANDLE,
payload: {
cardLabel,
},
});
-export const addLabelToFilterInCurrentBoard = (id) => ({
+const addLabelToFilterInCurrentBoard = (id) => ({
type: EntryActionTypes.LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD,
payload: {
id,
},
});
-export const removeLabelFromFilterInCurrentBoard = (id) => ({
+const removeLabelFromFilterInCurrentBoard = (id) => ({
type: EntryActionTypes.LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE,
payload: {
id,
},
});
+
+export default {
+ createLabelInCurrentBoard,
+ handleLabelCreate,
+ updateLabel,
+ handleLabelUpdate,
+ deleteLabel,
+ handleLabelDelete,
+ addLabelToCard,
+ addLabelToCurrentCard,
+ handleLabelToCardAdd,
+ removeLabelFromCard,
+ removeLabelFromCurrentCard,
+ handleLabelFromCardRemove,
+ addLabelToFilterInCurrentBoard,
+ removeLabelFromFilterInCurrentBoard,
+};
diff --git a/client/src/actions/entry/list.js b/client/src/entry-actions/lists.js
similarity index 53%
rename from client/src/actions/entry/list.js
rename to client/src/entry-actions/lists.js
index 9a7446a2..97350c15 100755
--- a/client/src/actions/entry/list.js
+++ b/client/src/entry-actions/lists.js
@@ -1,20 +1,20 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
-export const createListInCurrentBoard = (data) => ({
+const createListInCurrentBoard = (data) => ({
type: EntryActionTypes.LIST_IN_CURRENT_BOARD_CREATE,
payload: {
data,
},
});
-export const handleListCreate = (list) => ({
+const handleListCreate = (list) => ({
type: EntryActionTypes.LIST_CREATE_HANDLE,
payload: {
list,
},
});
-export const updateList = (id, data) => ({
+const updateList = (id, data) => ({
type: EntryActionTypes.LIST_UPDATE,
payload: {
id,
@@ -22,14 +22,14 @@ export const updateList = (id, data) => ({
},
});
-export const handleListUpdate = (list) => ({
+const handleListUpdate = (list) => ({
type: EntryActionTypes.LIST_UPDATE_HANDLE,
payload: {
list,
},
});
-export const moveList = (id, index) => ({
+const moveList = (id, index) => ({
type: EntryActionTypes.LIST_MOVE,
payload: {
id,
@@ -37,16 +37,26 @@ export const moveList = (id, index) => ({
},
});
-export const deleteList = (id) => ({
+const deleteList = (id) => ({
type: EntryActionTypes.LIST_DELETE,
payload: {
id,
},
});
-export const handleListDelete = (list) => ({
+const handleListDelete = (list) => ({
type: EntryActionTypes.LIST_DELETE_HANDLE,
payload: {
list,
},
});
+
+export default {
+ createListInCurrentBoard,
+ handleListCreate,
+ updateList,
+ handleListUpdate,
+ moveList,
+ deleteList,
+ handleListDelete,
+};
diff --git a/client/src/entry-actions/login.js b/client/src/entry-actions/login.js
new file mode 100755
index 00000000..db0d37dd
--- /dev/null
+++ b/client/src/entry-actions/login.js
@@ -0,0 +1,18 @@
+import EntryActionTypes from '../constants/EntryActionTypes';
+
+const authenticate = (data) => ({
+ type: EntryActionTypes.AUTHENTICATE,
+ payload: {
+ data,
+ },
+});
+
+const clearAuthenticateError = () => ({
+ type: EntryActionTypes.AUTHENTICATE_ERROR_CLEAR,
+ payload: {},
+});
+
+export default {
+ authenticate,
+ clearAuthenticateError,
+};
diff --git a/client/src/actions/entry/modal.js b/client/src/entry-actions/modals.js
similarity index 51%
rename from client/src/actions/entry/modal.js
rename to client/src/entry-actions/modals.js
index f0b882de..bbd4337a 100755
--- a/client/src/actions/entry/modal.js
+++ b/client/src/entry-actions/modals.js
@@ -1,35 +1,43 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
-import ModalTypes from '../../constants/ModalTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
+import ModalTypes from '../constants/ModalTypes';
-export const openUsersModal = () => ({
+const openUsersModal = () => ({
type: EntryActionTypes.MODAL_OPEN,
payload: {
type: ModalTypes.USERS,
},
});
-export const openUserSettingsModal = () => ({
+const openUserSettingsModal = () => ({
type: EntryActionTypes.MODAL_OPEN,
payload: {
type: ModalTypes.USER_SETTINGS,
},
});
-export const openProjectAddModal = () => ({
+const openProjectAddModal = () => ({
type: EntryActionTypes.MODAL_OPEN,
payload: {
type: ModalTypes.PROJECT_ADD,
},
});
-export const openProjectSettingsModal = () => ({
+const openProjectSettingsModal = () => ({
type: EntryActionTypes.MODAL_OPEN,
payload: {
type: ModalTypes.PROJECT_SETTINGS,
},
});
-export const closeModal = () => ({
+const closeModal = () => ({
type: EntryActionTypes.MODAL_CLOSE,
payload: {},
});
+
+export default {
+ openUsersModal,
+ openUserSettingsModal,
+ openProjectAddModal,
+ openProjectSettingsModal,
+ closeModal,
+};
diff --git a/client/src/entry-actions/notifications.js b/client/src/entry-actions/notifications.js
new file mode 100755
index 00000000..e05066d7
--- /dev/null
+++ b/client/src/entry-actions/notifications.js
@@ -0,0 +1,28 @@
+import EntryActionTypes from '../constants/EntryActionTypes';
+
+const handleNotificationCreate = (notification) => ({
+ type: EntryActionTypes.NOTIFICATION_CREATE_HANDLE,
+ payload: {
+ notification,
+ },
+});
+
+const deleteNotification = (id) => ({
+ type: EntryActionTypes.NOTIFICATION_DELETE,
+ payload: {
+ id,
+ },
+});
+
+const handleNotificationDelete = (notification) => ({
+ type: EntryActionTypes.NOTIFICATION_DELETE_HANDLE,
+ payload: {
+ notification,
+ },
+});
+
+export default {
+ handleNotificationCreate,
+ deleteNotification,
+ handleNotificationDelete,
+};
diff --git a/client/src/entry-actions/project-managers.js b/client/src/entry-actions/project-managers.js
new file mode 100755
index 00000000..6520b846
--- /dev/null
+++ b/client/src/entry-actions/project-managers.js
@@ -0,0 +1,36 @@
+import EntryActionTypes from '../constants/EntryActionTypes';
+
+const createManagerInCurrentProject = (data) => ({
+ type: EntryActionTypes.MANAGER_IN_CURRENT_PROJECT_CREATE,
+ payload: {
+ data,
+ },
+});
+
+const handleProjectManagerCreate = (projectManager) => ({
+ type: EntryActionTypes.PROJECT_MANAGER_CREATE_HANDLE,
+ payload: {
+ projectManager,
+ },
+});
+
+const deleteProjectManager = (id) => ({
+ type: EntryActionTypes.PROJECT_MANAGER_DELETE,
+ payload: {
+ id,
+ },
+});
+
+const handleProjectManagerDelete = (projectManager) => ({
+ type: EntryActionTypes.PROJECT_MANAGER_DELETE_HANDLE,
+ payload: {
+ projectManager,
+ },
+});
+
+export default {
+ createManagerInCurrentProject,
+ handleProjectManagerCreate,
+ deleteProjectManager,
+ handleProjectManagerDelete,
+};
diff --git a/client/src/actions/entry/project.js b/client/src/entry-actions/projects.js
similarity index 50%
rename from client/src/actions/entry/project.js
rename to client/src/entry-actions/projects.js
index 5fa97cc8..33b76ab4 100755
--- a/client/src/actions/entry/project.js
+++ b/client/src/entry-actions/projects.js
@@ -1,48 +1,58 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
-export const createProject = (data) => ({
+const createProject = (data) => ({
type: EntryActionTypes.PROJECT_CREATE,
payload: {
data,
},
});
-export const handleProjectCreate = (project) => ({
+const handleProjectCreate = (project) => ({
type: EntryActionTypes.PROJECT_CREATE_HANDLE,
payload: {
project,
},
});
-export const updateCurrentProject = (data) => ({
+const updateCurrentProject = (data) => ({
type: EntryActionTypes.CURRENT_PROJECT_UPDATE,
payload: {
data,
},
});
-export const handleProjectUpdate = (project) => ({
+const handleProjectUpdate = (project) => ({
type: EntryActionTypes.PROJECT_UPDATE_HANDLE,
payload: {
project,
},
});
-export const updateCurrentProjectBackgroundImage = (data) => ({
+const updateCurrentProjectBackgroundImage = (data) => ({
type: EntryActionTypes.CURRENT_PROJECT_BACKGROUND_IMAGE_UPDATE,
payload: {
data,
},
});
-export const deleteCurrentProject = () => ({
+const deleteCurrentProject = () => ({
type: EntryActionTypes.CURRENT_PROJECT_DELETE,
payload: {},
});
-export const handleProjectDelete = (project) => ({
+const handleProjectDelete = (project) => ({
type: EntryActionTypes.PROJECT_DELETE_HANDLE,
payload: {
project,
},
});
+
+export default {
+ createProject,
+ handleProjectCreate,
+ updateCurrentProject,
+ handleProjectUpdate,
+ updateCurrentProjectBackgroundImage,
+ deleteCurrentProject,
+ handleProjectDelete,
+};
diff --git a/client/src/entry-actions/socket.js b/client/src/entry-actions/socket.js
new file mode 100644
index 00000000..11781ed2
--- /dev/null
+++ b/client/src/entry-actions/socket.js
@@ -0,0 +1,16 @@
+import EntryActionTypes from '../constants/EntryActionTypes';
+
+const handleSocketDisconnect = () => ({
+ type: EntryActionTypes.SOCKET_DISCONNECT_HANDLE,
+ payload: {},
+});
+
+const handleSocketReconnect = () => ({
+ type: EntryActionTypes.SOCKET_RECONNECT_HANDLE,
+ payload: {},
+});
+
+export default {
+ handleSocketDisconnect,
+ handleSocketReconnect,
+};
diff --git a/client/src/actions/entry/task.js b/client/src/entry-actions/tasks.js
similarity index 53%
rename from client/src/actions/entry/task.js
rename to client/src/entry-actions/tasks.js
index c406a800..6d870d6d 100755
--- a/client/src/actions/entry/task.js
+++ b/client/src/entry-actions/tasks.js
@@ -1,20 +1,20 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
-export const createTaskInCurrentCard = (data) => ({
+const createTaskInCurrentCard = (data) => ({
type: EntryActionTypes.TASK_IN_CURRENT_CARD_CREATE,
payload: {
data,
},
});
-export const handleTaskCreate = (task) => ({
+const handleTaskCreate = (task) => ({
type: EntryActionTypes.TASK_CREATE_HANDLE,
payload: {
task,
},
});
-export const updateTask = (id, data) => ({
+const updateTask = (id, data) => ({
type: EntryActionTypes.TASK_UPDATE,
payload: {
id,
@@ -22,14 +22,14 @@ export const updateTask = (id, data) => ({
},
});
-export const handleTaskUpdate = (task) => ({
+const handleTaskUpdate = (task) => ({
type: EntryActionTypes.TASK_UPDATE_HANDLE,
payload: {
task,
},
});
-export const moveTask = (id, index) => ({
+const moveTask = (id, index) => ({
type: EntryActionTypes.TASK_MOVE,
payload: {
id,
@@ -37,16 +37,26 @@ export const moveTask = (id, index) => ({
},
});
-export const deleteTask = (id) => ({
+const deleteTask = (id) => ({
type: EntryActionTypes.TASK_DELETE,
payload: {
id,
},
});
-export const handleTaskDelete = (task) => ({
+const handleTaskDelete = (task) => ({
type: EntryActionTypes.TASK_DELETE_HANDLE,
payload: {
task,
},
});
+
+export default {
+ createTaskInCurrentCard,
+ handleTaskCreate,
+ updateTask,
+ handleTaskUpdate,
+ moveTask,
+ deleteTask,
+ handleTaskDelete,
+};
diff --git a/client/src/actions/entry/user.js b/client/src/entry-actions/users.js
similarity index 53%
rename from client/src/actions/entry/user.js
rename to client/src/entry-actions/users.js
index 0f1b5fcf..3f6c7e2a 100755
--- a/client/src/actions/entry/user.js
+++ b/client/src/entry-actions/users.js
@@ -1,25 +1,25 @@
-import EntryActionTypes from '../../constants/EntryActionTypes';
+import EntryActionTypes from '../constants/EntryActionTypes';
-export const createUser = (data) => ({
+const createUser = (data) => ({
type: EntryActionTypes.USER_CREATE,
payload: {
data,
},
});
-export const handleUserCreate = (user) => ({
+const handleUserCreate = (user) => ({
type: EntryActionTypes.USER_CREATE_HANDLE,
payload: {
user,
},
});
-export const clearUserCreateError = () => ({
+const clearUserCreateError = () => ({
type: EntryActionTypes.USER_CREATE_ERROR_CLEAR,
payload: {},
});
-export const updateUser = (id, data) => ({
+const updateUser = (id, data) => ({
type: EntryActionTypes.USER_UPDATE,
payload: {
id,
@@ -27,28 +27,28 @@ export const updateUser = (id, data) => ({
},
});
-export const updateCurrentUser = (data) => ({
+const updateCurrentUser = (data) => ({
type: EntryActionTypes.CURRENT_USER_UPDATE,
payload: {
data,
},
});
-export const handleUserUpdate = (user) => ({
+const handleUserUpdate = (user) => ({
type: EntryActionTypes.USER_UPDATE_HANDLE,
payload: {
user,
},
});
-export const updateCurrentUserLanguage = (language) => ({
+const updateCurrentUserLanguage = (language) => ({
type: EntryActionTypes.CURRENT_USER_LANGUAGE_UPDATE,
payload: {
language,
},
});
-export const updateUserEmail = (id, data) => ({
+const updateUserEmail = (id, data) => ({
type: EntryActionTypes.USER_EMAIL_UPDATE,
payload: {
id,
@@ -56,26 +56,26 @@ export const updateUserEmail = (id, data) => ({
},
});
-export const updateCurrentUserEmail = (data) => ({
+const updateCurrentUserEmail = (data) => ({
type: EntryActionTypes.CURRENT_USER_EMAIL_UPDATE,
payload: {
data,
},
});
-export const clearUserEmailUpdateError = (id) => ({
+const clearUserEmailUpdateError = (id) => ({
type: EntryActionTypes.USER_EMAIL_UPDATE_ERROR_CLEAR,
payload: {
id,
},
});
-export const clearCurrentUserEmailUpdateError = () => ({
+const clearCurrentUserEmailUpdateError = () => ({
type: EntryActionTypes.CURRENT_USER_EMAIL_UPDATE_ERROR_CLEAR,
payload: {},
});
-export const updateUserPassword = (id, data) => ({
+const updateUserPassword = (id, data) => ({
type: EntryActionTypes.USER_PASSWORD_UPDATE,
payload: {
id,
@@ -83,26 +83,26 @@ export const updateUserPassword = (id, data) => ({
},
});
-export const updateCurrentUserPassword = (data) => ({
+const updateCurrentUserPassword = (data) => ({
type: EntryActionTypes.CURRENT_USER_PASSWORD_UPDATE,
payload: {
data,
},
});
-export const clearUserPasswordUpdateError = (id) => ({
+const clearUserPasswordUpdateError = (id) => ({
type: EntryActionTypes.USER_PASSWORD_UPDATE_ERROR_CLEAR,
payload: {
id,
},
});
-export const clearCurrentUserPasswordUpdateError = () => ({
+const clearCurrentUserPasswordUpdateError = () => ({
type: EntryActionTypes.CURRENT_USER_PASSWORD_UPDATE_ERROR_CLEAR,
payload: {},
});
-export const updateUserUsername = (id, data) => ({
+const updateUserUsername = (id, data) => ({
type: EntryActionTypes.USER_USERNAME_UPDATE,
payload: {
id,
@@ -110,47 +110,47 @@ export const updateUserUsername = (id, data) => ({
},
});
-export const updateCurrentUserUsername = (data) => ({
+const updateCurrentUserUsername = (data) => ({
type: EntryActionTypes.CURRENT_USER_USERNAME_UPDATE,
payload: {
data,
},
});
-export const clearUserUsernameUpdateError = (id) => ({
+const clearUserUsernameUpdateError = (id) => ({
type: EntryActionTypes.USER_USERNAME_UPDATE_ERROR_CLEAR,
payload: {
id,
},
});
-export const clearCurrentUserUsernameUpdateError = () => ({
+const clearCurrentUserUsernameUpdateError = () => ({
type: EntryActionTypes.CURRENT_USER_USERNAME_UPDATE_ERROR_CLEAR,
payload: {},
});
-export const updateCurrentUserAvatar = (data) => ({
+const updateCurrentUserAvatar = (data) => ({
type: EntryActionTypes.CURRENT_USER_AVATAR_UPDATE,
payload: {
data,
},
});
-export const deleteUser = (id) => ({
+const deleteUser = (id) => ({
type: EntryActionTypes.USER_DELETE,
payload: {
id,
},
});
-export const handleUserDelete = (user) => ({
+const handleUserDelete = (user) => ({
type: EntryActionTypes.USER_DELETE_HANDLE,
payload: {
user,
},
});
-export const addUserToCard = (id, cardId) => ({
+const addUserToCard = (id, cardId) => ({
type: EntryActionTypes.USER_TO_CARD_ADD,
payload: {
id,
@@ -158,21 +158,21 @@ export const addUserToCard = (id, cardId) => ({
},
});
-export const addUserToCurrentCard = (id) => ({
+const addUserToCurrentCard = (id) => ({
type: EntryActionTypes.USER_TO_CURRENT_CARD_ADD,
payload: {
id,
},
});
-export const handleUserToCardAdd = (cardMembership) => ({
+const handleUserToCardAdd = (cardMembership) => ({
type: EntryActionTypes.USER_TO_CARD_ADD_HANDLE,
payload: {
cardMembership,
},
});
-export const removeUserFromCard = (id, cardId) => ({
+const removeUserFromCard = (id, cardId) => ({
type: EntryActionTypes.USER_FROM_CARD_REMOVE,
payload: {
id,
@@ -180,30 +180,63 @@ export const removeUserFromCard = (id, cardId) => ({
},
});
-export const removeUserFromCurrentCard = (id) => ({
+const removeUserFromCurrentCard = (id) => ({
type: EntryActionTypes.USER_FROM_CURRENT_CARD_REMOVE,
payload: {
id,
},
});
-export const handleUserFromCardRemove = (cardMembership) => ({
+const handleUserFromCardRemove = (cardMembership) => ({
type: EntryActionTypes.USER_FROM_CARD_REMOVE_HANDLE,
payload: {
cardMembership,
},
});
-export const addUserToFilterInCurrentBoard = (id) => ({
+const addUserToFilterInCurrentBoard = (id) => ({
type: EntryActionTypes.USER_TO_FILTER_IN_CURRENT_BOARD_ADD,
payload: {
id,
},
});
-export const removeUserFromFilterInCurrentBoard = (id) => ({
+const removeUserFromFilterInCurrentBoard = (id) => ({
type: EntryActionTypes.USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE,
payload: {
id,
},
});
+
+export default {
+ createUser,
+ handleUserCreate,
+ clearUserCreateError,
+ updateUser,
+ updateCurrentUser,
+ handleUserUpdate,
+ updateCurrentUserLanguage,
+ updateUserEmail,
+ updateCurrentUserEmail,
+ clearUserEmailUpdateError,
+ clearCurrentUserEmailUpdateError,
+ updateUserPassword,
+ updateCurrentUserPassword,
+ clearUserPasswordUpdateError,
+ clearCurrentUserPasswordUpdateError,
+ updateUserUsername,
+ updateCurrentUserUsername,
+ clearUserUsernameUpdateError,
+ clearCurrentUserUsernameUpdateError,
+ updateCurrentUserAvatar,
+ deleteUser,
+ handleUserDelete,
+ addUserToCard,
+ addUserToCurrentCard,
+ handleUserToCardAdd,
+ removeUserFromCard,
+ removeUserFromCurrentCard,
+ handleUserFromCardRemove,
+ addUserToFilterInCurrentBoard,
+ removeUserFromFilterInCurrentBoard,
+};
diff --git a/client/src/models/Action.js b/client/src/models/Action.js
deleted file mode 100755
index eea1a307..00000000
--- a/client/src/models/Action.js
+++ /dev/null
@@ -1,95 +0,0 @@
-import { Model, attr, fk } from 'redux-orm';
-
-import ActionTypes from '../constants/ActionTypes';
-
-export default class extends Model {
- static modelName = 'Action';
-
- static fields = {
- id: attr(),
- type: attr(),
- data: attr(),
- createdAt: attr({
- getDefault: () => new Date(),
- }),
- isInCard: attr({
- getDefault: () => true,
- }),
- cardId: fk({
- to: 'Card',
- as: 'card',
- relatedName: 'actions',
- }),
- userId: fk({
- to: 'User',
- as: 'user',
- relatedName: 'actions',
- }),
- };
-
- static reducer({ type, payload }, Action) {
- switch (type) {
- case ActionTypes.SOCKET_RECONNECT_HANDLE:
- Action.all().delete();
-
- payload.actions.forEach((action) => {
- Action.upsert({
- ...action,
- isInCard: false,
- });
- });
-
- break;
- case ActionTypes.CORE_INITIALIZE:
- payload.actions.forEach((action) => {
- Action.upsert({
- ...action,
- isInCard: false,
- });
- });
-
- break;
- case ActionTypes.ACTIONS_FETCH__SUCCESS:
- case ActionTypes.ACTIONS_DETAILS_TOGGLE__SUCCESS:
- case ActionTypes.NOTIFICATION_CREATE_HANDLE:
- payload.actions.forEach((action) => {
- Action.upsert(action);
- });
-
- break;
- case ActionTypes.ACTION_CREATE_HANDLE:
- case ActionTypes.ACTION_UPDATE_HANDLE:
- case ActionTypes.COMMENT_ACTION_CREATE:
- case ActionTypes.COMMENT_ACTION_UPDATE__SUCCESS:
- Action.upsert(payload.action);
-
- break;
- case ActionTypes.ACTION_DELETE_HANDLE:
- case ActionTypes.COMMENT_ACTION_DELETE__SUCCESS: {
- const actionModel = Action.withId(payload.action.id);
-
- if (actionModel) {
- actionModel.delete();
- }
-
- break;
- }
- case ActionTypes.COMMENT_ACTION_CREATE__SUCCESS:
- Action.withId(payload.localId).delete();
- Action.upsert(payload.action);
-
- break;
- case ActionTypes.COMMENT_ACTION_UPDATE:
- Action.withId(payload.id).update({
- data: payload.data,
- });
-
- break;
- case ActionTypes.COMMENT_ACTION_DELETE:
- Action.withId(payload.id).delete();
-
- break;
- default:
- }
- }
-}
diff --git a/client/src/models/Activity.js b/client/src/models/Activity.js
new file mode 100755
index 00000000..f387d04f
--- /dev/null
+++ b/client/src/models/Activity.js
@@ -0,0 +1,95 @@
+import { Model, attr, fk } from 'redux-orm';
+
+import ActionTypes from '../constants/ActionTypes';
+
+export default class extends Model {
+ static modelName = 'Activity';
+
+ static fields = {
+ id: attr(),
+ type: attr(),
+ data: attr(),
+ createdAt: attr({
+ getDefault: () => new Date(),
+ }),
+ isInCard: attr({
+ getDefault: () => true,
+ }),
+ cardId: fk({
+ to: 'Card',
+ as: 'card',
+ relatedName: 'activities',
+ }),
+ userId: fk({
+ to: 'User',
+ as: 'user',
+ relatedName: 'activities',
+ }),
+ };
+
+ static reducer({ type, payload }, Activity) {
+ switch (type) {
+ case ActionTypes.SOCKET_RECONNECT_HANDLE:
+ Activity.all().delete();
+
+ payload.activities.forEach((activity) => {
+ Activity.upsert({
+ ...activity,
+ isInCard: false,
+ });
+ });
+
+ break;
+ case ActionTypes.CORE_INITIALIZE:
+ payload.activities.forEach((activity) => {
+ Activity.upsert({
+ ...activity,
+ isInCard: false,
+ });
+ });
+
+ break;
+ case ActionTypes.ACTIVITIES_FETCH__SUCCESS:
+ case ActionTypes.ACTIVITIES_DETAILS_TOGGLE__SUCCESS:
+ case ActionTypes.NOTIFICATION_CREATE_HANDLE:
+ payload.activities.forEach((activity) => {
+ Activity.upsert(activity);
+ });
+
+ break;
+ case ActionTypes.ACTIVITY_CREATE_HANDLE:
+ case ActionTypes.ACTIVITY_UPDATE_HANDLE:
+ case ActionTypes.COMMENT_ACTIVITY_CREATE:
+ case ActionTypes.COMMENT_ACTIVITY_UPDATE__SUCCESS:
+ Activity.upsert(payload.activity);
+
+ break;
+ case ActionTypes.ACTIVITY_DELETE_HANDLE:
+ case ActionTypes.COMMENT_ACTIVITY_DELETE__SUCCESS: {
+ const activityModel = Activity.withId(payload.activity.id);
+
+ if (activityModel) {
+ activityModel.delete();
+ }
+
+ break;
+ }
+ case ActionTypes.COMMENT_ACTIVITY_CREATE__SUCCESS:
+ Activity.withId(payload.localId).delete();
+ Activity.upsert(payload.activity);
+
+ break;
+ case ActionTypes.COMMENT_ACTIVITY_UPDATE:
+ Activity.withId(payload.id).update({
+ data: payload.data,
+ });
+
+ break;
+ case ActionTypes.COMMENT_ACTIVITY_DELETE:
+ Activity.withId(payload.id).delete();
+
+ break;
+ default:
+ }
+ }
+}
diff --git a/client/src/models/Card.js b/client/src/models/Card.js
index 2346bb37..c8712db1 100755
--- a/client/src/models/Card.js
+++ b/client/src/models/Card.js
@@ -2,7 +2,7 @@ import { Model, attr, fk, many, oneToOne } from 'redux-orm';
import ActionTypes from '../constants/ActionTypes';
import Config from '../constants/Config';
-import { ActionTypes as ActionTypesEnum } from '../constants/Enums';
+import { ActivityTypes } from '../constants/Enums';
export default class extends Model {
static modelName = 'Card';
@@ -17,16 +17,16 @@ export default class extends Model {
isSubscribed: attr({
getDefault: () => false,
}),
- isActionsFetching: attr({
+ isActivitiesFetching: attr({
getDefault: () => false,
}),
- isAllActionsFetched: attr({
+ isAllActivitiesFetched: attr({
getDefault: () => false,
}),
- isActionsDetailsVisible: attr({
+ isActivitiesDetailsVisible: attr({
getDefault: () => false,
}),
- isActionsDetailsFetching: attr({
+ isActivitiesDetailsFetching: attr({
getDefault: () => false,
}),
boardId: fk({
@@ -189,44 +189,44 @@ export default class extends Model {
break;
}
- case ActionTypes.ACTIONS_FETCH:
+ case ActionTypes.ACTIVITIES_FETCH:
Card.withId(payload.cardId).update({
- isActionsFetching: true,
+ isActivitiesFetching: true,
});
break;
- case ActionTypes.ACTIONS_FETCH__SUCCESS:
+ case ActionTypes.ACTIVITIES_FETCH__SUCCESS:
Card.withId(payload.cardId).update({
- isActionsFetching: false,
- isAllActionsFetched: payload.actions.length < Config.ACTIONS_LIMIT,
+ isActivitiesFetching: false,
+ isAllActivitiesFetched: payload.activities.length < Config.ACTIVITIES_LIMIT,
});
break;
- case ActionTypes.ACTIONS_DETAILS_TOGGLE: {
+ case ActionTypes.ACTIVITIES_DETAILS_TOGGLE: {
const cardModel = Card.withId(payload.cardId);
- cardModel.isActionsDetailsVisible = payload.isVisible;
+ cardModel.isActivitiesDetailsVisible = payload.isVisible;
if (payload.isVisible) {
- cardModel.isActionsDetailsFetching = true;
+ cardModel.isActivitiesDetailsFetching = true;
}
break;
}
- case ActionTypes.ACTIONS_DETAILS_TOGGLE__SUCCESS: {
+ case ActionTypes.ACTIVITIES_DETAILS_TOGGLE__SUCCESS: {
const cardModel = Card.withId(payload.cardId);
cardModel.update({
- isAllActionsFetched: payload.actions.length < Config.ACTIONS_LIMIT,
- isActionsDetailsFetching: false,
+ isAllActivitiesFetched: payload.activities.length < Config.ACTIVITIES_LIMIT,
+ isActivitiesDetailsFetching: false,
});
- cardModel.actions.toModelArray().forEach((actionModel) => {
- if (actionModel.notification) {
- actionModel.update({
+ cardModel.activities.toModelArray().forEach((activityModel) => {
+ if (activityModel.notification) {
+ activityModel.update({
isInCard: false,
});
} else {
- actionModel.delete();
+ activityModel.delete();
}
});
@@ -250,16 +250,16 @@ export default class extends Model {
return this.attachments.orderBy('id', false);
}
- getFilteredOrderedInCardActionsQuerySet() {
+ getFilteredOrderedInCardActivitiesQuerySet() {
const filter = {
isInCard: true,
};
- if (!this.isActionsDetailsVisible) {
- filter.type = ActionTypesEnum.COMMENT_CARD;
+ if (!this.isActivitiesDetailsVisible) {
+ filter.type = ActivityTypes.COMMENT_CARD;
}
- return this.actions.filter(filter).orderBy('id', false);
+ return this.activities.filter(filter).orderBy('id', false);
}
getUnreadNotificationsQuerySet() {
@@ -271,7 +271,7 @@ export default class extends Model {
deleteRelated() {
this.tasks.delete();
this.attachments.delete();
- this.actions.delete();
+ this.activities.delete();
}
deleteWithRelated() {
diff --git a/client/src/models/Notification.js b/client/src/models/Notification.js
index 0d6191cf..4ace2873 100755
--- a/client/src/models/Notification.js
+++ b/client/src/models/Notification.js
@@ -20,9 +20,9 @@ export default class extends Model {
as: 'card',
relatedName: 'notifications',
}),
- actionId: oneToOne({
- to: 'Action',
- as: 'action',
+ activityId: oneToOne({
+ to: 'Activity',
+ as: 'activity',
}),
};
@@ -31,8 +31,8 @@ export default class extends Model {
case ActionTypes.LOCATION_CHANGE_HANDLE:
case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE:
case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE:
- if (payload.notifications) {
- payload.notifications.forEach((notification) => {
+ if (payload.deletedNotifications) {
+ payload.deletedNotifications.forEach((notification) => {
Notification.withId(notification.id).deleteWithRelated();
});
}
diff --git a/client/src/models/User.js b/client/src/models/User.js
index 168a3112..6bdf2753 100755
--- a/client/src/models/User.js
+++ b/client/src/models/User.js
@@ -278,7 +278,7 @@ export default class extends Model {
case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE:
case ActionTypes.BOARD_FETCH__SUCCESS:
case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE:
- case ActionTypes.ACTIONS_FETCH__SUCCESS:
+ case ActionTypes.ACTIVITIES_FETCH__SUCCESS:
case ActionTypes.NOTIFICATION_CREATE_HANDLE:
payload.users.forEach((user) => {
User.upsert(user);
diff --git a/client/src/models/index.js b/client/src/models/index.js
index e4265246..70bfa40a 100755
--- a/client/src/models/index.js
+++ b/client/src/models/index.js
@@ -8,7 +8,7 @@ import List from './List';
import Card from './Card';
import Task from './Task';
import Attachment from './Attachment';
-import Action from './Action';
+import Activity from './Activity';
import Notification from './Notification';
export {
@@ -22,6 +22,6 @@ export {
Card,
Task,
Attachment,
- Action,
+ Activity,
Notification,
};
diff --git a/client/src/orm.js b/client/src/orm.js
index 9857a60a..d11256e2 100755
--- a/client/src/orm.js
+++ b/client/src/orm.js
@@ -1,7 +1,7 @@
import { ORM } from 'redux-orm';
import {
- Action,
+ Activity,
Attachment,
Board,
BoardMembership,
@@ -30,7 +30,7 @@ orm.register(
Card,
Task,
Attachment,
- Action,
+ Activity,
Notification,
);
diff --git a/client/src/sagas/core/index.js b/client/src/sagas/core/index.js
index 41682624..9b4aeb58 100755
--- a/client/src/sagas/core/index.js
+++ b/client/src/sagas/core/index.js
@@ -1,7 +1,7 @@
import { all, apply, call, fork, take } from 'redux-saga/effects';
import watchers from './watchers';
-import { initializeCoreService } from './services';
+import services from './services';
import { socket } from '../../api';
import { removeAccessToken } from '../../utils/access-token-storage';
import ActionTypes from '../../constants/ActionTypes';
@@ -11,7 +11,7 @@ export default function* coreSaga() {
yield all(watchers.map((watcher) => fork(watcher)));
yield apply(socket, socket.connect);
- yield fork(initializeCoreService);
+ yield fork(services.initializeCore);
yield take(ActionTypes.LOGOUT);
diff --git a/client/src/sagas/core/request.js b/client/src/sagas/core/request.js
index 7cc2e405..83184529 100755
--- a/client/src/sagas/core/request.js
+++ b/client/src/sagas/core/request.js
@@ -1,6 +1,6 @@
import { call, fork, join, put, take } from 'redux-saga/effects';
-import { logout } from '../../actions';
+import actions from '../../actions';
import ErrorCodes from '../../constants/ErrorCodes';
let lastRequestTask;
@@ -16,7 +16,7 @@ function* queueRequest(method, ...args) {
return yield call(method, ...args);
} catch (error) {
if (error.code === ErrorCodes.UNAUTHORIZED) {
- yield put(logout()); // TODO: next url
+ yield put(actions.logout()); // TODO: next url
yield take();
}
diff --git a/client/src/sagas/core/requests/board.js b/client/src/sagas/core/requests/boards.js
similarity index 84%
rename from client/src/sagas/core/requests/board.js
rename to client/src/sagas/core/requests/boards.js
index d037390c..7b97377a 100644
--- a/client/src/sagas/core/requests/board.js
+++ b/client/src/sagas/core/requests/boards.js
@@ -1,13 +1,12 @@
import { call, select } from 'redux-saga/effects';
import request from '../request';
-import { pathsMatchSelector } from '../../../selectors';
+import selectors from '../../../selectors';
import api from '../../../api';
import Paths from '../../../constants/Paths';
-// eslint-disable-next-line import/prefer-default-export
-export function* fetchBoardByCurrentPathRequest() {
- const pathsMatch = yield select(pathsMatchSelector);
+export function* fetchBoardByCurrentPath() {
+ const pathsMatch = yield select(selectors.selectPathsMatch);
let board;
let card;
@@ -67,3 +66,7 @@ export function* fetchBoardByCurrentPathRequest() {
project: projects[0],
};
}
+
+export default {
+ fetchBoardByCurrentPath,
+};
diff --git a/client/src/sagas/core/requests/core.js b/client/src/sagas/core/requests/core.js
index 9f9bd8bc..10055b08 100644
--- a/client/src/sagas/core/requests/core.js
+++ b/client/src/sagas/core/requests/core.js
@@ -1,12 +1,11 @@
import { call } from 'redux-saga/effects';
-import { fetchBoardByCurrentPathRequest } from './board';
+import { fetchBoardByCurrentPath } from './boards';
import request from '../request';
import api from '../../../api';
import mergeRecords from '../../../utils/merge-records';
-// eslint-disable-next-line import/prefer-default-export
-export function* fetchCoreRequest() {
+export function* fetchCore() {
const { item: user } = yield call(request, api.getCurrentUser);
const { items: users1 } = yield call(request, api.getUsers);
@@ -42,7 +41,7 @@ export function* fetchCoreRequest() {
cardLabels,
tasks,
attachments,
- } = yield call(fetchBoardByCurrentPathRequest));
+ } = yield call(fetchBoardByCurrentPath));
} catch {} // eslint-disable-line no-empty
const body = yield call(request, api.getNotifications);
@@ -50,7 +49,7 @@ export function* fetchCoreRequest() {
let { items: notifications } = body;
const {
- included: { users: users3, cards: cards2, actions },
+ included: { users: users3, cards: cards2, activities },
} = body;
if (card) {
@@ -80,7 +79,7 @@ export function* fetchCoreRequest() {
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
users: mergeRecords(users1, users2, users3),
projects: mergeRecords(projects1, projects2),
@@ -88,3 +87,7 @@ export function* fetchCoreRequest() {
cards: mergeRecords(cards1, cards2),
};
}
+
+export default {
+ fetchCore,
+};
diff --git a/client/src/sagas/core/requests/index.js b/client/src/sagas/core/requests/index.js
index 0d602d65..8b08aacd 100644
--- a/client/src/sagas/core/requests/index.js
+++ b/client/src/sagas/core/requests/index.js
@@ -1,2 +1,7 @@
-export * from './core';
-export * from './board';
+import core from './core';
+import boards from './boards';
+
+export default {
+ ...core,
+ ...boards,
+};
diff --git a/client/src/sagas/core/services/action.js b/client/src/sagas/core/services/action.js
deleted file mode 100644
index c1cf343d..00000000
--- a/client/src/sagas/core/services/action.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import { put } from 'redux-saga/effects';
-
-import { handleActionCreate, handleActionDelete, handleActionUpdate } from '../../../actions';
-
-export function* handleActionCreateService(action) {
- yield put(handleActionCreate(action));
-}
-
-export function* handleActionUpdateService(action) {
- yield put(handleActionUpdate(action));
-}
-
-export function* handleActionDeleteService(action) {
- yield put(handleActionDelete(action));
-}
diff --git a/client/src/sagas/core/services/actions.js b/client/src/sagas/core/services/actions.js
deleted file mode 100644
index b81aae7b..00000000
--- a/client/src/sagas/core/services/actions.js
+++ /dev/null
@@ -1,66 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import request from '../request';
-import { cardByIdSelector, lastActionIdByCardIdSelector, pathSelector } from '../../../selectors';
-import { fetchActions, toggleActionsDetails } from '../../../actions';
-import api from '../../../api';
-
-export function* fetchActionsService(cardId) {
- const { isActionsDetailsVisible } = yield select(cardByIdSelector, cardId);
- const lastId = yield select(lastActionIdByCardIdSelector, cardId);
-
- yield put(fetchActions(cardId));
-
- let actions;
- let users;
-
- try {
- ({
- items: actions,
- included: { users },
- } = yield call(request, api.getActions, cardId, {
- beforeId: lastId,
- withDetails: isActionsDetailsVisible,
- }));
- } catch (error) {
- yield put(fetchActions.failure(cardId, error));
- return;
- }
-
- yield put(fetchActions.success(cardId, actions, users));
-}
-
-export function* fetchActionsInCurrentCardService() {
- const { cardId } = yield select(pathSelector);
-
- yield call(fetchActionsService, cardId);
-}
-
-export function* toggleActionsDetailsService(cardId, isVisible) {
- yield put(toggleActionsDetails(cardId, isVisible));
-
- if (isVisible) {
- let actions;
- let users;
-
- try {
- ({
- items: actions,
- included: { users },
- } = yield call(request, api.getActions, cardId, {
- withDetails: isVisible,
- }));
- } catch (error) {
- yield put(toggleActionsDetails.failure(cardId, error));
- return;
- }
-
- yield put(toggleActionsDetails.success(cardId, actions, users));
- }
-}
-
-export function* toggleActionsDetailsInCurrentCardService(isVisible) {
- const { cardId } = yield select(pathSelector);
-
- yield call(toggleActionsDetailsService, cardId, isVisible);
-}
diff --git a/client/src/sagas/core/services/activities.js b/client/src/sagas/core/services/activities.js
new file mode 100644
index 00000000..a4150279
--- /dev/null
+++ b/client/src/sagas/core/services/activities.js
@@ -0,0 +1,88 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+
+export function* fetchActivities(cardId) {
+ const { isActivitiesDetailsVisible } = yield select(selectors.selectCardById, cardId);
+ const lastId = yield select(selectors.selectLastActivityIdByCardId, cardId);
+
+ yield put(actions.fetchActivities(cardId));
+
+ let activities;
+ let users;
+
+ try {
+ ({
+ items: activities,
+ included: { users },
+ } = yield call(request, api.getActivities, cardId, {
+ beforeId: lastId,
+ withDetails: isActivitiesDetailsVisible,
+ }));
+ } catch (error) {
+ yield put(actions.fetchActivities.failure(cardId, error));
+ return;
+ }
+
+ yield put(actions.fetchActivities.success(cardId, activities, users));
+}
+
+export function* fetchActivitiesInCurrentCard() {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(fetchActivities, cardId);
+}
+
+export function* toggleActivitiesDetails(cardId, isVisible) {
+ yield put(actions.toggleActivitiesDetails(cardId, isVisible));
+
+ if (isVisible) {
+ let activities;
+ let users;
+
+ try {
+ ({
+ items: activities,
+ included: { users },
+ } = yield call(request, api.getActivities, cardId, {
+ withDetails: isVisible,
+ }));
+ } catch (error) {
+ yield put(actions.toggleActivitiesDetails.failure(cardId, error));
+ return;
+ }
+
+ yield put(actions.toggleActivitiesDetails.success(cardId, activities, users));
+ }
+}
+
+export function* toggleActivitiesDetailsInCurrentCard(isVisible) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(toggleActivitiesDetails, cardId, isVisible);
+}
+
+export function* handleActivityCreate(activity) {
+ yield put(actions.handleActivityCreate(activity));
+}
+
+export function* handleActivityUpdate(activity) {
+ yield put(actions.handleActivityUpdate(activity));
+}
+
+export function* handleActivityDelete(activity) {
+ yield put(actions.handleActivityDelete(activity));
+}
+
+export default {
+ fetchActivities,
+ fetchActivitiesInCurrentCard,
+ toggleActivitiesDetails,
+ toggleActivitiesDetailsInCurrentCard,
+ handleActivityCreate,
+ handleActivityUpdate,
+ handleActivityDelete,
+};
diff --git a/client/src/sagas/core/services/attachment.js b/client/src/sagas/core/services/attachment.js
deleted file mode 100644
index 89b0801c..00000000
--- a/client/src/sagas/core/services/attachment.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import request from '../request';
-import { isAttachmentWithIdExistsSelector, pathSelector } from '../../../selectors';
-import {
- createAttachment,
- deleteAttachment,
- handleAttachmentCreate,
- handleAttachmentDelete,
- handleAttachmentUpdate,
- updateAttachment,
-} from '../../../actions';
-import api from '../../../api';
-import { createLocalId } from '../../../utils/local-id';
-
-export function* createAttachmentService(cardId, data) {
- const localId = yield call(createLocalId);
-
- yield put(
- createAttachment({
- cardId,
- id: localId,
- name: data.file.name,
- }),
- );
-
- let attachment;
- try {
- ({ item: attachment } = yield call(request, api.createAttachment, cardId, data, localId));
- } catch (error) {
- yield put(createAttachment.failure(localId, error));
- return;
- }
-
- yield put(createAttachment.success(localId, attachment));
-}
-
-export function* createAttachmentInCurrentCardService(data) {
- const { cardId } = yield select(pathSelector);
-
- yield call(createAttachmentService, cardId, data);
-}
-
-export function* handleAttachmentCreateService(attachment, requestId) {
- const isExists = yield select(isAttachmentWithIdExistsSelector, requestId);
-
- if (!isExists) {
- yield put(handleAttachmentCreate(attachment));
- }
-}
-
-export function* updateAttachmentService(id, data) {
- yield put(updateAttachment(id, data));
-
- let attachment;
- try {
- ({ item: attachment } = yield call(request, api.updateAttachment, id, data));
- } catch (error) {
- yield put(updateAttachment.failure(id, error));
- return;
- }
-
- yield put(updateAttachment.success(attachment));
-}
-
-export function* handleAttachmentUpdateService(attachment) {
- yield put(handleAttachmentUpdate(attachment));
-}
-
-export function* deleteAttachmentService(id) {
- yield put(deleteAttachment(id));
-
- let attachment;
- try {
- ({ item: attachment } = yield call(request, api.deleteAttachment, id));
- } catch (error) {
- yield put(deleteAttachment.failure(id, error));
- return;
- }
-
- yield put(deleteAttachment.success(attachment));
-}
-
-export function* handleAttachmentDeleteService(attachment) {
- yield put(handleAttachmentDelete(attachment));
-}
diff --git a/client/src/sagas/core/services/attachments.js b/client/src/sagas/core/services/attachments.js
new file mode 100644
index 00000000..6328b90d
--- /dev/null
+++ b/client/src/sagas/core/services/attachments.js
@@ -0,0 +1,89 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+import { createLocalId } from '../../../utils/local-id';
+
+export function* createAttachment(cardId, data) {
+ const localId = yield call(createLocalId);
+
+ yield put(
+ actions.createAttachment({
+ cardId,
+ id: localId,
+ name: data.file.name,
+ }),
+ );
+
+ let attachment;
+ try {
+ ({ item: attachment } = yield call(request, api.createAttachment, cardId, data, localId));
+ } catch (error) {
+ yield put(actions.createAttachment.failure(localId, error));
+ return;
+ }
+
+ yield put(actions.createAttachment.success(localId, attachment));
+}
+
+export function* createAttachmentInCurrentCard(data) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(createAttachment, cardId, data);
+}
+
+export function* handleAttachmentCreate(attachment, requestId) {
+ const isExists = yield select(selectors.selectIsAttachmentWithIdExists, requestId);
+
+ if (!isExists) {
+ yield put(actions.handleAttachmentCreate(attachment));
+ }
+}
+
+export function* updateAttachment(id, data) {
+ yield put(actions.updateAttachment(id, data));
+
+ let attachment;
+ try {
+ ({ item: attachment } = yield call(request, api.updateAttachment, id, data));
+ } catch (error) {
+ yield put(actions.updateAttachment.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateAttachment.success(attachment));
+}
+
+export function* handleAttachmentUpdate(attachment) {
+ yield put(actions.handleAttachmentUpdate(attachment));
+}
+
+export function* deleteAttachment(id) {
+ yield put(actions.deleteAttachment(id));
+
+ let attachment;
+ try {
+ ({ item: attachment } = yield call(request, api.deleteAttachment, id));
+ } catch (error) {
+ yield put(actions.deleteAttachment.failure(id, error));
+ return;
+ }
+
+ yield put(actions.deleteAttachment.success(attachment));
+}
+
+export function* handleAttachmentDelete(attachment) {
+ yield put(actions.handleAttachmentDelete(attachment));
+}
+
+export default {
+ createAttachment,
+ createAttachmentInCurrentCard,
+ handleAttachmentCreate,
+ updateAttachment,
+ handleAttachmentUpdate,
+ deleteAttachment,
+ handleAttachmentDelete,
+};
diff --git a/client/src/sagas/core/services/board-membership.js b/client/src/sagas/core/services/board-memberships.js
similarity index 55%
rename from client/src/sagas/core/services/board-membership.js
rename to client/src/sagas/core/services/board-memberships.js
index 617b7962..b54dd28c 100644
--- a/client/src/sagas/core/services/board-membership.js
+++ b/client/src/sagas/core/services/board-memberships.js
@@ -1,30 +1,19 @@
import { call, put, select } from 'redux-saga/effects';
-import { goToProjectService } from './router';
+import { goToProject } from './router';
import request from '../request';
-import { fetchBoardByCurrentPathRequest } from '../requests';
-import {
- boardMembershipByIdSelector,
- currentUserIdSelector,
- isCurrentUserManagerForCurrentProjectSelector,
- notificationsByCardIdSelector,
- pathSelector,
-} from '../../../selectors';
-import {
- createBoardMembership,
- deleteBoardMembership,
- handleBoardMembershipCreate,
- handleBoardMembershipDelete,
-} from '../../../actions';
+import requests from '../requests';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
import api from '../../../api';
import { createLocalId } from '../../../utils/local-id';
import mergeRecords from '../../../utils/merge-records';
-export function* createBoardMembershipService(boardId, data) {
+export function* createBoardMembership(boardId, data) {
const localId = yield call(createLocalId);
yield put(
- createBoardMembership({
+ actions.createBoardMembership({
...data,
boardId,
id: localId,
@@ -35,21 +24,21 @@ export function* createBoardMembershipService(boardId, data) {
try {
({ item: boardMembership } = yield call(request, api.createBoardMembership, boardId, data));
} catch (error) {
- yield put(createBoardMembership.failure(localId, error));
+ yield put(actions.createBoardMembership.failure(localId, error));
return;
}
- yield put(createBoardMembership.success(localId, boardMembership));
+ yield put(actions.createBoardMembership.success(localId, boardMembership));
}
-export function* createMembershipInCurrentBoardService(data) {
- const { boardId } = yield select(pathSelector);
+export function* createMembershipInCurrentBoard(data) {
+ const { boardId } = yield select(selectors.selectPath);
- yield call(createBoardMembershipService, boardId, data);
+ yield call(createBoardMembership, boardId, data);
}
-export function* handleBoardMembershipCreateService(boardMembership) {
- const currentUserId = yield select(currentUserIdSelector);
+export function* handleBoardMembershipCreate(boardMembership) {
+ const currentUserId = yield select(selectors.selectCurrentUserId);
const isCurrentUser = boardMembership.userId === currentUserId;
let user;
@@ -68,7 +57,7 @@ export function* handleBoardMembershipCreateService(boardMembership) {
let cardLabels;
let tasks;
let attachments;
- let notifications;
+ let deletedNotifications;
if (isCurrentUser) {
let board2;
@@ -78,9 +67,11 @@ export function* handleBoardMembershipCreateService(boardMembership) {
return;
}
- const { boardId } = yield select(pathSelector);
+ const { boardId } = yield select(selectors.selectPath);
- yield put(handleBoardMembershipCreate.fetchProject(board2.projectId, currentUserId, boardId));
+ yield put(
+ actions.handleBoardMembershipCreate.fetchProject(board2.projectId, currentUserId, boardId),
+ );
try {
({
@@ -93,7 +84,7 @@ export function* handleBoardMembershipCreateService(boardMembership) {
let body;
try {
- body = yield call(fetchBoardByCurrentPathRequest);
+ body = yield call(requests.fetchBoardByCurrentPathRequest);
} catch {} // eslint-disable-line no-empty
if (body && body.project && body.project.id === board2.projectId) {
@@ -112,7 +103,7 @@ export function* handleBoardMembershipCreateService(boardMembership) {
} = body);
if (body.card) {
- notifications = yield select(notificationsByCardIdSelector, body.card.id);
+ deletedNotifications = yield select(selectors.selectNotificationsByCardId, body.card.id);
}
}
} else {
@@ -124,7 +115,7 @@ export function* handleBoardMembershipCreateService(boardMembership) {
}
yield put(
- handleBoardMembershipCreate(
+ actions.handleBoardMembershipCreate(
boardMembership,
project,
board1,
@@ -139,48 +130,60 @@ export function* handleBoardMembershipCreateService(boardMembership) {
cardLabels,
tasks,
attachments,
- notifications,
+ deletedNotifications,
),
);
}
-export function* deleteBoardMembershipService(id) {
- let boardMembership = yield select(boardMembershipByIdSelector, id);
+export function* deleteBoardMembership(id) {
+ let boardMembership = yield select(selectors.selectBoardMembershipById, id);
- const currentUserId = yield select(currentUserIdSelector);
- const { boardId, projectId } = yield select(pathSelector);
+ const currentUserId = yield select(selectors.selectCurrentUserId);
+ const { boardId, projectId } = yield select(selectors.selectPath);
if (boardMembership.userId === currentUserId && boardMembership.boardId === boardId) {
- const isCurrentUserManager = yield select(isCurrentUserManagerForCurrentProjectSelector);
+ const isCurrentUserManager = yield select(
+ selectors.selectIsCurrentUserManagerForCurrentProject,
+ );
if (!isCurrentUserManager) {
- yield call(goToProjectService, projectId);
+ yield call(goToProject, projectId);
}
}
- yield put(deleteBoardMembership(id));
+ yield put(actions.deleteBoardMembership(id));
try {
({ item: boardMembership } = yield call(request, api.deleteBoardMembership, id));
} catch (error) {
- yield put(deleteBoardMembership.failure(id, error));
+ yield put(actions.deleteBoardMembership.failure(id, error));
return;
}
- yield put(deleteBoardMembership.success(boardMembership));
+ yield put(actions.deleteBoardMembership.success(boardMembership));
}
-export function* handleBoardMembershipDeleteService(boardMembership) {
- const currentUserId = yield select(currentUserIdSelector);
- const { boardId, projectId } = yield select(pathSelector);
+export function* handleBoardMembershipDelete(boardMembership) {
+ const currentUserId = yield select(selectors.selectCurrentUserId);
+ const { boardId, projectId } = yield select(selectors.selectPath);
if (boardMembership.userId === currentUserId && boardMembership.boardId === boardId) {
- const isCurrentUserManager = yield select(isCurrentUserManagerForCurrentProjectSelector);
+ const isCurrentUserManager = yield select(
+ selectors.selectIsCurrentUserManagerForCurrentProject,
+ );
if (!isCurrentUserManager) {
- yield call(goToProjectService, projectId);
+ yield call(goToProject, projectId);
}
}
- yield put(handleBoardMembershipDelete(boardMembership));
+ yield put(actions.handleBoardMembershipDelete(boardMembership));
}
+
+export default {
+ createBoardMembership,
+ createMembershipInCurrentBoard,
+ handleBoardMembershipCreate,
+ deleteBoardMembership,
+ handleBoardMembershipDelete,
+};
diff --git a/client/src/sagas/core/services/board.js b/client/src/sagas/core/services/board.js
deleted file mode 100644
index 732d10cc..00000000
--- a/client/src/sagas/core/services/board.js
+++ /dev/null
@@ -1,169 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import { goToBoardService, goToProjectService } from './router';
-import request from '../request';
-import { boardByIdSelector, nextBoardPositionSelector, pathSelector } from '../../../selectors';
-import {
- createBoard,
- deleteBoard,
- fetchBoard,
- handleBoardCreate,
- handleBoardDelete,
- handleBoardUpdate,
- updateBoard,
-} from '../../../actions';
-import api from '../../../api';
-import { createLocalId } from '../../../utils/local-id';
-
-export function* createBoardService(projectId, data) {
- const nextData = {
- ...data,
- position: yield select(nextBoardPositionSelector, projectId),
- };
-
- const localId = yield call(createLocalId);
-
- yield put(
- createBoard({
- ...nextData,
- projectId,
- id: localId,
- }),
- );
-
- let board;
- let boardMemberships;
-
- try {
- ({
- item: board,
- included: { boardMemberships },
- } = yield call(request, api.createBoard, projectId, nextData));
- } catch (error) {
- yield put(createBoard.failure(localId, error));
- return;
- }
-
- yield put(createBoard.success(localId, board, boardMemberships));
- yield call(goToBoardService, board.id);
-}
-
-export function* createBoardInCurrentProjectService(data) {
- const { projectId } = yield select(pathSelector);
-
- yield call(createBoardService, projectId, data);
-}
-
-export function* handleBoardCreateService(board) {
- yield put(handleBoardCreate(board));
-}
-
-export function* fetchBoardService(id) {
- yield put(fetchBoard(id));
-
- let board;
- let users;
- let projects;
- let boardMemberships;
- let labels;
- let lists;
- let cards;
- let cardMemberships;
- let cardLabels;
- let tasks;
- let attachments;
-
- try {
- ({
- item: board,
- included: {
- users,
- projects,
- boardMemberships,
- labels,
- lists,
- cards,
- cardMemberships,
- cardLabels,
- tasks,
- attachments,
- },
- } = yield call(request, api.getBoard, id));
- } catch (error) {
- yield put(fetchBoard.failure(id, error));
- return;
- }
-
- yield put(
- fetchBoard.success(
- board,
- users,
- projects,
- boardMemberships,
- labels,
- lists,
- cards,
- cardMemberships,
- cardLabels,
- tasks,
- attachments,
- ),
- );
-}
-
-export function* updateBoardService(id, data) {
- yield put(updateBoard(id, data));
-
- let board;
- try {
- ({ item: board } = yield call(request, api.updateBoard, id, data));
- } catch (error) {
- yield put(updateBoard.failure(id, error));
- return;
- }
-
- yield put(updateBoard.success(board));
-}
-
-export function* handleBoardUpdateService(board) {
- yield put(handleBoardUpdate(board));
-}
-
-export function* moveBoardService(id, index) {
- const { projectId } = yield select(boardByIdSelector, id);
- const position = yield select(nextBoardPositionSelector, projectId, index, id);
-
- yield call(updateBoardService, id, {
- position,
- });
-}
-
-export function* deleteBoardService(id) {
- const { boardId, projectId } = yield select(pathSelector);
-
- if (id === boardId) {
- yield call(goToProjectService, projectId);
- }
-
- yield put(deleteBoard(id));
-
- let board;
- try {
- ({ item: board } = yield call(request, api.deleteBoard, id));
- } catch (error) {
- yield put(deleteBoard.failure(id, error));
- return;
- }
-
- yield put(deleteBoard.success(board));
-}
-
-export function* handleBoardDeleteService(board) {
- const { boardId, projectId } = yield select(pathSelector);
-
- if (board.id === boardId) {
- yield call(goToProjectService, projectId);
- }
-
- yield put(handleBoardDelete(board));
-}
diff --git a/client/src/sagas/core/services/boards.js b/client/src/sagas/core/services/boards.js
new file mode 100644
index 00000000..cc138810
--- /dev/null
+++ b/client/src/sagas/core/services/boards.js
@@ -0,0 +1,173 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import { goToBoard, goToProject } from './router';
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+import { createLocalId } from '../../../utils/local-id';
+
+export function* createBoard(projectId, data) {
+ const nextData = {
+ ...data,
+ position: yield select(selectors.selectNextBoardPosition, projectId),
+ };
+
+ const localId = yield call(createLocalId);
+
+ yield put(
+ actions.createBoard({
+ ...nextData,
+ projectId,
+ id: localId,
+ }),
+ );
+
+ let board;
+ let boardMemberships;
+
+ try {
+ ({
+ item: board,
+ included: { boardMemberships },
+ } = yield call(request, api.createBoard, projectId, nextData));
+ } catch (error) {
+ yield put(actions.createBoard.failure(localId, error));
+ return;
+ }
+
+ yield put(actions.createBoard.success(localId, board, boardMemberships));
+ yield call(goToBoard, board.id);
+}
+
+export function* createBoardInCurrentProject(data) {
+ const { projectId } = yield select(selectors.selectPath);
+
+ yield call(createBoard, projectId, data);
+}
+
+export function* handleBoardCreate(board) {
+ yield put(actions.handleBoardCreate(board));
+}
+
+export function* fetchBoard(id) {
+ yield put(actions.fetchBoard(id));
+
+ let board;
+ let users;
+ let projects;
+ let boardMemberships;
+ let labels;
+ let lists;
+ let cards;
+ let cardMemberships;
+ let cardLabels;
+ let tasks;
+ let attachments;
+
+ try {
+ ({
+ item: board,
+ included: {
+ users,
+ projects,
+ boardMemberships,
+ labels,
+ lists,
+ cards,
+ cardMemberships,
+ cardLabels,
+ tasks,
+ attachments,
+ },
+ } = yield call(request, api.getBoard, id));
+ } catch (error) {
+ yield put(actions.fetchBoard.failure(id, error));
+ return;
+ }
+
+ yield put(
+ actions.fetchBoard.success(
+ board,
+ users,
+ projects,
+ boardMemberships,
+ labels,
+ lists,
+ cards,
+ cardMemberships,
+ cardLabels,
+ tasks,
+ attachments,
+ ),
+ );
+}
+
+export function* updateBoard(id, data) {
+ yield put(actions.updateBoard(id, data));
+
+ let board;
+ try {
+ ({ item: board } = yield call(request, api.updateBoard, id, data));
+ } catch (error) {
+ yield put(actions.updateBoard.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateBoard.success(board));
+}
+
+export function* handleBoardUpdate(board) {
+ yield put(actions.handleBoardUpdate(board));
+}
+
+export function* moveBoard(id, index) {
+ const { projectId } = yield select(selectors.selectBoardById, id);
+ const position = yield select(selectors.selectNextBoardPosition, projectId, index, id);
+
+ yield call(updateBoard, id, {
+ position,
+ });
+}
+
+export function* deleteBoard(id) {
+ const { boardId, projectId } = yield select(selectors.selectPath);
+
+ if (id === boardId) {
+ yield call(goToProject, projectId);
+ }
+
+ yield put(actions.deleteBoard(id));
+
+ let board;
+ try {
+ ({ item: board } = yield call(request, api.deleteBoard, id));
+ } catch (error) {
+ yield put(actions.deleteBoard.failure(id, error));
+ return;
+ }
+
+ yield put(actions.deleteBoard.success(board));
+}
+
+export function* handleBoardDelete(board) {
+ const { boardId, projectId } = yield select(selectors.selectPath);
+
+ if (board.id === boardId) {
+ yield call(goToProject, projectId);
+ }
+
+ yield put(actions.handleBoardDelete(board));
+}
+
+export default {
+ createBoard,
+ createBoardInCurrentProject,
+ handleBoardCreate,
+ fetchBoard,
+ updateBoard,
+ handleBoardUpdate,
+ moveBoard,
+ deleteBoard,
+ handleBoardDelete,
+};
diff --git a/client/src/sagas/core/services/card.js b/client/src/sagas/core/services/card.js
deleted file mode 100644
index 818e495a..00000000
--- a/client/src/sagas/core/services/card.js
+++ /dev/null
@@ -1,145 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import { goToBoardService } from './router';
-import request from '../request';
-import { listByIdSelector, nextCardPositionSelector, pathSelector } from '../../../selectors';
-import {
- createCard,
- deleteCard,
- handleCardCreate,
- handleCardDelete,
- handleCardUpdate,
- updateCard,
-} from '../../../actions';
-import api from '../../../api';
-import { createLocalId } from '../../../utils/local-id';
-
-export function* createCardService(listId, data) {
- const { boardId } = yield select(listByIdSelector, listId);
-
- const nextData = {
- ...data,
- listId,
- position: yield select(nextCardPositionSelector, listId),
- };
-
- const localId = yield call(createLocalId);
-
- yield put(
- createCard({
- ...nextData,
- boardId,
- id: localId,
- }),
- );
-
- let card;
- try {
- ({ item: card } = yield call(request, api.createCard, boardId, nextData));
- } catch (error) {
- yield put(createCard.failure(localId, error));
- return;
- }
-
- yield put(createCard.success(localId, card));
-}
-
-export function* handleCardCreateService(card) {
- yield put(handleCardCreate(card));
-}
-
-export function* updateCardService(id, data) {
- yield put(updateCard(id, data));
-
- let card;
- try {
- ({ item: card } = yield call(request, api.updateCard, id, data));
- } catch (error) {
- yield put(updateCard.failure(id, error));
- return;
- }
-
- yield put(updateCard.success(card));
-}
-
-export function* updateCurrentCardService(data) {
- const { cardId } = yield select(pathSelector);
-
- yield call(updateCardService, cardId, data);
-}
-
-export function* moveCardService(id, listId, index) {
- const position = yield select(nextCardPositionSelector, listId, index, id);
-
- yield call(updateCardService, id, {
- listId,
- position,
- });
-}
-
-export function* moveCurrentCardService(listId, index) {
- const { cardId } = yield select(pathSelector);
-
- yield call(moveCardService, cardId, listId, index);
-}
-
-export function* transferCardService(id, boardId, listId, index) {
- const { cardId: currentCardId, boardId: currentBoardId } = yield select(pathSelector);
- const position = yield select(nextCardPositionSelector, listId, index, id);
-
- if (id === currentCardId) {
- yield call(goToBoardService, currentBoardId);
- }
-
- yield call(updateCardService, id, {
- boardId,
- listId,
- position,
- });
-}
-
-export function* transferCurrentCardService(boardId, listId, index) {
- const { cardId } = yield select(pathSelector);
-
- yield call(transferCardService, cardId, boardId, listId, index);
-}
-
-export function* handleCardUpdateService(card) {
- yield put(handleCardUpdate(card)); // TODO: handle card transfer
-}
-
-export function* deleteCardService(id) {
- const { cardId, boardId } = yield select(pathSelector);
-
- if (id === cardId) {
- yield call(goToBoardService, boardId);
- }
-
- yield put(deleteCard(id));
-
- let card;
- try {
- ({ item: card } = yield call(request, api.deleteCard, id));
- } catch (error) {
- yield put(deleteCard.failure(id, error));
- return;
- }
-
- yield put(deleteCard.success(card));
-}
-
-export function* deleteCurrentCardService() {
- const { cardId } = yield select(pathSelector);
-
- yield call(deleteCardService, cardId);
-}
-
-export function* handleCardDeleteService(card) {
- const { cardId, boardId } = yield select(pathSelector);
-
- if (card.id === cardId) {
- yield call(goToBoardService, boardId);
- }
-
- yield put(handleCardDelete(card));
-}
diff --git a/client/src/sagas/core/services/cards.js b/client/src/sagas/core/services/cards.js
new file mode 100644
index 00000000..9af22a6f
--- /dev/null
+++ b/client/src/sagas/core/services/cards.js
@@ -0,0 +1,153 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import { goToBoard } from './router';
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+import { createLocalId } from '../../../utils/local-id';
+
+export function* createCard(listId, data) {
+ const { boardId } = yield select(selectors.selectListById, listId);
+
+ const nextData = {
+ ...data,
+ listId,
+ position: yield select(selectors.selectNextCardPosition, listId),
+ };
+
+ const localId = yield call(createLocalId);
+
+ yield put(
+ actions.createCard({
+ ...nextData,
+ boardId,
+ id: localId,
+ }),
+ );
+
+ let card;
+ try {
+ ({ item: card } = yield call(request, api.createCard, boardId, nextData));
+ } catch (error) {
+ yield put(actions.createCard.failure(localId, error));
+ return;
+ }
+
+ yield put(actions.createCard.success(localId, card));
+}
+
+export function* handleCardCreate(card) {
+ yield put(actions.handleCardCreate(card));
+}
+
+export function* updateCard(id, data) {
+ yield put(actions.updateCard(id, data));
+
+ let card;
+ try {
+ ({ item: card } = yield call(request, api.updateCard, id, data));
+ } catch (error) {
+ yield put(actions.updateCard.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateCard.success(card));
+}
+
+export function* updateCurrentCard(data) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(updateCard, cardId, data);
+}
+
+export function* handleCardUpdate(card) {
+ yield put(actions.handleCardUpdate(card)); // TODO: handle card transfer
+}
+
+export function* moveCard(id, listId, index) {
+ const position = yield select(selectors.selectNextCardPosition, listId, index, id);
+
+ yield call(updateCard, id, {
+ listId,
+ position,
+ });
+}
+
+export function* moveCurrentCard(listId, index) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(moveCard, cardId, listId, index);
+}
+
+export function* transferCard(id, boardId, listId, index) {
+ const { cardId: currentCardId, boardId: currentBoardId } = yield select(selectors.selectPath);
+ const position = yield select(selectors.selectNextCardPosition, listId, index, id);
+
+ if (id === currentCardId) {
+ yield call(goToBoard, currentBoardId);
+ }
+
+ yield call(updateCard, id, {
+ boardId,
+ listId,
+ position,
+ });
+}
+
+export function* transferCurrentCard(boardId, listId, index) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(transferCard, cardId, boardId, listId, index);
+}
+
+export function* deleteCard(id) {
+ const { cardId, boardId } = yield select(selectors.selectPath);
+
+ if (id === cardId) {
+ yield call(goToBoard, boardId);
+ }
+
+ yield put(actions.deleteCard(id));
+
+ let card;
+ try {
+ ({ item: card } = yield call(request, api.deleteCard, id));
+ } catch (error) {
+ yield put(actions.deleteCard.failure(id, error));
+ return;
+ }
+
+ yield put(actions.deleteCard.success(card));
+}
+
+export function* deleteCurrentCard() {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(deleteCard, cardId);
+}
+
+export function* handleCardDelete(card) {
+ const { cardId, boardId } = yield select(selectors.selectPath);
+
+ if (card.id === cardId) {
+ yield call(goToBoard, boardId);
+ }
+
+ yield put(actions.handleCardDelete(card));
+}
+
+export default {
+ createCard,
+ handleCardCreate,
+ updateCard,
+ updateCurrentCard,
+ moveCard,
+ moveCurrentCard,
+ transferCard,
+ transferCurrentCard,
+ handleCardUpdate,
+ deleteCard,
+ deleteCurrentCard,
+ handleCardDelete,
+};
diff --git a/client/src/sagas/core/services/comment-action.js b/client/src/sagas/core/services/comment-action.js
deleted file mode 100644
index 88163dae..00000000
--- a/client/src/sagas/core/services/comment-action.js
+++ /dev/null
@@ -1,67 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import request from '../request';
-import { currentUserIdSelector, pathSelector } from '../../../selectors';
-import { createCommentAction, deleteCommentAction, updateCommentAction } from '../../../actions';
-import api from '../../../api';
-import { createLocalId } from '../../../utils/local-id';
-import { ActionTypes } from '../../../constants/Enums';
-
-export function* createCommentActionService(cardId, data) {
- const localId = yield call(createLocalId);
- const userId = yield select(currentUserIdSelector);
-
- yield put(
- createCommentAction({
- cardId,
- userId,
- data,
- id: localId,
- type: ActionTypes.COMMENT_CARD,
- }),
- );
-
- let action;
- try {
- ({ item: action } = yield call(request, api.createCommentAction, cardId, data));
- } catch (error) {
- yield put(createCommentAction.failure(localId, error));
- return;
- }
-
- yield put(createCommentAction.success(localId, action));
-}
-
-export function* createCommentActionInCurrentCardService(data) {
- const { cardId } = yield select(pathSelector);
-
- yield call(createCommentActionService, cardId, data);
-}
-
-export function* updateCommentActionService(id, data) {
- yield put(updateCommentAction(id, data));
-
- let action;
- try {
- ({ item: action } = yield call(request, api.updateCommentAction, id, data));
- } catch (error) {
- yield put(updateCommentAction.failure(id, error));
- return;
- }
-
- yield put(updateCommentAction.success(action));
-}
-
-export function* deleteCommentActionService(id) {
- yield put(deleteCommentAction(id));
-
- let action;
- try {
- ({ item: action } = yield call(request, api.deleteCommentAction, id));
- } catch (error) {
- yield put(deleteCommentAction.failure(id, error));
- return;
- }
-
- yield put(deleteCommentAction.success(action));
-}
diff --git a/client/src/sagas/core/services/comment-activities.js b/client/src/sagas/core/services/comment-activities.js
new file mode 100644
index 00000000..51fe480e
--- /dev/null
+++ b/client/src/sagas/core/services/comment-activities.js
@@ -0,0 +1,74 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+import { createLocalId } from '../../../utils/local-id';
+import { ActivityTypes } from '../../../constants/Enums';
+
+export function* createCommentActivity(cardId, data) {
+ const localId = yield call(createLocalId);
+ const userId = yield select(selectors.selectCurrentUserId);
+
+ yield put(
+ actions.createCommentActivity({
+ cardId,
+ userId,
+ data,
+ id: localId,
+ type: ActivityTypes.COMMENT_CARD,
+ }),
+ );
+
+ let activity;
+ try {
+ ({ item: activity } = yield call(request, api.createCommentActivity, cardId, data));
+ } catch (error) {
+ yield put(actions.createCommentActivity.failure(localId, error));
+ return;
+ }
+
+ yield put(actions.createCommentActivity.success(localId, activity));
+}
+
+export function* createCommentActivityInCurrentCard(data) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(createCommentActivity, cardId, data);
+}
+
+export function* updateCommentActivity(id, data) {
+ yield put(actions.updateCommentActivity(id, data));
+
+ let activity;
+ try {
+ ({ item: activity } = yield call(request, api.updateCommentActivity, id, data));
+ } catch (error) {
+ yield put(actions.updateCommentActivity.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateCommentActivity.success(activity));
+}
+
+export function* deleteCommentActivity(id) {
+ yield put(actions.deleteCommentActivity(id));
+
+ let activity;
+ try {
+ ({ item: activity } = yield call(request, api.deleteCommentActivity, id));
+ } catch (error) {
+ yield put(actions.deleteCommentActivity.failure(id, error));
+ return;
+ }
+
+ yield put(actions.deleteCommentActivity.success(activity));
+}
+
+export default {
+ createCommentActivity,
+ createCommentActivityInCurrentCard,
+ updateCommentActivity,
+ deleteCommentActivity,
+};
diff --git a/client/src/sagas/core/services/core.js b/client/src/sagas/core/services/core.js
index ec3a496b..5420e415 100644
--- a/client/src/sagas/core/services/core.js
+++ b/client/src/sagas/core/services/core.js
@@ -1,10 +1,10 @@
-import { call, put } from 'redux-saga/effects';
+import { call, put, take } from 'redux-saga/effects';
-import { fetchCoreRequest } from '../requests';
-import { initializeCore } from '../../../actions';
+import requests from '../requests';
+import actions from '../../../actions';
import i18n from '../../../i18n';
-export function* initializeCoreService() {
+export function* initializeCore() {
const {
user,
board,
@@ -20,15 +20,15 @@ export function* initializeCoreService() {
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
- } = yield call(fetchCoreRequest); // TODO: handle error
+ } = yield call(requests.fetchCore); // TODO: handle error
yield call(i18n.changeLanguage, user.language);
yield call(i18n.loadCoreLocale);
yield put(
- initializeCore(
+ actions.initializeCore(
user,
board,
users,
@@ -43,13 +43,13 @@ export function* initializeCoreService() {
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
),
);
}
-export function* changeCoreLanguageService(language) {
+export function* changeCoreLanguage(language) {
if (language === null) {
yield call(i18n.detectLanguage);
yield call(i18n.loadCoreLocale);
@@ -59,3 +59,14 @@ export function* changeCoreLanguageService(language) {
yield call(i18n.changeLanguage, language);
}
}
+
+export function* logout() {
+ yield put(actions.logout());
+ yield take();
+}
+
+export default {
+ initializeCore,
+ changeCoreLanguage,
+ logout,
+};
diff --git a/client/src/sagas/core/services/index.js b/client/src/sagas/core/services/index.js
index 161add47..55d1175b 100644
--- a/client/src/sagas/core/services/index.js
+++ b/client/src/sagas/core/services/index.js
@@ -1,19 +1,37 @@
-export * from './router';
-export * from './socket';
-export * from './login';
-export * from './core';
-export * from './modal';
-export * from './user';
-export * from './project';
-export * from './project-manager';
-export * from './board';
-export * from './board-membership';
-export * from './label';
-export * from './list';
-export * from './card';
-export * from './task';
-export * from './attachment';
-export * from './actions';
-export * from './action';
-export * from './comment-action';
-export * from './notification';
+import router from './router';
+import socket from './socket';
+import core from './core';
+import modals from './modals';
+import users from './users';
+import projects from './projects';
+import projectManagers from './project-managers';
+import boards from './boards';
+import boardMemberships from './board-memberships';
+import labels from './labels';
+import lists from './lists';
+import cards from './cards';
+import tasks from './tasks';
+import attachments from './attachments';
+import activities from './activities';
+import commentActivities from './comment-activities';
+import notifications from './notifications';
+
+export default {
+ ...router,
+ ...socket,
+ ...core,
+ ...modals,
+ ...users,
+ ...projects,
+ ...projectManagers,
+ ...boards,
+ ...boardMemberships,
+ ...labels,
+ ...lists,
+ ...cards,
+ ...tasks,
+ ...attachments,
+ ...activities,
+ ...commentActivities,
+ ...notifications,
+};
diff --git a/client/src/sagas/core/services/label.js b/client/src/sagas/core/services/label.js
deleted file mode 100644
index aa169453..00000000
--- a/client/src/sagas/core/services/label.js
+++ /dev/null
@@ -1,158 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import request from '../request';
-import { pathSelector } from '../../../selectors';
-import {
- addLabelToBoardFilter,
- addLabelToCard,
- createLabel,
- deleteLabel,
- handleLabelCreate,
- handleLabelDelete,
- handleLabelFromCardRemove,
- handleLabelToCardAdd,
- handleLabelUpdate,
- removeLabelFromBoardFilter,
- removeLabelFromCard,
- updateLabel,
-} from '../../../actions';
-import api from '../../../api';
-import { createLocalId } from '../../../utils/local-id';
-
-export function* createLabelService(boardId, data) {
- const localId = yield call(createLocalId);
-
- yield put(
- createLabel({
- ...data,
- boardId,
- id: localId,
- }),
- );
-
- let label;
- try {
- ({ item: label } = yield call(request, api.createLabel, boardId, data));
- } catch (error) {
- yield put(createLabel.failure(localId, error));
- return;
- }
-
- yield put(createLabel.success(localId, label));
-}
-
-export function* createLabelInCurrentBoardService(data) {
- const { boardId } = yield select(pathSelector);
-
- yield call(createLabelService, boardId, data);
-}
-
-export function* handleLabelCreateService(label) {
- yield put(handleLabelCreate(label));
-}
-
-export function* updateLabelService(id, data) {
- yield put(updateLabel(id, data));
-
- let label;
- try {
- ({ item: label } = yield call(request, api.updateLabel, id, data));
- } catch (error) {
- yield put(updateLabel.failure(id, error));
- return;
- }
-
- yield put(updateLabel.success(label));
-}
-
-export function* handleLabelUpdateService(label) {
- yield put(handleLabelUpdate(label));
-}
-
-export function* deleteLabelService(id) {
- yield put(deleteLabel(id));
-
- let label;
- try {
- ({ item: label } = yield call(request, api.deleteLabel, id));
- } catch (error) {
- yield put(deleteLabel.failure(id, error));
- return;
- }
-
- yield put(deleteLabel.success(label));
-}
-
-export function* handleLabelDeleteService(label) {
- yield put(handleLabelDelete(label));
-}
-
-export function* addLabelToCardService(id, cardId) {
- yield put(addLabelToCard(id, cardId));
-
- let cardLabel;
- try {
- ({ item: cardLabel } = yield call(request, api.createCardLabel, cardId, {
- labelId: id,
- }));
- } catch (error) {
- yield put(addLabelToCard.failure(id, cardId, error));
- return;
- }
-
- yield put(addLabelToCard.success(cardLabel));
-}
-
-export function* addLabelToCurrentCardService(id) {
- const { cardId } = yield select(pathSelector);
-
- yield call(addLabelToCardService, id, cardId);
-}
-
-export function* handleLabelToCardAddService(cardLabel) {
- yield put(handleLabelToCardAdd(cardLabel));
-}
-
-export function* removeLabelFromCardService(id, cardId) {
- yield put(removeLabelFromCard(id, cardId));
-
- let cardLabel;
- try {
- ({ item: cardLabel } = yield call(request, api.deleteCardLabel, cardId, id));
- } catch (error) {
- yield put(removeLabelFromCard.failure(id, cardId, error));
- return;
- }
-
- yield put(removeLabelFromCard.success(cardLabel));
-}
-
-export function* removeLabelFromCurrentCardService(id) {
- const { cardId } = yield select(pathSelector);
-
- yield call(removeLabelFromCardService, id, cardId);
-}
-
-export function* handleLabelFromCardRemoveService(cardLabel) {
- yield put(handleLabelFromCardRemove(cardLabel));
-}
-
-export function* addLabelToBoardFilterService(id, boardId) {
- yield put(addLabelToBoardFilter(id, boardId));
-}
-
-export function* addLabelToFilterInCurrentBoardService(id) {
- const { boardId } = yield select(pathSelector);
-
- yield call(addLabelToBoardFilterService, id, boardId);
-}
-
-export function* removeLabelFromBoardFilterService(id, boardId) {
- yield put(removeLabelFromBoardFilter(id, boardId));
-}
-
-export function* removeLabelFromFilterInCurrentBoardService(id) {
- const { boardId } = yield select(pathSelector);
-
- yield call(removeLabelFromBoardFilterService, id, boardId);
-}
diff --git a/client/src/sagas/core/services/labels.js b/client/src/sagas/core/services/labels.js
new file mode 100644
index 00000000..94323934
--- /dev/null
+++ b/client/src/sagas/core/services/labels.js
@@ -0,0 +1,165 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+import { createLocalId } from '../../../utils/local-id';
+
+export function* createLabel(boardId, data) {
+ const localId = yield call(createLocalId);
+
+ yield put(
+ actions.createLabel({
+ ...data,
+ boardId,
+ id: localId,
+ }),
+ );
+
+ let label;
+ try {
+ ({ item: label } = yield call(request, api.createLabel, boardId, data));
+ } catch (error) {
+ yield put(actions.createLabel.failure(localId, error));
+ return;
+ }
+
+ yield put(actions.createLabel.success(localId, label));
+}
+
+export function* createLabelInCurrentBoard(data) {
+ const { boardId } = yield select(selectors.selectPath);
+
+ yield call(createLabel, boardId, data);
+}
+
+export function* handleLabelCreate(label) {
+ yield put(actions.handleLabelCreate(label));
+}
+
+export function* updateLabel(id, data) {
+ yield put(actions.updateLabel(id, data));
+
+ let label;
+ try {
+ ({ item: label } = yield call(request, api.updateLabel, id, data));
+ } catch (error) {
+ yield put(actions.updateLabel.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateLabel.success(label));
+}
+
+export function* handleLabelUpdate(label) {
+ yield put(actions.handleLabelUpdate(label));
+}
+
+export function* deleteLabel(id) {
+ yield put(actions.deleteLabel(id));
+
+ let label;
+ try {
+ ({ item: label } = yield call(request, api.deleteLabel, id));
+ } catch (error) {
+ yield put(actions.deleteLabel.failure(id, error));
+ return;
+ }
+
+ yield put(actions.deleteLabel.success(label));
+}
+
+export function* handleLabelDelete(label) {
+ yield put(actions.handleLabelDelete(label));
+}
+
+export function* addLabelToCard(id, cardId) {
+ yield put(actions.addLabelToCard(id, cardId));
+
+ let cardLabel;
+ try {
+ ({ item: cardLabel } = yield call(request, api.createCardLabel, cardId, {
+ labelId: id,
+ }));
+ } catch (error) {
+ yield put(actions.addLabelToCard.failure(id, cardId, error));
+ return;
+ }
+
+ yield put(actions.addLabelToCard.success(cardLabel));
+}
+
+export function* addLabelToCurrentCard(id) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(addLabelToCard, id, cardId);
+}
+
+export function* handleLabelToCardAdd(cardLabel) {
+ yield put(actions.handleLabelToCardAdd(cardLabel));
+}
+
+export function* removeLabelFromCard(id, cardId) {
+ yield put(actions.removeLabelFromCard(id, cardId));
+
+ let cardLabel;
+ try {
+ ({ item: cardLabel } = yield call(request, api.deleteCardLabel, cardId, id));
+ } catch (error) {
+ yield put(actions.removeLabelFromCard.failure(id, cardId, error));
+ return;
+ }
+
+ yield put(actions.removeLabelFromCard.success(cardLabel));
+}
+
+export function* removeLabelFromCurrentCard(id) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(removeLabelFromCard, id, cardId);
+}
+
+export function* handleLabelFromCardRemove(cardLabel) {
+ yield put(actions.handleLabelFromCardRemove(cardLabel));
+}
+
+export function* addLabelToBoardFilter(id, boardId) {
+ yield put(actions.addLabelToBoardFilter(id, boardId));
+}
+
+export function* addLabelToFilterInCurrentBoard(id) {
+ const { boardId } = yield select(selectors.selectPath);
+
+ yield call(addLabelToBoardFilter, id, boardId);
+}
+
+export function* removeLabelFromBoardFilter(id, boardId) {
+ yield put(actions.removeLabelFromBoardFilter(id, boardId));
+}
+
+export function* removeLabelFromFilterInCurrentBoard(id) {
+ const { boardId } = yield select(selectors.selectPath);
+
+ yield call(removeLabelFromBoardFilter, id, boardId);
+}
+
+export default {
+ createLabel,
+ createLabelInCurrentBoard,
+ handleLabelCreate,
+ updateLabel,
+ handleLabelUpdate,
+ deleteLabel,
+ handleLabelDelete,
+ addLabelToCard,
+ addLabelToCurrentCard,
+ handleLabelToCardAdd,
+ removeLabelFromCard,
+ removeLabelFromCurrentCard,
+ handleLabelFromCardRemove,
+ addLabelToBoardFilter,
+ addLabelToFilterInCurrentBoard,
+ removeLabelFromBoardFilter,
+ removeLabelFromFilterInCurrentBoard,
+};
diff --git a/client/src/sagas/core/services/list.js b/client/src/sagas/core/services/list.js
deleted file mode 100644
index 6238927f..00000000
--- a/client/src/sagas/core/services/list.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import request from '../request';
-import { listByIdSelector, nextListPositionSelector, pathSelector } from '../../../selectors';
-import {
- createList,
- deleteList,
- handleListCreate,
- handleListDelete,
- handleListUpdate,
- updateList,
-} from '../../../actions';
-import api from '../../../api';
-import { createLocalId } from '../../../utils/local-id';
-
-export function* createListService(boardId, data) {
- const nextData = {
- ...data,
- position: yield select(nextListPositionSelector, boardId),
- };
-
- const localId = yield call(createLocalId);
-
- yield put(
- createList({
- ...nextData,
- boardId,
- id: localId,
- }),
- );
-
- let list;
- try {
- ({ item: list } = yield call(request, api.createList, boardId, nextData));
- } catch (error) {
- yield put(createList.failure(localId, error));
- return;
- }
-
- yield put(createList.success(localId, list));
-}
-
-export function* createListInCurrentBoardService(data) {
- const { boardId } = yield select(pathSelector);
-
- yield call(createListService, boardId, data);
-}
-
-export function* handleListCreateService(label) {
- yield put(handleListCreate(label));
-}
-
-export function* updateListService(id, data) {
- yield put(updateList(id, data));
-
- let list;
- try {
- ({ item: list } = yield call(request, api.updateList, id, data));
- } catch (error) {
- yield put(updateList.failure(id, error));
- return;
- }
-
- yield put(updateList.success(list));
-}
-
-export function* moveListService(id, index) {
- const { boardId } = yield select(listByIdSelector, id);
- const position = yield select(nextListPositionSelector, boardId, index, id);
-
- yield call(updateListService, id, {
- position,
- });
-}
-
-export function* handleListUpdateService(label) {
- yield put(handleListUpdate(label));
-}
-
-export function* deleteListService(id) {
- yield put(deleteList(id));
-
- let list;
- try {
- ({ item: list } = yield call(request, api.deleteList, id));
- } catch (error) {
- yield put(deleteList.failure(id, error));
- return;
- }
-
- yield put(deleteList.success(list));
-}
-
-export function* handleListDeleteService(label) {
- yield put(handleListDelete(label));
-}
diff --git a/client/src/sagas/core/services/lists.js b/client/src/sagas/core/services/lists.js
new file mode 100644
index 00000000..670bc9a5
--- /dev/null
+++ b/client/src/sagas/core/services/lists.js
@@ -0,0 +1,100 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+import { createLocalId } from '../../../utils/local-id';
+
+export function* createList(boardId, data) {
+ const nextData = {
+ ...data,
+ position: yield select(selectors.selectNextListPosition, boardId),
+ };
+
+ const localId = yield call(createLocalId);
+
+ yield put(
+ actions.createList({
+ ...nextData,
+ boardId,
+ id: localId,
+ }),
+ );
+
+ let list;
+ try {
+ ({ item: list } = yield call(request, api.createList, boardId, nextData));
+ } catch (error) {
+ yield put(actions.createList.failure(localId, error));
+ return;
+ }
+
+ yield put(actions.createList.success(localId, list));
+}
+
+export function* createListInCurrentBoard(data) {
+ const { boardId } = yield select(selectors.selectPath);
+
+ yield call(createList, boardId, data);
+}
+
+export function* handleListCreate(label) {
+ yield put(actions.handleListCreate(label));
+}
+
+export function* updateList(id, data) {
+ yield put(actions.updateList(id, data));
+
+ let list;
+ try {
+ ({ item: list } = yield call(request, api.updateList, id, data));
+ } catch (error) {
+ yield put(actions.updateList.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateList.success(list));
+}
+
+export function* handleListUpdate(label) {
+ yield put(actions.handleListUpdate(label));
+}
+
+export function* moveList(id, index) {
+ const { boardId } = yield select(selectors.selectListById, id);
+ const position = yield select(selectors.selectNextListPosition, boardId, index, id);
+
+ yield call(updateList, id, {
+ position,
+ });
+}
+
+export function* deleteList(id) {
+ yield put(actions.deleteList(id));
+
+ let list;
+ try {
+ ({ item: list } = yield call(request, api.deleteList, id));
+ } catch (error) {
+ yield put(actions.deleteList.failure(id, error));
+ return;
+ }
+
+ yield put(actions.deleteList.success(list));
+}
+
+export function* handleListDelete(label) {
+ yield put(actions.handleListDelete(label));
+}
+
+export default {
+ createList,
+ createListInCurrentBoard,
+ handleListCreate,
+ updateList,
+ handleListUpdate,
+ moveList,
+ deleteList,
+ handleListDelete,
+};
diff --git a/client/src/sagas/core/services/login.js b/client/src/sagas/core/services/login.js
deleted file mode 100644
index a39298f2..00000000
--- a/client/src/sagas/core/services/login.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { put, take } from 'redux-saga/effects';
-
-import { logout } from '../../../actions';
-
-// eslint-disable-next-line import/prefer-default-export
-export function* logoutService() {
- yield put(logout());
- yield take();
-}
diff --git a/client/src/sagas/core/services/modal.js b/client/src/sagas/core/services/modal.js
deleted file mode 100644
index 7934bebe..00000000
--- a/client/src/sagas/core/services/modal.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { put } from 'redux-saga/effects';
-
-import { closeModal, openModal } from '../../../actions';
-
-export function* openModalService(type) {
- yield put(openModal(type));
-}
-
-export function* closeModalService() {
- yield put(closeModal());
-}
diff --git a/client/src/sagas/core/services/modals.js b/client/src/sagas/core/services/modals.js
new file mode 100644
index 00000000..265bfc9a
--- /dev/null
+++ b/client/src/sagas/core/services/modals.js
@@ -0,0 +1,16 @@
+import { put } from 'redux-saga/effects';
+
+import actions from '../../../actions';
+
+export function* openModal(type) {
+ yield put(actions.openModal(type));
+}
+
+export function* closeModal() {
+ yield put(actions.closeModal());
+}
+
+export default {
+ openModal,
+ closeModal,
+};
diff --git a/client/src/sagas/core/services/notification.js b/client/src/sagas/core/services/notifications.js
similarity index 51%
rename from client/src/sagas/core/services/notification.js
rename to client/src/sagas/core/services/notifications.js
index 6724adb3..2f8cb590 100644
--- a/client/src/sagas/core/services/notification.js
+++ b/client/src/sagas/core/services/notifications.js
@@ -1,16 +1,12 @@
import { call, put, select } from 'redux-saga/effects';
import request from '../request';
-import { pathSelector } from '../../../selectors';
-import {
- deleteNotification,
- handleNotificationCreate,
- handleNotificationDelete,
-} from '../../../actions';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
import api from '../../../api';
-export function* handleNotificationCreateService(notification) {
- const { cardId } = yield select(pathSelector);
+export function* handleNotificationCreate(notification) {
+ const { cardId } = yield select(selectors.selectPath);
if (notification.cardId === cardId) {
try {
@@ -21,22 +17,22 @@ export function* handleNotificationCreateService(notification) {
} else {
let users;
let cards;
- let actions;
+ let activities;
try {
({
- included: { users, cards, actions },
+ included: { users, cards, activities },
} = yield call(request, api.getNotification, notification.id));
} catch {
return;
}
- yield put(handleNotificationCreate(notification, users, cards, actions));
+ yield put(actions.handleNotificationCreate(notification, users, cards, activities));
}
}
-export function* deleteNotificationService(id) {
- yield put(deleteNotification(id));
+export function* deleteNotification(id) {
+ yield put(actions.deleteNotification(id));
let notifications;
try {
@@ -44,13 +40,19 @@ export function* deleteNotificationService(id) {
isRead: true,
}));
} catch (error) {
- yield put(deleteNotification.failure(id, error));
+ yield put(actions.deleteNotification.failure(id, error));
return;
}
- yield put(deleteNotification.success(notifications[0]));
+ yield put(actions.deleteNotification.success(notifications[0]));
}
-export function* handleNotificationDeleteService(notification) {
- yield put(handleNotificationDelete(notification));
+export function* handleNotificationDelete(notification) {
+ yield put(actions.handleNotificationDelete(notification));
}
+
+export default {
+ handleNotificationCreate,
+ deleteNotification,
+ handleNotificationDelete,
+};
diff --git a/client/src/sagas/core/services/project-manager.js b/client/src/sagas/core/services/project-managers.js
similarity index 58%
rename from client/src/sagas/core/services/project-manager.js
rename to client/src/sagas/core/services/project-managers.js
index 991fefe3..dcef6abb 100644
--- a/client/src/sagas/core/services/project-manager.js
+++ b/client/src/sagas/core/services/project-managers.js
@@ -1,28 +1,18 @@
import { call, put, select } from 'redux-saga/effects';
import request from '../request';
-import { fetchBoardByCurrentPathRequest } from '../requests';
-import {
- currentUserIdSelector,
- notificationsByCardIdSelector,
- pathSelector,
- projectManagerByIdSelector,
-} from '../../../selectors';
-import {
- createProjectManager,
- deleteProjectManager,
- handleProjectManagerCreate,
- handleProjectManagerDelete,
-} from '../../../actions';
+import requests from '../requests';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
import api from '../../../api';
import { createLocalId } from '../../../utils/local-id';
import mergeRecords from '../../../utils/merge-records';
-export function* createProjectManagerService(projectId, data) {
+export function* createProjectManager(projectId, data) {
const localId = yield call(createLocalId);
yield put(
- createProjectManager({
+ actions.createProjectManager({
...data,
projectId,
id: localId,
@@ -33,20 +23,20 @@ export function* createProjectManagerService(projectId, data) {
try {
({ item: projectManager } = yield call(request, api.createProjectManager, projectId, data));
} catch (error) {
- yield put(createProjectManager.failure(localId, error));
+ yield put(actions.createProjectManager.failure(localId, error));
}
- yield put(createProjectManager.success(localId, projectManager));
+ yield put(actions.createProjectManager.success(localId, projectManager));
}
-export function* createManagerInCurrentProjectService(data) {
- const { projectId } = yield select(pathSelector);
+export function* createManagerInCurrentProject(data) {
+ const { projectId } = yield select(selectors.selectPath);
- yield call(createProjectManagerService, projectId, data);
+ yield call(createProjectManager, projectId, data);
}
-export function* handleProjectManagerCreateService(projectManager) {
- const currentUserId = yield select(currentUserIdSelector);
+export function* handleProjectManagerCreate(projectManager) {
+ const currentUserId = yield select(selectors.selectCurrentUserId);
const isCurrentUser = projectManager.userId === currentUserId;
let user;
@@ -65,13 +55,17 @@ export function* handleProjectManagerCreateService(projectManager) {
let cardLabels;
let tasks;
let attachments;
- let notifications;
+ let deletedNotifications;
if (isCurrentUser) {
- const { boardId } = yield select(pathSelector);
+ const { boardId } = yield select(selectors.selectPath);
yield put(
- handleProjectManagerCreate.fetchProject(projectManager.projectId, currentUserId, boardId),
+ actions.handleProjectManagerCreate.fetchProject(
+ projectManager.projectId,
+ currentUserId,
+ boardId,
+ ),
);
try {
@@ -85,7 +79,7 @@ export function* handleProjectManagerCreateService(projectManager) {
let body;
try {
- body = yield call(fetchBoardByCurrentPathRequest);
+ body = yield call(requests.fetchBoardByCurrentPath);
} catch {} // eslint-disable-line no-empty
if (body && body.project && body.project.id === projectManager.projectId) {
@@ -104,7 +98,7 @@ export function* handleProjectManagerCreateService(projectManager) {
} = body);
if (body.card) {
- notifications = yield select(notificationsByCardIdSelector, body.card.id);
+ deletedNotifications = yield select(selectors.selectNotificationsByCardId, body.card.id);
}
}
} else {
@@ -116,7 +110,7 @@ export function* handleProjectManagerCreateService(projectManager) {
}
yield put(
- handleProjectManagerCreate(
+ actions.handleProjectManagerCreate(
projectManager,
project,
board,
@@ -131,19 +125,19 @@ export function* handleProjectManagerCreateService(projectManager) {
cardLabels,
tasks,
attachments,
- notifications,
+ deletedNotifications,
),
);
}
-export function* deleteProjectManagerService(id) {
- let projectManager = yield select(projectManagerByIdSelector, id);
+export function* deleteProjectManager(id) {
+ let projectManager = yield select(selectors.selectProjectManagerById, id);
- const currentUserId = yield select(currentUserIdSelector);
- const { projectId } = yield select(pathSelector);
+ const currentUserId = yield select(selectors.selectCurrentUserId);
+ const { projectId } = yield select(selectors.selectPath);
yield put(
- deleteProjectManager(
+ actions.deleteProjectManager(
id,
projectManager.userId === currentUserId,
projectManager.projectId === projectId,
@@ -153,22 +147,30 @@ export function* deleteProjectManagerService(id) {
try {
({ item: projectManager } = yield call(request, api.deleteProjectManager, id));
} catch (error) {
- yield put(deleteProjectManager.failure(id, error));
+ yield put(actions.deleteProjectManager.failure(id, error));
return;
}
- yield put(deleteProjectManager.success(projectManager));
+ yield put(actions.deleteProjectManager.success(projectManager));
}
-export function* handleProjectManagerDeleteService(projectManager) {
- const currentUserId = yield select(currentUserIdSelector);
- const { projectId } = yield select(pathSelector);
+export function* handleProjectManagerDelete(projectManager) {
+ const currentUserId = yield select(selectors.selectCurrentUserId);
+ const { projectId } = yield select(selectors.selectPath);
yield put(
- handleProjectManagerDelete(
+ actions.handleProjectManagerDelete(
projectManager,
projectManager.userId === currentUserId,
projectManager.projectId === projectId,
),
);
}
+
+export default {
+ createProjectManager,
+ createManagerInCurrentProject,
+ handleProjectManagerCreate,
+ deleteProjectManager,
+ handleProjectManagerDelete,
+};
diff --git a/client/src/sagas/core/services/project.js b/client/src/sagas/core/services/project.js
deleted file mode 100644
index 884714b7..00000000
--- a/client/src/sagas/core/services/project.js
+++ /dev/null
@@ -1,131 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import { goToProjectService, goToRootService } from './router';
-import request from '../request';
-import { pathSelector } from '../../../selectors';
-import {
- createProject,
- deleteProject,
- handleProjectCreate,
- handleProjectDelete,
- handleProjectUpdate,
- updateProject,
- updateProjectBackgroundImage,
-} from '../../../actions';
-import api from '../../../api';
-
-export function* createProjectService(data) {
- yield put(createProject(data));
-
- let project;
- let projectManagers;
-
- try {
- ({
- item: project,
- included: { projectManagers },
- } = yield call(request, api.createProject, data));
- } catch (error) {
- yield put(createProject.failure(error));
- return;
- }
-
- yield put(createProject.success(project, projectManagers));
- yield call(goToProjectService, project.id);
-}
-
-export function* handleProjectCreateService({ 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(handleProjectCreate(project, users, projectManagers, boards, boardMemberships));
-}
-
-export function* updateProjectService(id, data) {
- yield put(updateProject(id, data));
-
- let project;
- try {
- ({ item: project } = yield call(request, api.updateProject, id, data));
- } catch (error) {
- yield put(updateProject.failure(id, error));
- }
-
- yield put(updateProject.success(project));
-}
-
-export function* updateCurrentProjectService(data) {
- const { projectId } = yield select(pathSelector);
-
- yield call(updateProjectService, projectId, data);
-}
-
-export function* handleProjectUpdateService(project) {
- yield put(handleProjectUpdate(project));
-}
-
-export function* updateProjectBackgroundImageService(id, data) {
- yield put(updateProjectBackgroundImage(id));
-
- let project;
- try {
- ({ item: project } = yield call(request, api.updateProjectBackgroundImage, id, data));
- } catch (error) {
- yield put(updateProjectBackgroundImage.failure(id, error));
- }
-
- yield put(updateProjectBackgroundImage.success(project));
-}
-
-export function* updateCurrentProjectBackgroundImageService(data) {
- const { projectId } = yield select(pathSelector);
-
- yield call(updateProjectBackgroundImageService, projectId, data);
-}
-
-export function* deleteProjectService(id) {
- const { projectId } = yield select(pathSelector);
-
- if (id === projectId) {
- yield call(goToRootService);
- }
-
- yield put(deleteProject(id));
-
- let project;
- try {
- ({ item: project } = yield call(request, api.deleteProject, id));
- } catch (error) {
- yield put(deleteProject.failure(id, error));
- }
-
- yield put(deleteProject.success(project));
-}
-
-export function* deleteCurrentProjectService() {
- const { projectId } = yield select(pathSelector);
-
- yield call(deleteProjectService, projectId);
-}
-
-export function* handleProjectDeleteService(project) {
- const { projectId } = yield select(pathSelector);
-
- if (project.id === projectId) {
- yield call(goToRootService);
- }
-
- yield put(handleProjectDelete(project));
-}
diff --git a/client/src/sagas/core/services/projects.js b/client/src/sagas/core/services/projects.js
new file mode 100644
index 00000000..80a9b396
--- /dev/null
+++ b/client/src/sagas/core/services/projects.js
@@ -0,0 +1,136 @@
+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,
+};
diff --git a/client/src/sagas/core/services/router.js b/client/src/sagas/core/services/router.js
index 7ed31e6a..a371d1b2 100644
--- a/client/src/sagas/core/services/router.js
+++ b/client/src/sagas/core/services/router.js
@@ -2,35 +2,30 @@ import { call, put, select, take } from 'redux-saga/effects';
import { push } from 'connected-react-router';
import request from '../request';
-import {
- currentBoardSelector,
- isCoreInitializingSelector,
- notificationIdsForCurrentCardSelector,
- pathsMatchSelector,
-} from '../../../selectors';
-import { handleLocationChange } from '../../../actions';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
import api from '../../../api';
import ActionTypes from '../../../constants/ActionTypes';
import Paths from '../../../constants/Paths';
-export function* goToRootService() {
+export function* goToRoot() {
yield put(push(Paths.ROOT));
}
-export function* goToProjectService(projectId) {
+export function* goToProject(projectId) {
yield put(push(Paths.PROJECTS.replace(':id', projectId)));
}
-export function* goToBoardService(boardId) {
+export function* goToBoard(boardId) {
yield put(push(Paths.BOARDS.replace(':id', boardId)));
}
-export function* goToCardService(cardId) {
+export function* goToCard(cardId) {
yield put(push(Paths.CARDS.replace(':id', cardId)));
}
-export function* handleLocationChangeService() {
- const pathsMatch = yield select(pathsMatchSelector);
+export function* handleLocationChange() {
+ const pathsMatch = yield select(selectors.selectPathsMatch);
if (!pathsMatch) {
return;
@@ -38,13 +33,13 @@ export function* handleLocationChangeService() {
switch (pathsMatch.path) {
case Paths.LOGIN:
- yield call(goToRootService);
+ yield call(goToRoot);
break;
default:
}
- const isCoreInitializing = yield select(isCoreInitializingSelector);
+ const isCoreInitializing = yield select(selectors.selectIsCoreInitializing);
if (isCoreInitializing) {
yield take(ActionTypes.CORE_INITIALIZE);
@@ -61,15 +56,15 @@ export function* handleLocationChangeService() {
let cardLabels;
let tasks;
let attachments;
- let notifications;
+ let deletedNotifications;
switch (pathsMatch.path) {
case Paths.BOARDS:
case Paths.CARDS: {
- const currentBoard = yield select(currentBoardSelector);
+ const currentBoard = yield select(selectors.selectCurrentBoard);
if (currentBoard && currentBoard.isFetching === null) {
- yield put(handleLocationChange.fetchBoard(currentBoard.id));
+ yield put(actions.handleLocationChange.fetchBoard(currentBoard.id));
try {
({
@@ -91,11 +86,11 @@ export function* handleLocationChangeService() {
}
if (pathsMatch.path === Paths.CARDS) {
- const notificationIds = yield select(notificationIdsForCurrentCardSelector);
+ const notificationIds = yield select(selectors.selectNotificationIdsForCurrentCard);
if (notificationIds && notificationIds.length > 0) {
try {
- ({ items: notifications } = yield call(
+ ({ items: deletedNotifications } = yield call(
request,
api.updateNotifications,
notificationIds,
@@ -113,7 +108,7 @@ export function* handleLocationChangeService() {
}
yield put(
- handleLocationChange(
+ actions.handleLocationChange(
board,
users,
projects,
@@ -125,7 +120,15 @@ export function* handleLocationChangeService() {
cardLabels,
tasks,
attachments,
- notifications,
+ deletedNotifications,
),
);
}
+
+export default {
+ goToRoot,
+ goToProject,
+ goToBoard,
+ goToCard,
+ handleLocationChange,
+};
diff --git a/client/src/sagas/core/services/socket.js b/client/src/sagas/core/services/socket.js
index 2b4eac7f..a52c7d25 100644
--- a/client/src/sagas/core/services/socket.js
+++ b/client/src/sagas/core/services/socket.js
@@ -1,18 +1,18 @@
import { call, put, select } from 'redux-saga/effects';
-import { fetchCoreRequest } from '../requests';
-import { currentUserIdSelector, pathSelector } from '../../../selectors';
-import { handleSocketDisconnect, handleSocketReconnect } from '../../../actions';
+import requests from '../requests';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
-export function* handleSocketDisconnectService() {
- yield put(handleSocketDisconnect());
+export function* handleSocketDisconnect() {
+ yield put(actions.handleSocketDisconnect());
}
-export function* handleSocketReconnectService() {
- const currentUserId = yield select(currentUserIdSelector);
- const { boardId } = yield select(pathSelector);
+export function* handleSocketReconnect() {
+ const currentUserId = yield select(selectors.selectCurrentUserId);
+ const { boardId } = yield select(selectors.selectPath);
- yield put(handleSocketReconnect.fetchCore(currentUserId, boardId));
+ yield put(actions.handleSocketReconnect.fetchCore(currentUserId, boardId));
const {
user,
@@ -29,12 +29,12 @@ export function* handleSocketReconnectService() {
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
- } = yield call(fetchCoreRequest); // TODO: handle error
+ } = yield call(requests.fetchCore); // TODO: handle error
yield put(
- handleSocketReconnect(
+ actions.handleSocketReconnect(
user,
board,
users,
@@ -49,8 +49,13 @@ export function* handleSocketReconnectService() {
cardLabels,
tasks,
attachments,
- actions,
+ activities,
notifications,
),
);
}
+
+export default {
+ handleSocketDisconnect,
+ handleSocketReconnect,
+};
diff --git a/client/src/sagas/core/services/task.js b/client/src/sagas/core/services/task.js
deleted file mode 100644
index 4ec49340..00000000
--- a/client/src/sagas/core/services/task.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import request from '../request';
-import { nextTaskPositionSelector, pathSelector, taskByIdSelector } from '../../../selectors';
-import {
- createTask,
- deleteTask,
- handleTaskCreate,
- handleTaskDelete,
- handleTaskUpdate,
- updateTask,
-} from '../../../actions';
-import api from '../../../api';
-import { createLocalId } from '../../../utils/local-id';
-
-export function* createTaskService(cardId, data) {
- const nextData = {
- ...data,
- position: yield select(nextTaskPositionSelector, cardId),
- };
-
- const localId = yield call(createLocalId);
-
- yield put(
- createTask({
- ...nextData,
- cardId,
- id: localId,
- }),
- );
-
- let task;
- try {
- ({ item: task } = yield call(request, api.createTask, cardId, nextData));
- } catch (error) {
- yield put(createTask.failure(localId, error));
- return;
- }
-
- yield put(createTask.success(localId, task));
-}
-
-export function* createTaskInCurrentCardService(data) {
- const { cardId } = yield select(pathSelector);
-
- yield call(createTaskService, cardId, data);
-}
-
-export function* handleTaskCreateService(task) {
- yield put(handleTaskCreate(task));
-}
-
-export function* updateTaskService(id, data) {
- yield put(updateTask(id, data));
-
- let task;
- try {
- ({ item: task } = yield call(request, api.updateTask, id, data));
- } catch (error) {
- yield put(updateTask.failure(id, error));
- return;
- }
-
- yield put(updateTask.success(task));
-}
-
-export function* handleTaskUpdateService(task) {
- yield put(handleTaskUpdate(task));
-}
-
-export function* moveTaskService(id, index) {
- const { cardId } = yield select(taskByIdSelector, id);
- const position = yield select(nextTaskPositionSelector, cardId, index, id);
-
- yield call(updateTaskService, id, {
- position,
- });
-}
-
-export function* deleteTaskService(id) {
- yield put(deleteTask(id));
-
- let task;
- try {
- ({ item: task } = yield call(request, api.deleteTask, id));
- } catch (error) {
- yield put(deleteTask.failure(id, error));
- return;
- }
-
- yield put(deleteTask.success(task));
-}
-
-export function* handleTaskDeleteService(task) {
- yield put(handleTaskDelete(task));
-}
diff --git a/client/src/sagas/core/services/tasks.js b/client/src/sagas/core/services/tasks.js
new file mode 100644
index 00000000..cae0cd4f
--- /dev/null
+++ b/client/src/sagas/core/services/tasks.js
@@ -0,0 +1,100 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+import { createLocalId } from '../../../utils/local-id';
+
+export function* createTask(cardId, data) {
+ const nextData = {
+ ...data,
+ position: yield select(selectors.selectNextTaskPosition, cardId),
+ };
+
+ const localId = yield call(createLocalId);
+
+ yield put(
+ actions.createTask({
+ ...nextData,
+ cardId,
+ id: localId,
+ }),
+ );
+
+ let task;
+ try {
+ ({ item: task } = yield call(request, api.createTask, cardId, nextData));
+ } catch (error) {
+ yield put(actions.createTask.failure(localId, error));
+ return;
+ }
+
+ yield put(actions.createTask.success(localId, task));
+}
+
+export function* createTaskInCurrentCard(data) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(createTask, cardId, data);
+}
+
+export function* handleTaskCreate(task) {
+ yield put(actions.handleTaskCreate(task));
+}
+
+export function* updateTask(id, data) {
+ yield put(actions.updateTask(id, data));
+
+ let task;
+ try {
+ ({ item: task } = yield call(request, api.updateTask, id, data));
+ } catch (error) {
+ yield put(actions.updateTask.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateTask.success(task));
+}
+
+export function* handleTaskUpdate(task) {
+ yield put(actions.handleTaskUpdate(task));
+}
+
+export function* moveTask(id, index) {
+ const { cardId } = yield select(selectors.selectTaskById, id);
+ const position = yield select(selectors.selectNextTaskPosition, cardId, index, id);
+
+ yield call(updateTask, id, {
+ position,
+ });
+}
+
+export function* deleteTask(id) {
+ yield put(actions.deleteTask(id));
+
+ let task;
+ try {
+ ({ item: task } = yield call(request, api.deleteTask, id));
+ } catch (error) {
+ yield put(actions.deleteTask.failure(id, error));
+ return;
+ }
+
+ yield put(actions.deleteTask.success(task));
+}
+
+export function* handleTaskDelete(task) {
+ yield put(actions.handleTaskDelete(task));
+}
+
+export default {
+ createTask,
+ createTaskInCurrentCard,
+ handleTaskCreate,
+ updateTask,
+ handleTaskUpdate,
+ moveTask,
+ deleteTask,
+ handleTaskDelete,
+};
diff --git a/client/src/sagas/core/services/user.js b/client/src/sagas/core/services/user.js
deleted file mode 100644
index 6f9fc88e..00000000
--- a/client/src/sagas/core/services/user.js
+++ /dev/null
@@ -1,304 +0,0 @@
-import { call, put, select } from 'redux-saga/effects';
-
-import { logoutService } from './login';
-import { changeCoreLanguageService } from './core';
-import request from '../request';
-import { currentUserIdSelector, currentUserSelector, pathSelector } from '../../../selectors';
-import {
- addUserToBoardFilter,
- addUserToCard,
- clearUserCreateError,
- clearUserEmailUpdateError,
- clearUserPasswordUpdateError,
- clearUserUsernameUpdateError,
- createUser,
- deleteUser,
- handleUserCreate,
- handleUserDelete,
- handleUserFromCardRemove,
- handleUserToCardAdd,
- handleUserUpdate,
- removeUserFromBoardFilter,
- removeUserFromCard,
- updateUser,
- updateUserAvatar,
- updateUserEmail,
- updateUserPassword,
- updateUserUsername,
-} from '../../../actions';
-import api from '../../../api';
-
-export function* createUserService(data) {
- yield put(createUser(data));
-
- let user;
- try {
- ({ item: user } = yield call(request, api.createUser, data));
- } catch (error) {
- yield put(createUser.failure(error));
- return;
- }
-
- yield put(createUser.success(user));
-}
-
-export function* handleUserCreateService(user) {
- yield put(handleUserCreate(user));
-}
-
-export function* clearUserCreateErrorService() {
- yield put(clearUserCreateError());
-}
-
-export function* updateUserService(id, data) {
- yield put(updateUser(id, data));
-
- let user;
- try {
- ({ item: user } = yield call(request, api.updateUser, id, data));
- } catch (error) {
- yield put(updateUser.failure(id, error));
- return;
- }
-
- yield put(updateUser.success(user));
-}
-
-export function* updateCurrentUserService(data) {
- const id = yield select(currentUserIdSelector);
-
- yield call(updateUserService, id, data);
-}
-
-export function* handleUserUpdateService(user) {
- const currentUser = yield select(currentUserSelector);
- const isCurrent = user.id === currentUser.id;
-
- let users;
- if (isCurrent && !currentUser.isAdmin && user.isAdmin) {
- ({ items: users } = yield call(request, api.getUsers));
- }
-
- yield put(handleUserUpdate(user, users, isCurrent));
-}
-
-// TODO: add loading state
-export function* updateUserLanguageService(id, language) {
- yield call(changeCoreLanguageService, language);
-
- yield call(updateUserService, id, {
- language,
- });
-}
-
-export function* updateCurrentUserLanguageService(language) {
- const id = yield select(currentUserIdSelector);
-
- yield call(updateUserLanguageService, id, language);
-}
-
-export function* updateUserEmailService(id, data) {
- yield put(updateUserEmail(id, data));
-
- let user;
- try {
- ({ item: user } = yield call(request, api.updateUserEmail, id, data));
- } catch (error) {
- yield put(updateUserEmail.failure(id, error));
- return;
- }
-
- yield put(updateUserEmail.success(user));
-}
-
-export function* updateCurrentUserEmailService(data) {
- const id = yield select(currentUserIdSelector);
-
- yield call(updateUserEmailService, id, data);
-}
-
-export function* clearUserEmailUpdateErrorService(id) {
- yield put(clearUserEmailUpdateError(id));
-}
-
-export function* clearCurrentUserEmailUpdateErrorService() {
- const id = yield select(currentUserIdSelector);
-
- yield call(clearUserEmailUpdateErrorService, id);
-}
-
-export function* updateUserPasswordService(id, data) {
- yield put(updateUserPassword(id, data));
-
- let user;
- try {
- ({ item: user } = yield call(request, api.updateUserPassword, id, data));
- } catch (error) {
- yield put(updateUserPassword.failure(id, error));
- return;
- }
-
- yield put(updateUserPassword.success(user));
-}
-
-export function* updateCurrentUserPasswordService(data) {
- const id = yield select(currentUserIdSelector);
-
- yield call(updateUserPasswordService, id, data);
-}
-
-export function* clearUserPasswordUpdateErrorService(id) {
- yield put(clearUserPasswordUpdateError(id));
-}
-
-export function* clearCurrentUserPasswordUpdateErrorService() {
- const id = yield select(currentUserIdSelector);
-
- yield call(clearUserPasswordUpdateErrorService, id);
-}
-
-export function* updateUserUsernameService(id, data) {
- yield put(updateUserUsername(id, data));
-
- let user;
- try {
- ({ item: user } = yield call(request, api.updateUserUsername, id, data));
- } catch (error) {
- yield put(updateUserUsername.failure(id, error));
- return;
- }
-
- yield put(updateUserUsername.success(user));
-}
-
-export function* updateCurrentUserUsernameService(data) {
- const id = yield select(currentUserIdSelector);
-
- yield call(updateUserUsernameService, id, data);
-}
-
-export function* clearUserUsernameUpdateErrorService(id) {
- yield put(clearUserUsernameUpdateError(id));
-}
-
-export function* clearCurrentUserUsernameUpdateErrorService() {
- const id = yield select(currentUserIdSelector);
-
- yield call(clearUserUsernameUpdateErrorService, id);
-}
-
-export function* updateUserAvatarService(id, data) {
- yield put(updateUserAvatar(id));
-
- let user;
- try {
- ({ item: user } = yield call(request, api.updateUserAvatar, id, data));
- } catch (error) {
- yield put(updateUserAvatar.failure(id, error));
- return;
- }
-
- yield put(updateUserAvatar.success(user));
-}
-
-export function* updateCurrentUserAvatarService(data) {
- const id = yield select(currentUserIdSelector);
-
- yield call(updateUserAvatarService, id, data);
-}
-
-export function* deleteUserService(id) {
- yield put(deleteUser(id));
-
- let user;
- try {
- ({ item: user } = yield call(request, api.deleteUser, id));
- } catch (error) {
- yield put(deleteUser.failure(id, error));
- return;
- }
-
- yield put(deleteUser.success(user));
-}
-
-export function* handleUserDeleteService(user) {
- const currentUserId = yield select(currentUserIdSelector);
-
- if (user.id === currentUserId) {
- yield call(logoutService);
- }
-
- yield put(handleUserDelete(user));
-}
-
-export function* addUserToCardService(id, cardId) {
- const currentUserId = yield select(currentUserIdSelector);
-
- yield put(addUserToCard(id, cardId, id === currentUserId));
-
- let cardMembership;
- try {
- ({ item: cardMembership } = yield call(request, api.createCardMembership, cardId, {
- userId: id,
- }));
- } catch (error) {
- yield put(addUserToCard.failure(id, cardId, error));
- return;
- }
-
- yield put(addUserToCard.success(cardMembership));
-}
-
-export function* addUserToCurrentCardService(id) {
- const { cardId } = yield select(pathSelector);
-
- yield call(addUserToCardService, id, cardId);
-}
-
-export function* handleUserToCardAddService(cardMembership) {
- yield put(handleUserToCardAdd(cardMembership));
-}
-
-export function* removeUserFromCardService(id, cardId) {
- yield put(removeUserFromCard(id, cardId));
-
- let cardMembership;
- try {
- ({ item: cardMembership } = yield call(request, api.deleteCardMembership, cardId, id));
- } catch (error) {
- yield put(removeUserFromCard.failure(id, cardId, error));
- return;
- }
-
- yield put(removeUserFromCard.success(cardMembership));
-}
-
-export function* removeUserFromCurrentCardService(id) {
- const { cardId } = yield select(pathSelector);
-
- yield call(removeUserFromCardService, id, cardId);
-}
-
-export function* handleUserFromCardRemoveService(cardMembership) {
- yield put(handleUserFromCardRemove(cardMembership));
-}
-
-export function* addUserToBoardFilterService(id, boardId) {
- yield put(addUserToBoardFilter(id, boardId));
-}
-
-export function* addUserToFilterInCurrentBoardService(id) {
- const { boardId } = yield select(pathSelector);
-
- yield call(addUserToBoardFilterService, id, boardId);
-}
-
-export function* removeUserFromBoardFilterService(id, boardId) {
- yield put(removeUserFromBoardFilter(id, boardId));
-}
-
-export function* removeUserFromFilterInCurrentBoardService(id) {
- const { boardId } = yield select(pathSelector);
-
- yield call(removeUserFromBoardFilterService, id, boardId);
-}
diff --git a/client/src/sagas/core/services/users.js b/client/src/sagas/core/services/users.js
new file mode 100644
index 00000000..12f1f965
--- /dev/null
+++ b/client/src/sagas/core/services/users.js
@@ -0,0 +1,319 @@
+import { call, put, select } from 'redux-saga/effects';
+
+import { changeCoreLanguage, logout } from './core';
+import request from '../request';
+import selectors from '../../../selectors';
+import actions from '../../../actions';
+import api from '../../../api';
+
+export function* createUser(data) {
+ yield put(actions.createUser(data));
+
+ let user;
+ try {
+ ({ item: user } = yield call(request, api.createUser, data));
+ } catch (error) {
+ yield put(actions.createUser.failure(error));
+ return;
+ }
+
+ yield put(actions.createUser.success(user));
+}
+
+export function* handleUserCreate(user) {
+ yield put(actions.handleUserCreate(user));
+}
+
+export function* clearUserCreateError() {
+ yield put(actions.clearUserCreateError());
+}
+
+export function* updateUser(id, data) {
+ yield put(actions.updateUser(id, data));
+
+ let user;
+ try {
+ ({ item: user } = yield call(request, api.updateUser, id, data));
+ } catch (error) {
+ yield put(actions.updateUser.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateUser.success(user));
+}
+
+export function* updateCurrentUser(data) {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(updateUser, id, data);
+}
+
+export function* handleUserUpdate(user) {
+ const currentUser = yield select(selectors.selectCurrentUser);
+ const isCurrent = user.id === currentUser.id;
+
+ let users;
+ if (isCurrent && !currentUser.isAdmin && user.isAdmin) {
+ ({ items: users } = yield call(request, api.getUsers));
+ }
+
+ yield put(actions.handleUserUpdate(user, users, isCurrent));
+}
+
+// TODO: add loading state
+export function* updateUserLanguage(id, language) {
+ yield call(changeCoreLanguage, language);
+
+ yield call(updateUser, id, {
+ language,
+ });
+}
+
+export function* updateCurrentUserLanguage(language) {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(updateUserLanguage, id, language);
+}
+
+export function* updateUserEmail(id, data) {
+ yield put(actions.updateUserEmail(id, data));
+
+ let user;
+ try {
+ ({ item: user } = yield call(request, api.updateUserEmail, id, data));
+ } catch (error) {
+ yield put(actions.updateUserEmail.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateUserEmail.success(user));
+}
+
+export function* updateCurrentUserEmail(data) {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(updateUserEmail, id, data);
+}
+
+export function* clearUserEmailUpdateError(id) {
+ yield put(actions.clearUserEmailUpdateError(id));
+}
+
+export function* clearCurrentUserEmailUpdateError() {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(clearUserEmailUpdateError, id);
+}
+
+export function* updateUserPassword(id, data) {
+ yield put(actions.updateUserPassword(id, data));
+
+ let user;
+ try {
+ ({ item: user } = yield call(request, api.updateUserPassword, id, data));
+ } catch (error) {
+ yield put(actions.updateUserPassword.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateUserPassword.success(user));
+}
+
+export function* updateCurrentUserPassword(data) {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(updateUserPassword, id, data);
+}
+
+export function* clearUserPasswordUpdateError(id) {
+ yield put(actions.clearUserPasswordUpdateError(id));
+}
+
+export function* clearCurrentUserPasswordUpdateError() {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(clearUserPasswordUpdateError, id);
+}
+
+export function* updateUserUsername(id, data) {
+ yield put(actions.updateUserUsername(id, data));
+
+ let user;
+ try {
+ ({ item: user } = yield call(request, api.updateUserUsername, id, data));
+ } catch (error) {
+ yield put(actions.updateUserUsername.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateUserUsername.success(user));
+}
+
+export function* updateCurrentUserUsername(data) {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(updateUserUsername, id, data);
+}
+
+export function* clearUserUsernameUpdateError(id) {
+ yield put(actions.clearUserUsernameUpdateError(id));
+}
+
+export function* clearCurrentUserUsernameUpdateError() {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(clearUserUsernameUpdateError, id);
+}
+
+export function* updateUserAvatar(id, data) {
+ yield put(actions.updateUserAvatar(id));
+
+ let user;
+ try {
+ ({ item: user } = yield call(request, api.updateUserAvatar, id, data));
+ } catch (error) {
+ yield put(actions.updateUserAvatar.failure(id, error));
+ return;
+ }
+
+ yield put(actions.updateUserAvatar.success(user));
+}
+
+export function* updateCurrentUserAvatar(data) {
+ const id = yield select(selectors.selectCurrentUserId);
+
+ yield call(updateUserAvatar, id, data);
+}
+
+export function* deleteUser(id) {
+ yield put(actions.deleteUser(id));
+
+ let user;
+ try {
+ ({ item: user } = yield call(request, api.deleteUser, id));
+ } catch (error) {
+ yield put(actions.deleteUser.failure(id, error));
+ return;
+ }
+
+ yield put(actions.deleteUser.success(user));
+}
+
+export function* handleUserDelete(user) {
+ const currentUserId = yield select(selectors.selectCurrentUserId);
+
+ if (user.id === currentUserId) {
+ yield call(logout);
+ }
+
+ yield put(actions.handleUserDelete(user));
+}
+
+export function* addUserToCard(id, cardId) {
+ const currentUserId = yield select(selectors.selectCurrentUserId);
+
+ yield put(actions.addUserToCard(id, cardId, id === currentUserId));
+
+ let cardMembership;
+ try {
+ ({ item: cardMembership } = yield call(request, api.createCardMembership, cardId, {
+ userId: id,
+ }));
+ } catch (error) {
+ yield put(actions.addUserToCard.failure(id, cardId, error));
+ return;
+ }
+
+ yield put(actions.addUserToCard.success(cardMembership));
+}
+
+export function* addUserToCurrentCard(id) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(addUserToCard, id, cardId);
+}
+
+export function* handleUserToCardAdd(cardMembership) {
+ yield put(actions.handleUserToCardAdd(cardMembership));
+}
+
+export function* removeUserFromCard(id, cardId) {
+ yield put(actions.removeUserFromCard(id, cardId));
+
+ let cardMembership;
+ try {
+ ({ item: cardMembership } = yield call(request, api.deleteCardMembership, cardId, id));
+ } catch (error) {
+ yield put(actions.removeUserFromCard.failure(id, cardId, error));
+ return;
+ }
+
+ yield put(actions.removeUserFromCard.success(cardMembership));
+}
+
+export function* removeUserFromCurrentCard(id) {
+ const { cardId } = yield select(selectors.selectPath);
+
+ yield call(removeUserFromCard, id, cardId);
+}
+
+export function* handleUserFromCardRemove(cardMembership) {
+ yield put(actions.handleUserFromCardRemove(cardMembership));
+}
+
+export function* addUserToBoardFilter(id, boardId) {
+ yield put(actions.addUserToBoardFilter(id, boardId));
+}
+
+export function* addUserToFilterInCurrentBoard(id) {
+ const { boardId } = yield select(selectors.selectPath);
+
+ yield call(addUserToBoardFilter, id, boardId);
+}
+
+export function* removeUserFromBoardFilter(id, boardId) {
+ yield put(actions.removeUserFromBoardFilter(id, boardId));
+}
+
+export function* removeUserFromFilterInCurrentBoard(id) {
+ const { boardId } = yield select(selectors.selectPath);
+
+ yield call(removeUserFromBoardFilter, id, boardId);
+}
+
+export default {
+ createUser,
+ handleUserCreate,
+ clearUserCreateError,
+ updateUser,
+ updateCurrentUser,
+ handleUserUpdate,
+ updateUserLanguage,
+ updateCurrentUserLanguage,
+ updateUserEmail,
+ updateCurrentUserEmail,
+ clearUserEmailUpdateError,
+ clearCurrentUserEmailUpdateError,
+ updateUserPassword,
+ updateCurrentUserPassword,
+ clearUserPasswordUpdateError,
+ clearCurrentUserPasswordUpdateError,
+ updateUserUsername,
+ updateCurrentUserUsername,
+ clearUserUsernameUpdateError,
+ clearCurrentUserUsernameUpdateError,
+ updateUserAvatar,
+ updateCurrentUserAvatar,
+ deleteUser,
+ handleUserDelete,
+ addUserToCard,
+ addUserToCurrentCard,
+ handleUserToCardAdd,
+ removeUserFromCard,
+ removeUserFromCurrentCard,
+ handleUserFromCardRemove,
+ addUserToBoardFilter,
+ addUserToFilterInCurrentBoard,
+ removeUserFromBoardFilter,
+ removeUserFromFilterInCurrentBoard,
+};
diff --git a/client/src/sagas/core/watchers/action.js b/client/src/sagas/core/watchers/action.js
deleted file mode 100644
index c76cff9f..00000000
--- a/client/src/sagas/core/watchers/action.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { all, takeEvery } from 'redux-saga/effects';
-
-import {
- handleActionCreateService,
- handleActionDeleteService,
- handleActionUpdateService,
-} from '../services';
-import EntryActionTypes from '../../../constants/EntryActionTypes';
-
-export default function* actionWatchers() {
- yield all([
- takeEvery(EntryActionTypes.ACTION_CREATE_HANDLE, ({ payload: { action } }) =>
- handleActionCreateService(action),
- ),
- takeEvery(EntryActionTypes.ACTION_UPDATE_HANDLE, ({ payload: { action } }) =>
- handleActionUpdateService(action),
- ),
- takeEvery(EntryActionTypes.ACTION_DELETE_HANDLE, ({ payload: { action } }) =>
- handleActionDeleteService(action),
- ),
- ]);
-}
diff --git a/client/src/sagas/core/watchers/actions.js b/client/src/sagas/core/watchers/actions.js
deleted file mode 100644
index da7b71a9..00000000
--- a/client/src/sagas/core/watchers/actions.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import { all, takeEvery } from 'redux-saga/effects';
-
-import {
- fetchActionsInCurrentCardService,
- toggleActionsDetailsInCurrentCardService,
-} from '../services';
-import EntryActionTypes from '../../../constants/EntryActionTypes';
-
-export default function* actionsWatchers() {
- yield all([
- takeEvery(EntryActionTypes.ACTIONS_IN_CURRENT_CARD_FETCH, () =>
- fetchActionsInCurrentCardService(),
- ),
- takeEvery(
- EntryActionTypes.ACTIONS_DETAILS_IN_CURRENT_CARD_TOGGLE,
- ({ payload: { isVisible } }) => toggleActionsDetailsInCurrentCardService(isVisible),
- ),
- ]);
-}
diff --git a/client/src/sagas/core/watchers/activities.js b/client/src/sagas/core/watchers/activities.js
new file mode 100644
index 00000000..abd6b76e
--- /dev/null
+++ b/client/src/sagas/core/watchers/activities.js
@@ -0,0 +1,25 @@
+import { all, takeEvery } from 'redux-saga/effects';
+
+import services from '../services';
+import EntryActionTypes from '../../../constants/EntryActionTypes';
+
+export default function* activitiesWatchers() {
+ yield all([
+ takeEvery(EntryActionTypes.ACTIVITIES_IN_CURRENT_CARD_FETCH, () =>
+ services.fetchActivitiesInCurrentCard(),
+ ),
+ takeEvery(
+ EntryActionTypes.ACTIVITIES_DETAILS_IN_CURRENT_CARD_TOGGLE,
+ ({ payload: { isVisible } }) => services.toggleActivitiesDetailsInCurrentCard(isVisible),
+ ),
+ takeEvery(EntryActionTypes.ACTIVITY_CREATE_HANDLE, ({ payload: { activity } }) =>
+ services.handleActivityCreate(activity),
+ ),
+ takeEvery(EntryActionTypes.ACTIVITY_UPDATE_HANDLE, ({ payload: { activity } }) =>
+ services.handleActivityUpdate(activity),
+ ),
+ takeEvery(EntryActionTypes.ACTIVITY_DELETE_HANDLE, ({ payload: { activity } }) =>
+ services.handleActivityDelete(activity),
+ ),
+ ]);
+}
diff --git a/client/src/sagas/core/watchers/attachment.js b/client/src/sagas/core/watchers/attachments.js
similarity index 56%
rename from client/src/sagas/core/watchers/attachment.js
rename to client/src/sagas/core/watchers/attachments.js
index 125988e6..c85a46e1 100644
--- a/client/src/sagas/core/watchers/attachment.js
+++ b/client/src/sagas/core/watchers/attachments.js
@@ -1,34 +1,27 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- createAttachmentInCurrentCardService,
- deleteAttachmentService,
- handleAttachmentCreateService,
- handleAttachmentDeleteService,
- handleAttachmentUpdateService,
- updateAttachmentService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* attachmentWatchers() {
+export default function* attachmentsWatchers() {
yield all([
takeEvery(EntryActionTypes.ATTACHMENT_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) =>
- createAttachmentInCurrentCardService(data),
+ services.createAttachmentInCurrentCard(data),
),
takeEvery(EntryActionTypes.ATTACHMENT_CREATE_HANDLE, ({ payload: { attachment, requestId } }) =>
- handleAttachmentCreateService(attachment, requestId),
+ services.handleAttachmentCreate(attachment, requestId),
),
takeEvery(EntryActionTypes.ATTACHMENT_UPDATE, ({ payload: { id, data } }) =>
- updateAttachmentService(id, data),
+ services.updateAttachment(id, data),
),
takeEvery(EntryActionTypes.ATTACHMENT_UPDATE_HANDLE, ({ payload: { attachment } }) =>
- handleAttachmentUpdateService(attachment),
+ services.handleAttachmentUpdate(attachment),
),
takeEvery(EntryActionTypes.ATTACHMENT_DELETE, ({ payload: { id } }) =>
- deleteAttachmentService(id),
+ services.deleteAttachment(id),
),
takeEvery(EntryActionTypes.ATTACHMENT_DELETE_HANDLE, ({ payload: { attachment } }) =>
- handleAttachmentDeleteService(attachment),
+ services.handleAttachmentDelete(attachment),
),
]);
}
diff --git a/client/src/sagas/core/watchers/board-membership.js b/client/src/sagas/core/watchers/board-memberships.js
similarity index 55%
rename from client/src/sagas/core/watchers/board-membership.js
rename to client/src/sagas/core/watchers/board-memberships.js
index ed909648..2bba3bb6 100644
--- a/client/src/sagas/core/watchers/board-membership.js
+++ b/client/src/sagas/core/watchers/board-memberships.js
@@ -1,26 +1,21 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- createMembershipInCurrentBoardService,
- deleteBoardMembershipService,
- handleBoardMembershipCreateService,
- handleBoardMembershipDeleteService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* boardMembershipWatchers() {
+export default function* boardMembershipsWatchers() {
yield all([
takeEvery(EntryActionTypes.MEMBERSHIP_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) =>
- createMembershipInCurrentBoardService(data),
+ services.createMembershipInCurrentBoard(data),
),
takeEvery(EntryActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE, ({ payload: { boardMembership } }) =>
- handleBoardMembershipCreateService(boardMembership),
+ services.handleBoardMembershipCreate(boardMembership),
),
takeEvery(EntryActionTypes.BOARD_MEMBERSHIP_DELETE, ({ payload: { id } }) =>
- deleteBoardMembershipService(id),
+ services.deleteBoardMembership(id),
),
takeEvery(EntryActionTypes.BOARD_MEMBERSHIP_DELETE_HANDLE, ({ payload: { boardMembership } }) =>
- handleBoardMembershipDeleteService(boardMembership),
+ services.handleBoardMembershipDelete(boardMembership),
),
]);
}
diff --git a/client/src/sagas/core/watchers/board.js b/client/src/sagas/core/watchers/boards.js
similarity index 58%
rename from client/src/sagas/core/watchers/board.js
rename to client/src/sagas/core/watchers/boards.js
index aca352ee..ad9f2615 100644
--- a/client/src/sagas/core/watchers/board.js
+++ b/client/src/sagas/core/watchers/boards.js
@@ -1,38 +1,29 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- createBoardInCurrentProjectService,
- deleteBoardService,
- fetchBoardService,
- handleBoardCreateService,
- handleBoardDeleteService,
- handleBoardUpdateService,
- moveBoardService,
- updateBoardService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* boardWatchers() {
+export default function* boardsWatchers() {
yield all([
takeEvery(EntryActionTypes.BOARD_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) =>
- createBoardInCurrentProjectService(data),
+ services.createBoardInCurrentProject(data),
),
takeEvery(EntryActionTypes.BOARD_CREATE_HANDLE, ({ payload: { board } }) =>
- handleBoardCreateService(board),
+ services.handleBoardCreate(board),
),
- takeEvery(EntryActionTypes.BOARD_FETCH, ({ payload: { id } }) => fetchBoardService(id)),
+ takeEvery(EntryActionTypes.BOARD_FETCH, ({ payload: { id } }) => services.fetchBoard(id)),
takeEvery(EntryActionTypes.BOARD_UPDATE, ({ payload: { id, data } }) =>
- updateBoardService(id, data),
+ services.updateBoard(id, data),
),
takeEvery(EntryActionTypes.BOARD_UPDATE_HANDLE, ({ payload: { board } }) =>
- handleBoardUpdateService(board),
+ services.handleBoardUpdate(board),
),
takeEvery(EntryActionTypes.BOARD_MOVE, ({ payload: { id, index } }) =>
- moveBoardService(id, index),
+ services.moveBoard(id, index),
),
- takeEvery(EntryActionTypes.BOARD_DELETE, ({ payload: { id } }) => deleteBoardService(id)),
+ takeEvery(EntryActionTypes.BOARD_DELETE, ({ payload: { id } }) => services.deleteBoard(id)),
takeEvery(EntryActionTypes.BOARD_DELETE_HANDLE, ({ payload: { board } }) =>
- handleBoardDeleteService(board),
+ services.handleBoardDelete(board),
),
]);
}
diff --git a/client/src/sagas/core/watchers/card.js b/client/src/sagas/core/watchers/cards.js
similarity index 54%
rename from client/src/sagas/core/watchers/card.js
rename to client/src/sagas/core/watchers/cards.js
index 16fac5cc..6a5d0889 100644
--- a/client/src/sagas/core/watchers/card.js
+++ b/client/src/sagas/core/watchers/cards.js
@@ -1,54 +1,41 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- createCardService,
- deleteCardService,
- deleteCurrentCardService,
- handleCardCreateService,
- handleCardDeleteService,
- handleCardUpdateService,
- moveCardService,
- moveCurrentCardService,
- transferCardService,
- transferCurrentCardService,
- updateCardService,
- updateCurrentCardService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* cardWatchers() {
+export default function* cardsWatchers() {
yield all([
takeEvery(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data } }) =>
- createCardService(listId, data),
+ services.createCard(listId, data),
),
takeEvery(EntryActionTypes.CARD_CREATE_HANDLE, ({ payload: { card } }) =>
- handleCardCreateService(card),
+ services.handleCardCreate(card),
),
takeEvery(EntryActionTypes.CARD_UPDATE, ({ payload: { id, data } }) =>
- updateCardService(id, data),
+ services.updateCard(id, data),
),
takeEvery(EntryActionTypes.CURRENT_CARD_UPDATE, ({ payload: { data } }) =>
- updateCurrentCardService(data),
+ services.updateCurrentCard(data),
),
takeEvery(EntryActionTypes.CARD_UPDATE_HANDLE, ({ payload: { card } }) =>
- handleCardUpdateService(card),
+ services.handleCardUpdate(card),
),
takeEvery(EntryActionTypes.CARD_MOVE, ({ payload: { id, listId, index } }) =>
- moveCardService(id, listId, index),
+ services.moveCard(id, listId, index),
),
takeEvery(EntryActionTypes.CURRENT_CARD_MOVE, ({ payload: { listId, index } }) =>
- moveCurrentCardService(listId, index),
+ services.moveCurrentCard(listId, index),
),
takeEvery(EntryActionTypes.CARD_TRANSFER, ({ payload: { id, boardId, listId, index } }) =>
- transferCardService(id, boardId, listId, index),
+ services.transferCard(id, boardId, listId, index),
),
takeEvery(EntryActionTypes.CURRENT_CARD_TRANSFER, ({ payload: { boardId, listId, index } }) =>
- transferCurrentCardService(boardId, listId, index),
+ services.transferCurrentCard(boardId, listId, index),
),
- takeEvery(EntryActionTypes.CARD_DELETE, ({ payload: { id } }) => deleteCardService(id)),
- takeEvery(EntryActionTypes.CURRENT_CARD_DELETE, () => deleteCurrentCardService()),
+ takeEvery(EntryActionTypes.CARD_DELETE, ({ payload: { id } }) => services.deleteCard(id)),
+ takeEvery(EntryActionTypes.CURRENT_CARD_DELETE, () => services.deleteCurrentCard()),
takeEvery(EntryActionTypes.CARD_DELETE_HANDLE, ({ payload: { card } }) =>
- handleCardDeleteService(card),
+ services.handleCardDelete(card),
),
]);
}
diff --git a/client/src/sagas/core/watchers/comment-action.js b/client/src/sagas/core/watchers/comment-action.js
deleted file mode 100644
index 29e64f36..00000000
--- a/client/src/sagas/core/watchers/comment-action.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { all, takeEvery } from 'redux-saga/effects';
-
-import {
- createCommentActionInCurrentCardService,
- deleteCommentActionService,
- updateCommentActionService,
-} from '../services';
-import EntryActionTypes from '../../../constants/EntryActionTypes';
-
-export default function* commentActionWatchers() {
- yield all([
- takeEvery(EntryActionTypes.COMMENT_ACTION_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) =>
- createCommentActionInCurrentCardService(data),
- ),
- takeEvery(EntryActionTypes.COMMENT_ACTION_UPDATE, ({ payload: { id, data } }) =>
- updateCommentActionService(id, data),
- ),
- takeEvery(EntryActionTypes.COMMENT_ACTION_DELETE, ({ payload: { id } }) =>
- deleteCommentActionService(id),
- ),
- ]);
-}
diff --git a/client/src/sagas/core/watchers/comment-activities.js b/client/src/sagas/core/watchers/comment-activities.js
new file mode 100644
index 00000000..e95e91ee
--- /dev/null
+++ b/client/src/sagas/core/watchers/comment-activities.js
@@ -0,0 +1,18 @@
+import { all, takeEvery } from 'redux-saga/effects';
+
+import services from '../services';
+import EntryActionTypes from '../../../constants/EntryActionTypes';
+
+export default function* commentActivitiesWatchers() {
+ yield all([
+ takeEvery(EntryActionTypes.COMMENT_ACTIVITY_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) =>
+ services.createCommentActivityInCurrentCard(data),
+ ),
+ takeEvery(EntryActionTypes.COMMENT_ACTIVITY_UPDATE, ({ payload: { id, data } }) =>
+ services.updateCommentActivity(id, data),
+ ),
+ takeEvery(EntryActionTypes.COMMENT_ACTIVITY_DELETE, ({ payload: { id } }) =>
+ services.deleteCommentActivity(id),
+ ),
+ ]);
+}
diff --git a/client/src/sagas/core/watchers/core.js b/client/src/sagas/core/watchers/core.js
index 62cfd6c9..40485b86 100644
--- a/client/src/sagas/core/watchers/core.js
+++ b/client/src/sagas/core/watchers/core.js
@@ -1,8 +1,11 @@
-import { takeEvery } from 'redux-saga/effects';
+import { all, takeEvery } from 'redux-saga/effects';
-import { initializeCoreService } from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* coreWatchers() {
- yield takeEvery(EntryActionTypes.CORE_INITIALIZE, () => initializeCoreService());
+ yield all([
+ takeEvery(EntryActionTypes.CORE_INITIALIZE, () => services.initializeCore()),
+ takeEvery(EntryActionTypes.LOGOUT, () => services.logout()),
+ ]);
}
diff --git a/client/src/sagas/core/watchers/index.js b/client/src/sagas/core/watchers/index.js
index 27c81c1c..30df370b 100755
--- a/client/src/sagas/core/watchers/index.js
+++ b/client/src/sagas/core/watchers/index.js
@@ -1,41 +1,37 @@
import router from './router';
import socket from './socket';
-import login from './login';
import core from './core';
-import modal from './modal';
-import user from './user';
-import project from './project';
-import projectManager from './project-manager';
-import board from './board';
-import boardMembership from './board-membership';
-import label from './label';
-import list from './list';
-import card from './card';
-import task from './task';
-import attachment from './attachment';
-import actions from './actions';
-import action from './action';
-import commentAction from './comment-action';
-import notification from './notification';
+import modals from './modals';
+import users from './users';
+import projects from './projects';
+import projectManagers from './project-managers';
+import boards from './boards';
+import boardMemberships from './board-memberships';
+import labels from './labels';
+import lists from './lists';
+import cards from './cards';
+import tasks from './tasks';
+import attachments from './attachments';
+import activities from './activities';
+import commentActivities from './comment-activities';
+import notifications from './notifications';
export default [
router,
socket,
- login,
core,
- modal,
- user,
- project,
- projectManager,
- board,
- boardMembership,
- label,
- list,
- card,
- task,
- attachment,
- actions,
- action,
- commentAction,
- notification,
+ modals,
+ users,
+ projects,
+ projectManagers,
+ boards,
+ boardMemberships,
+ labels,
+ lists,
+ cards,
+ tasks,
+ attachments,
+ activities,
+ commentActivities,
+ notifications,
];
diff --git a/client/src/sagas/core/watchers/label.js b/client/src/sagas/core/watchers/labels.js
similarity index 56%
rename from client/src/sagas/core/watchers/label.js
rename to client/src/sagas/core/watchers/labels.js
index 75ba0c8e..f8e52e01 100644
--- a/client/src/sagas/core/watchers/label.js
+++ b/client/src/sagas/core/watchers/labels.js
@@ -1,64 +1,49 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- addLabelToCardService,
- addLabelToCurrentCardService,
- addLabelToFilterInCurrentBoardService,
- createLabelInCurrentBoardService,
- deleteLabelService,
- handleLabelCreateService,
- handleLabelDeleteService,
- handleLabelFromCardRemoveService,
- handleLabelToCardAddService,
- handleLabelUpdateService,
- removeLabelFromCardService,
- removeLabelFromCurrentCardService,
- removeLabelFromFilterInCurrentBoardService,
- updateLabelService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* labelWatchers() {
+export default function* labelsWatchers() {
yield all([
takeEvery(EntryActionTypes.LABEL_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) =>
- createLabelInCurrentBoardService(data),
+ services.createLabelInCurrentBoard(data),
),
takeEvery(EntryActionTypes.LABEL_CREATE_HANDLE, ({ payload: { label } }) =>
- handleLabelCreateService(label),
+ services.handleLabelCreate(label),
),
takeEvery(EntryActionTypes.LABEL_UPDATE, ({ payload: { id, data } }) =>
- updateLabelService(id, data),
+ services.updateLabel(id, data),
),
takeEvery(EntryActionTypes.LABEL_UPDATE_HANDLE, ({ payload: { label } }) =>
- handleLabelUpdateService(label),
+ services.handleLabelUpdate(label),
),
- takeEvery(EntryActionTypes.LABEL_DELETE, ({ payload: { id } }) => deleteLabelService(id)),
+ takeEvery(EntryActionTypes.LABEL_DELETE, ({ payload: { id } }) => services.deleteLabel(id)),
takeEvery(EntryActionTypes.LABEL_DELETE_HANDLE, ({ payload: { label } }) =>
- handleLabelDeleteService(label),
+ services.handleLabelDelete(label),
),
takeEvery(EntryActionTypes.LABEL_TO_CARD_ADD, ({ payload: { id, cardId } }) =>
- addLabelToCardService(id, cardId),
+ services.addLabelToCard(id, cardId),
),
takeEvery(EntryActionTypes.LABEL_TO_CURRENT_CARD_ADD, ({ payload: { id } }) =>
- addLabelToCurrentCardService(id),
+ services.addLabelToCurrentCard(id),
),
takeEvery(EntryActionTypes.LABEL_TO_CARD_ADD_HANDLE, ({ payload: { cardLabel } }) =>
- handleLabelToCardAddService(cardLabel),
+ services.handleLabelToCardAdd(cardLabel),
),
takeEvery(EntryActionTypes.LABEL_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) =>
- removeLabelFromCardService(id, cardId),
+ services.removeLabelFromCard(id, cardId),
),
takeEvery(EntryActionTypes.LABEL_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) =>
- removeLabelFromCurrentCardService(id),
+ services.removeLabelFromCurrentCard(id),
),
takeEvery(EntryActionTypes.LABEL_FROM_CARD_REMOVE_HANDLE, ({ payload: { cardLabel } }) =>
- handleLabelFromCardRemoveService(cardLabel),
+ services.handleLabelFromCardRemove(cardLabel),
),
takeEvery(EntryActionTypes.LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) =>
- addLabelToFilterInCurrentBoardService(id),
+ services.addLabelToFilterInCurrentBoard(id),
),
takeEvery(EntryActionTypes.LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) =>
- removeLabelFromFilterInCurrentBoardService(id),
+ services.removeLabelFromFilterInCurrentBoard(id),
),
]);
}
diff --git a/client/src/sagas/core/watchers/list.js b/client/src/sagas/core/watchers/lists.js
similarity index 58%
rename from client/src/sagas/core/watchers/list.js
rename to client/src/sagas/core/watchers/lists.js
index 67462f8a..028881ed 100644
--- a/client/src/sagas/core/watchers/list.js
+++ b/client/src/sagas/core/watchers/lists.js
@@ -1,36 +1,28 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- createListInCurrentBoardService,
- deleteListService,
- handleListCreateService,
- handleListDeleteService,
- handleListUpdateService,
- moveListService,
- updateListService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* listWatchers() {
+export default function* listsWatchers() {
yield all([
takeEvery(EntryActionTypes.LIST_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) =>
- createListInCurrentBoardService(data),
+ services.createListInCurrentBoard(data),
),
takeEvery(EntryActionTypes.LIST_CREATE_HANDLE, ({ payload: { list } }) =>
- handleListCreateService(list),
+ services.handleListCreate(list),
),
takeEvery(EntryActionTypes.LIST_UPDATE, ({ payload: { id, data } }) =>
- updateListService(id, data),
+ services.updateList(id, data),
),
takeEvery(EntryActionTypes.LIST_UPDATE_HANDLE, ({ payload: { list } }) =>
- handleListUpdateService(list),
+ services.handleListUpdate(list),
),
takeEvery(EntryActionTypes.LIST_MOVE, ({ payload: { id, index } }) =>
- moveListService(id, index),
+ services.moveList(id, index),
),
- takeEvery(EntryActionTypes.LIST_DELETE, ({ payload: { id } }) => deleteListService(id)),
+ takeEvery(EntryActionTypes.LIST_DELETE, ({ payload: { id } }) => services.deleteList(id)),
takeEvery(EntryActionTypes.LIST_DELETE_HANDLE, ({ payload: { list } }) =>
- handleListDeleteService(list),
+ services.handleListDelete(list),
),
]);
}
diff --git a/client/src/sagas/core/watchers/login.js b/client/src/sagas/core/watchers/login.js
deleted file mode 100644
index 84fd40c5..00000000
--- a/client/src/sagas/core/watchers/login.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import { takeEvery } from 'redux-saga/effects';
-
-import { logoutService } from '../services';
-import EntryActionTypes from '../../../constants/EntryActionTypes';
-
-export default function* loginWatchers() {
- yield takeEvery(EntryActionTypes.LOGOUT, () => logoutService());
-}
diff --git a/client/src/sagas/core/watchers/modal.js b/client/src/sagas/core/watchers/modal.js
deleted file mode 100644
index 50b6956a..00000000
--- a/client/src/sagas/core/watchers/modal.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { all, takeEvery } from 'redux-saga/effects';
-
-import { closeModalService, openModalService } from '../services';
-import EntryActionTypes from '../../../constants/EntryActionTypes';
-
-export default function* modalWatchers() {
- yield all([
- takeEvery(EntryActionTypes.MODAL_OPEN, ({ payload: { type } }) => openModalService(type)),
- takeEvery(EntryActionTypes.MODAL_CLOSE, () => closeModalService()),
- ]);
-}
diff --git a/client/src/sagas/core/watchers/modals.js b/client/src/sagas/core/watchers/modals.js
new file mode 100644
index 00000000..3d9cd5b0
--- /dev/null
+++ b/client/src/sagas/core/watchers/modals.js
@@ -0,0 +1,11 @@
+import { all, takeEvery } from 'redux-saga/effects';
+
+import services from '../services';
+import EntryActionTypes from '../../../constants/EntryActionTypes';
+
+export default function* modalsWatchers() {
+ yield all([
+ takeEvery(EntryActionTypes.MODAL_OPEN, ({ payload: { type } }) => services.openModal(type)),
+ takeEvery(EntryActionTypes.MODAL_CLOSE, () => services.closeModal()),
+ ]);
+}
diff --git a/client/src/sagas/core/watchers/notification.js b/client/src/sagas/core/watchers/notifications.js
similarity index 57%
rename from client/src/sagas/core/watchers/notification.js
rename to client/src/sagas/core/watchers/notifications.js
index 93fb5ef3..c5c57283 100644
--- a/client/src/sagas/core/watchers/notification.js
+++ b/client/src/sagas/core/watchers/notifications.js
@@ -1,22 +1,18 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- deleteNotificationService,
- handleNotificationCreateService,
- handleNotificationDeleteService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* notificationWatchers() {
+export default function* notificationsWatchers() {
yield all([
takeEvery(EntryActionTypes.NOTIFICATION_CREATE_HANDLE, ({ payload: { notification } }) =>
- handleNotificationCreateService(notification),
+ services.handleNotificationCreate(notification),
),
takeEvery(EntryActionTypes.NOTIFICATION_DELETE, ({ payload: { id } }) =>
- deleteNotificationService(id),
+ services.deleteNotification(id),
),
takeEvery(EntryActionTypes.NOTIFICATION_DELETE_HANDLE, ({ payload: { notification } }) =>
- handleNotificationDeleteService(notification),
+ services.handleNotificationDelete(notification),
),
]);
}
diff --git a/client/src/sagas/core/watchers/project-manager.js b/client/src/sagas/core/watchers/project-managers.js
similarity index 55%
rename from client/src/sagas/core/watchers/project-manager.js
rename to client/src/sagas/core/watchers/project-managers.js
index 18c65a7b..bc140787 100644
--- a/client/src/sagas/core/watchers/project-manager.js
+++ b/client/src/sagas/core/watchers/project-managers.js
@@ -1,26 +1,21 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- createManagerInCurrentProjectService,
- deleteProjectManagerService,
- handleProjectManagerCreateService,
- handleProjectManagerDeleteService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* projectManagerWatchers() {
+export default function* projectManagersWatchers() {
yield all([
takeEvery(EntryActionTypes.MANAGER_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) =>
- createManagerInCurrentProjectService(data),
+ services.createManagerInCurrentProject(data),
),
takeEvery(EntryActionTypes.PROJECT_MANAGER_CREATE_HANDLE, ({ payload: { projectManager } }) =>
- handleProjectManagerCreateService(projectManager),
+ services.handleProjectManagerCreate(projectManager),
),
takeEvery(EntryActionTypes.PROJECT_MANAGER_DELETE, ({ payload: { id } }) =>
- deleteProjectManagerService(id),
+ services.deleteProjectManager(id),
),
takeEvery(EntryActionTypes.PROJECT_MANAGER_DELETE_HANDLE, ({ payload: { projectManager } }) =>
- handleProjectManagerDeleteService(projectManager),
+ services.handleProjectManagerDelete(projectManager),
),
]);
}
diff --git a/client/src/sagas/core/watchers/project.js b/client/src/sagas/core/watchers/projects.js
similarity index 51%
rename from client/src/sagas/core/watchers/project.js
rename to client/src/sagas/core/watchers/projects.js
index 8283de1a..cd1acc04 100644
--- a/client/src/sagas/core/watchers/project.js
+++ b/client/src/sagas/core/watchers/projects.js
@@ -1,36 +1,28 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- createProjectService,
- deleteCurrentProjectService,
- handleProjectCreateService,
- handleProjectDeleteService,
- handleProjectUpdateService,
- updateCurrentProjectBackgroundImageService,
- updateCurrentProjectService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* projectWatchers() {
+export default function* projectsWatchers() {
yield all([
takeEvery(EntryActionTypes.PROJECT_CREATE, ({ payload: { data } }) =>
- createProjectService(data),
+ services.createProject(data),
),
takeEvery(EntryActionTypes.PROJECT_CREATE_HANDLE, ({ payload: { project } }) =>
- handleProjectCreateService(project),
+ services.handleProjectCreate(project),
),
takeEvery(EntryActionTypes.CURRENT_PROJECT_UPDATE, ({ payload: { data } }) =>
- updateCurrentProjectService(data),
+ services.updateCurrentProject(data),
),
takeEvery(EntryActionTypes.PROJECT_UPDATE_HANDLE, ({ payload: { project } }) =>
- handleProjectUpdateService(project),
+ services.handleProjectUpdate(project),
),
takeEvery(EntryActionTypes.CURRENT_PROJECT_BACKGROUND_IMAGE_UPDATE, ({ payload: { data } }) =>
- updateCurrentProjectBackgroundImageService(data),
+ services.updateCurrentProjectBackgroundImage(data),
),
- takeEvery(EntryActionTypes.CURRENT_PROJECT_DELETE, () => deleteCurrentProjectService()),
+ takeEvery(EntryActionTypes.CURRENT_PROJECT_DELETE, () => services.deleteCurrentProject()),
takeEvery(EntryActionTypes.PROJECT_DELETE_HANDLE, ({ payload: { project } }) =>
- handleProjectDeleteService(project),
+ services.handleProjectDelete(project),
),
]);
}
diff --git a/client/src/sagas/core/watchers/router.js b/client/src/sagas/core/watchers/router.js
index c25472ab..da82c471 100755
--- a/client/src/sagas/core/watchers/router.js
+++ b/client/src/sagas/core/watchers/router.js
@@ -1,8 +1,8 @@
import { takeEvery } from 'redux-saga/effects';
import { LOCATION_CHANGE } from 'connected-react-router';
-import { handleLocationChangeService } from '../services';
+import services from '../services';
export default function* routerWatchers() {
- yield takeEvery(LOCATION_CHANGE, () => handleLocationChangeService());
+ yield takeEvery(LOCATION_CHANGE, () => services.handleLocationChange());
}
diff --git a/client/src/sagas/core/watchers/socket.js b/client/src/sagas/core/watchers/socket.js
index 0bbc18ac..e84a3ccc 100644
--- a/client/src/sagas/core/watchers/socket.js
+++ b/client/src/sagas/core/watchers/socket.js
@@ -1,208 +1,168 @@
import { eventChannel } from 'redux-saga';
import { all, call, cancelled, put, take, takeEvery } from 'redux-saga/effects';
-import { handleSocketDisconnectService, handleSocketReconnectService } from '../services';
-import {
- handleProjectManagerCreate as handleProjectManagerCreateAction,
- handleProjectManagerDelete as handleProjectManagerDeleteAction,
- handleBoardCreate as handleBoardCreateAction,
- handleBoardUpdate as handleBoardUpdateAction,
- handleBoardDelete as handleBoardDeleteAction,
- handleBoardMembershipCreate as handleBoardMembershipCreateAction,
- handleBoardMembershipDelete as handleBoardMembershipDeleteAction,
- handleListCreate as handleListCreateAction,
- handleListUpdate as handleListUpdateAction,
- handleListDelete as handleListDeleteAction,
- handleLabelCreate as handleLabelCreateAction,
- handleLabelUpdate as handleLabelUpdateAction,
- handleLabelDelete as handleLabelDeleteAction,
- handleCardCreate as handleCardCreateAction,
- handleCardUpdate as handleCardUpdateAction,
- handleCardDelete as handleCardDeleteAction,
- handleUserToCardAdd as handleUserToCardAddAction,
- handleUserFromCardRemove as handleUserFromCardRemoveAction,
- handleLabelToCardAdd as handleLabelToCardAddAction,
- handleLabelFromCardRemove as handleLabelFromCardRemoveAction,
- handleTaskCreate as handleTaskCreateAction,
- handleTaskUpdate as handleTaskUpdateAction,
- handleTaskDelete as handleTaskDeleteAction,
- handleAttachmentCreate as handleAttachmentCreateAction,
- handleAttachmentUpdate as handleAttachmentUpdateAction,
- handleAttachmentDelete as handleAttachmentDeleteAction,
- handleActionCreate as handleActionCreateAction,
- handleActionUpdate as handleActionUpdateAction,
- handleActionDelete as handleActionDeleteAction,
- handleNotificationCreate as handleNotificationCreateAction,
- handleNotificationDelete as handleNotificationDeleteAction,
- handleSocketDisconnect as handleSocketDisconnectAction,
- handleUserCreate as handleUserCreateAction,
- handleUserUpdate as handleUserUpdateAction,
- handleUserDelete as handleUserDeleteAction,
- handleProjectCreate as handleProjectCreateAction,
- handleProjectUpdate as handleProjectUpdateAction,
- handleProjectDelete as handleProjectDeleteAction,
- handleSocketReconnect as handleSocketReconnectAction,
-} from '../../../actions/entry';
+import services from '../services';
+import entryActions from '../../../entry-actions';
import api, { socket } from '../../../api';
import EntryActionTypes from '../../../constants/EntryActionTypes';
const createSocketEventsChannel = () =>
eventChannel((emit) => {
const handleDisconnect = () => {
- emit(handleSocketDisconnectAction());
+ emit(entryActions.handleSocketDisconnect());
};
const handleReconnect = () => {
- emit(handleSocketReconnectAction());
+ emit(entryActions.handleSocketReconnect());
};
const handleUserCreate = ({ item }) => {
- emit(handleUserCreateAction(item));
+ emit(entryActions.handleUserCreate(item));
};
const handleUserUpdate = ({ item }) => {
- emit(handleUserUpdateAction(item));
+ emit(entryActions.handleUserUpdate(item));
};
const handleUserDelete = ({ item }) => {
- emit(handleUserDeleteAction(item));
+ emit(entryActions.handleUserDelete(item));
};
const handleProjectCreate = ({ item }) => {
- emit(handleProjectCreateAction(item));
+ emit(entryActions.handleProjectCreate(item));
};
const handleProjectUpdate = ({ item }) => {
- emit(handleProjectUpdateAction(item));
+ emit(entryActions.handleProjectUpdate(item));
};
const handleProjectDelete = ({ item }) => {
- emit(handleProjectDeleteAction(item));
+ emit(entryActions.handleProjectDelete(item));
};
const handleProjectManagerCreate = ({ item }) => {
- emit(handleProjectManagerCreateAction(item));
+ emit(entryActions.handleProjectManagerCreate(item));
};
const handleProjectManagerDelete = ({ item }) => {
- emit(handleProjectManagerDeleteAction(item));
+ emit(entryActions.handleProjectManagerDelete(item));
};
const handleBoardCreate = ({ item }) => {
- emit(handleBoardCreateAction(item));
+ emit(entryActions.handleBoardCreate(item));
};
const handleBoardUpdate = ({ item }) => {
- emit(handleBoardUpdateAction(item));
+ emit(entryActions.handleBoardUpdate(item));
};
const handleBoardDelete = ({ item }) => {
- emit(handleBoardDeleteAction(item));
+ emit(entryActions.handleBoardDelete(item));
};
const handleBoardMembershipCreate = ({ item }) => {
- emit(handleBoardMembershipCreateAction(item));
+ emit(entryActions.handleBoardMembershipCreate(item));
};
const handleBoardMembershipDelete = ({ item }) => {
- emit(handleBoardMembershipDeleteAction(item));
+ emit(entryActions.handleBoardMembershipDelete(item));
};
const handleListCreate = ({ item }) => {
- emit(handleListCreateAction(item));
+ emit(entryActions.handleListCreate(item));
};
const handleListUpdate = ({ item }) => {
- emit(handleListUpdateAction(item));
+ emit(entryActions.handleListUpdate(item));
};
const handleListDelete = ({ item }) => {
- emit(handleListDeleteAction(item));
+ emit(entryActions.handleListDelete(item));
};
const handleLabelCreate = ({ item }) => {
- emit(handleLabelCreateAction(item));
+ emit(entryActions.handleLabelCreate(item));
};
const handleLabelUpdate = ({ item }) => {
- emit(handleLabelUpdateAction(item));
+ emit(entryActions.handleLabelUpdate(item));
};
const handleLabelDelete = ({ item }) => {
- emit(handleLabelDeleteAction(item));
+ emit(entryActions.handleLabelDelete(item));
};
const handleCardCreate = api.makeHandleCardCreate(({ item }) => {
- emit(handleCardCreateAction(item));
+ emit(entryActions.handleCardCreate(item));
});
const handleCardUpdate = api.makeHandleCardUpdate(({ item }) => {
- emit(handleCardUpdateAction(item));
+ emit(entryActions.handleCardUpdate(item));
});
const handleCardDelete = api.makeHandleCardDelete(({ item }) => {
- emit(handleCardDeleteAction(item));
+ emit(entryActions.handleCardDelete(item));
});
const handleUserToCardAdd = ({ item }) => {
- emit(handleUserToCardAddAction(item));
+ emit(entryActions.handleUserToCardAdd(item));
};
const handleUserFromCardRemove = ({ item }) => {
- emit(handleUserFromCardRemoveAction(item));
+ emit(entryActions.handleUserFromCardRemove(item));
};
const handleLabelToCardAdd = ({ item }) => {
- emit(handleLabelToCardAddAction(item));
+ emit(entryActions.handleLabelToCardAdd(item));
};
const handleLabelFromCardRemove = ({ item }) => {
- emit(handleLabelFromCardRemoveAction(item));
+ emit(entryActions.handleLabelFromCardRemove(item));
};
const handleTaskCreate = ({ item }) => {
- emit(handleTaskCreateAction(item));
+ emit(entryActions.handleTaskCreate(item));
};
const handleTaskUpdate = ({ item }) => {
- emit(handleTaskUpdateAction(item));
+ emit(entryActions.handleTaskUpdate(item));
};
const handleTaskDelete = ({ item }) => {
- emit(handleTaskDeleteAction(item));
+ emit(entryActions.handleTaskDelete(item));
};
const handleAttachmentCreate = api.makeHandleAttachmentCreate(({ item, requestId }) => {
- emit(handleAttachmentCreateAction(item, requestId));
+ emit(entryActions.handleAttachmentCreate(item, requestId));
});
const handleAttachmentUpdate = api.makeHandleAttachmentUpdate(({ item }) => {
- emit(handleAttachmentUpdateAction(item));
+ emit(entryActions.handleAttachmentUpdate(item));
});
const handleAttachmentDelete = api.makeHandleAttachmentDelete(({ item }) => {
- emit(handleAttachmentDeleteAction(item));
+ emit(entryActions.handleAttachmentDelete(item));
});
- const handleActionCreate = api.makeHandleActionCreate(({ item }) => {
- emit(handleActionCreateAction(item));
+ const handleActivityCreate = api.makeHandleActivityCreate(({ item }) => {
+ emit(entryActions.handleActivityCreate(item));
});
- const handleActionUpdate = api.makeHandleActionUpdate(({ item }) => {
- emit(handleActionUpdateAction(item));
+ const handleActivityUpdate = api.makeHandleActivityUpdate(({ item }) => {
+ emit(entryActions.handleActivityUpdate(item));
});
- const handleActionDelete = api.makeHandleActionDelete(({ item }) => {
- emit(handleActionDeleteAction(item));
+ const handleActivityDelete = api.makeHandleActivityDelete(({ item }) => {
+ emit(entryActions.handleActivityDelete(item));
});
- const handleNotificationCreate = ({ item }) => {
- emit(handleNotificationCreateAction(item));
- };
+ const handleNotificationCreate = api.makeHandleNotificationCreate(({ item }) => {
+ emit(entryActions.handleNotificationCreate(item));
+ });
- const handleNotificationDelete = ({ item }) => {
- emit(handleNotificationDeleteAction(item));
- };
+ const handleNotificationUpdate = api.makeHandleNotificationUpdate(({ item }) => {
+ emit(entryActions.handleNotificationDelete(item));
+ });
socket.on('disconnect', handleDisconnect);
socket.on('reconnect', handleReconnect);
@@ -251,12 +211,12 @@ const createSocketEventsChannel = () =>
socket.on('attachmentUpdate', handleAttachmentUpdate);
socket.on('attachmentDelete', handleAttachmentDelete);
- socket.on('actionCreate', handleActionCreate);
- socket.on('actionUpdate', handleActionUpdate);
- socket.on('actionDelete', handleActionDelete);
+ socket.on('actionCreate', handleActivityCreate);
+ socket.on('actionUpdate', handleActivityUpdate);
+ socket.on('actionDelete', handleActivityDelete);
socket.on('notificationCreate', handleNotificationCreate);
- socket.on('notificationUpdate', handleNotificationDelete);
+ socket.on('notificationUpdate', handleNotificationUpdate);
return () => {
socket.off('disconnect', handleDisconnect);
@@ -306,21 +266,23 @@ const createSocketEventsChannel = () =>
socket.off('attachmentUpdate', handleAttachmentUpdate);
socket.off('attachmentDelete', handleAttachmentDelete);
- socket.off('actionCreate', handleActionCreate);
- socket.off('actionUpdate', handleActionUpdate);
- socket.off('actionDelete', handleActionDelete);
+ socket.off('actionCreate', handleActivityCreate);
+ socket.off('actionUpdate', handleActivityUpdate);
+ socket.off('actionDelete', handleActivityDelete);
socket.off('notificationCreate', handleNotificationCreate);
- socket.off('notificationUpdate', handleNotificationDelete);
+ socket.off('notificationUpdate', handleNotificationUpdate);
};
});
export default function* socketWatchers() {
yield all([
yield takeEvery(EntryActionTypes.SOCKET_DISCONNECT_HANDLE, () =>
- handleSocketDisconnectService(),
+ services.handleSocketDisconnect(),
+ ),
+ yield takeEvery(EntryActionTypes.SOCKET_RECONNECT_HANDLE, () =>
+ services.handleSocketReconnect(),
),
- yield takeEvery(EntryActionTypes.SOCKET_RECONNECT_HANDLE, () => handleSocketReconnectService()),
]);
const socketEventsChannel = yield call(createSocketEventsChannel);
diff --git a/client/src/sagas/core/watchers/task.js b/client/src/sagas/core/watchers/tasks.js
similarity index 58%
rename from client/src/sagas/core/watchers/task.js
rename to client/src/sagas/core/watchers/tasks.js
index dacd0575..ef733f07 100644
--- a/client/src/sagas/core/watchers/task.js
+++ b/client/src/sagas/core/watchers/tasks.js
@@ -1,36 +1,28 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- createTaskInCurrentCardService,
- deleteTaskService,
- handleTaskCreateService,
- handleTaskDeleteService,
- handleTaskUpdateService,
- moveTaskService,
- updateTaskService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* taskWatchers() {
+export default function* tasksWatchers() {
yield all([
takeEvery(EntryActionTypes.TASK_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) =>
- createTaskInCurrentCardService(data),
+ services.createTaskInCurrentCard(data),
),
takeEvery(EntryActionTypes.TASK_CREATE_HANDLE, ({ payload: { task } }) =>
- handleTaskCreateService(task),
+ services.handleTaskCreate(task),
),
takeEvery(EntryActionTypes.TASK_UPDATE, ({ payload: { id, data } }) =>
- updateTaskService(id, data),
+ services.updateTask(id, data),
),
takeEvery(EntryActionTypes.TASK_UPDATE_HANDLE, ({ payload: { task } }) =>
- handleTaskUpdateService(task),
+ services.handleTaskUpdate(task),
),
takeEvery(EntryActionTypes.TASK_MOVE, ({ payload: { id, index } }) =>
- moveTaskService(id, index),
+ services.moveTask(id, index),
),
- takeEvery(EntryActionTypes.TASK_DELETE, ({ payload: { id } }) => deleteTaskService(id)),
+ takeEvery(EntryActionTypes.TASK_DELETE, ({ payload: { id } }) => services.deleteTask(id)),
takeEvery(EntryActionTypes.TASK_DELETE_HANDLE, ({ payload: { task } }) =>
- handleTaskDeleteService(task),
+ services.handleTaskDelete(task),
),
]);
}
diff --git a/client/src/sagas/core/watchers/user.js b/client/src/sagas/core/watchers/users.js
similarity index 53%
rename from client/src/sagas/core/watchers/user.js
rename to client/src/sagas/core/watchers/users.js
index 48589b91..e12024e5 100644
--- a/client/src/sagas/core/watchers/user.js
+++ b/client/src/sagas/core/watchers/users.js
@@ -1,124 +1,93 @@
import { all, takeEvery } from 'redux-saga/effects';
-import {
- addUserToCardService,
- addUserToCurrentCardService,
- addUserToFilterInCurrentBoardService,
- clearCurrentUserEmailUpdateErrorService,
- clearCurrentUserPasswordUpdateErrorService,
- clearCurrentUserUsernameUpdateErrorService,
- clearUserCreateErrorService,
- clearUserEmailUpdateErrorService,
- clearUserPasswordUpdateErrorService,
- clearUserUsernameUpdateErrorService,
- createUserService,
- deleteUserService,
- handleUserCreateService,
- handleUserDeleteService,
- handleUserFromCardRemoveService,
- handleUserToCardAddService,
- handleUserUpdateService,
- removeUserFromCardService,
- removeUserFromCurrentCardService,
- removeUserFromFilterInCurrentBoardService,
- updateUserService,
- updateCurrentUserAvatarService,
- updateCurrentUserEmailService,
- updateCurrentUserLanguageService,
- updateCurrentUserPasswordService,
- updateCurrentUserService,
- updateCurrentUserUsernameService,
- updateUserEmailService,
- updateUserPasswordService,
- updateUserUsernameService,
-} from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
-export default function* userWatchers() {
+export default function* usersWatchers() {
yield all([
- takeEvery(EntryActionTypes.USER_CREATE, ({ payload: { data } }) => createUserService(data)),
+ takeEvery(EntryActionTypes.USER_CREATE, ({ payload: { data } }) => services.createUser(data)),
takeEvery(EntryActionTypes.USER_CREATE_HANDLE, ({ payload: { user } }) =>
- handleUserCreateService(user),
+ services.handleUserCreate(user),
),
- takeEvery(EntryActionTypes.USER_CREATE_ERROR_CLEAR, () => clearUserCreateErrorService()),
+ takeEvery(EntryActionTypes.USER_CREATE_ERROR_CLEAR, () => services.clearUserCreateError()),
takeEvery(EntryActionTypes.USER_UPDATE, ({ payload: { id, data } }) =>
- updateUserService(id, data),
+ services.updateUser(id, data),
),
takeEvery(EntryActionTypes.CURRENT_USER_UPDATE, ({ payload: { data } }) =>
- updateCurrentUserService(data),
+ services.updateCurrentUser(data),
),
takeEvery(EntryActionTypes.USER_UPDATE_HANDLE, ({ payload: { user } }) =>
- handleUserUpdateService(user),
+ services.handleUserUpdate(user),
),
takeEvery(EntryActionTypes.CURRENT_USER_LANGUAGE_UPDATE, ({ payload: { language } }) =>
- updateCurrentUserLanguageService(language),
+ services.updateCurrentUserLanguage(language),
),
takeEvery(EntryActionTypes.USER_EMAIL_UPDATE, ({ payload: { id, data } }) =>
- updateUserEmailService(id, data),
+ services.updateUserEmail(id, data),
),
takeEvery(EntryActionTypes.CURRENT_USER_EMAIL_UPDATE, ({ payload: { data } }) =>
- updateCurrentUserEmailService(data),
+ services.updateCurrentUserEmail(data),
),
takeEvery(EntryActionTypes.USER_EMAIL_UPDATE_ERROR_CLEAR, ({ payload: { id } }) =>
- clearUserEmailUpdateErrorService(id),
+ services.clearUserEmailUpdateError(id),
),
takeEvery(EntryActionTypes.CURRENT_USER_EMAIL_UPDATE_ERROR_CLEAR, () =>
- clearCurrentUserEmailUpdateErrorService(),
+ services.clearCurrentUserEmailUpdateError(),
),
takeEvery(EntryActionTypes.USER_PASSWORD_UPDATE, ({ payload: { id, data } }) =>
- updateUserPasswordService(id, data),
+ services.updateUserPassword(id, data),
),
takeEvery(EntryActionTypes.CURRENT_USER_PASSWORD_UPDATE, ({ payload: { data } }) =>
- updateCurrentUserPasswordService(data),
+ services.updateCurrentUserPassword(data),
),
takeEvery(EntryActionTypes.USER_PASSWORD_UPDATE_ERROR_CLEAR, ({ payload: { id } }) =>
- clearUserPasswordUpdateErrorService(id),
+ services.clearUserPasswordUpdateError(id),
),
takeEvery(EntryActionTypes.CURRENT_USER_PASSWORD_UPDATE_ERROR_CLEAR, () =>
- clearCurrentUserPasswordUpdateErrorService(),
+ services.clearCurrentUserPasswordUpdateError(),
),
takeEvery(EntryActionTypes.USER_USERNAME_UPDATE, ({ payload: { id, data } }) =>
- updateUserUsernameService(id, data),
+ services.updateUserUsername(id, data),
),
takeEvery(EntryActionTypes.CURRENT_USER_USERNAME_UPDATE, ({ payload: { data } }) =>
- updateCurrentUserUsernameService(data),
+ services.updateCurrentUserUsername(data),
),
takeEvery(EntryActionTypes.USER_USERNAME_UPDATE_ERROR_CLEAR, ({ payload: { id } }) =>
- clearUserUsernameUpdateErrorService(id),
+ services.clearUserUsernameUpdateError(id),
),
takeEvery(EntryActionTypes.CURRENT_USER_USERNAME_UPDATE_ERROR_CLEAR, () =>
- clearCurrentUserUsernameUpdateErrorService(),
+ services.clearCurrentUserUsernameUpdateError(),
),
takeEvery(EntryActionTypes.CURRENT_USER_AVATAR_UPDATE, ({ payload: { data } }) =>
- updateCurrentUserAvatarService(data),
+ services.updateCurrentUserAvatar(data),
),
- takeEvery(EntryActionTypes.USER_DELETE, ({ payload: { id } }) => deleteUserService(id)),
+ takeEvery(EntryActionTypes.USER_DELETE, ({ payload: { id } }) => services.deleteUser(id)),
takeEvery(EntryActionTypes.USER_DELETE_HANDLE, ({ payload: { user } }) =>
- handleUserDeleteService(user),
+ services.handleUserDelete(user),
),
takeEvery(EntryActionTypes.USER_TO_CARD_ADD, ({ payload: { id, cardId } }) =>
- addUserToCardService(id, cardId),
+ services.addUserToCard(id, cardId),
),
takeEvery(EntryActionTypes.USER_TO_CURRENT_CARD_ADD, ({ payload: { id } }) =>
- addUserToCurrentCardService(id),
+ services.addUserToCurrentCard(id),
),
takeEvery(EntryActionTypes.USER_TO_CARD_ADD_HANDLE, ({ payload: { cardMembership } }) =>
- handleUserToCardAddService(cardMembership),
+ services.handleUserToCardAdd(cardMembership),
),
takeEvery(EntryActionTypes.USER_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) =>
- removeUserFromCardService(id, cardId),
+ services.removeUserFromCard(id, cardId),
),
takeEvery(EntryActionTypes.USER_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) =>
- removeUserFromCurrentCardService(id),
+ services.removeUserFromCurrentCard(id),
),
takeEvery(EntryActionTypes.USER_FROM_CARD_REMOVE_HANDLE, ({ payload: { cardMembership } }) =>
- handleUserFromCardRemoveService(cardMembership),
+ services.handleUserFromCardRemove(cardMembership),
),
takeEvery(EntryActionTypes.USER_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) =>
- addUserToFilterInCurrentBoardService(id),
+ services.addUserToFilterInCurrentBoard(id),
),
takeEvery(EntryActionTypes.USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) =>
- removeUserFromFilterInCurrentBoardService(id),
+ services.removeUserFromFilterInCurrentBoard(id),
),
]);
}
diff --git a/client/src/sagas/login/index.js b/client/src/sagas/login/index.js
index 5ebd39c1..785de29d 100755
--- a/client/src/sagas/login/index.js
+++ b/client/src/sagas/login/index.js
@@ -1,7 +1,7 @@
import { all, call, cancel, fork, take } from 'redux-saga/effects';
import watchers from './watchers';
-import { goToRootService } from './services';
+import services from './services';
import { setAccessToken } from '../../utils/access-token-storage';
import ActionTypes from '../../constants/ActionTypes';
@@ -15,5 +15,5 @@ export default function* loginSaga() {
yield cancel(watcherTasks);
yield call(setAccessToken, accessToken);
- yield call(goToRootService);
+ yield call(services.goToRoot);
}
diff --git a/client/src/sagas/login/services/index.js b/client/src/sagas/login/services/index.js
index f1356edc..6af91e49 100644
--- a/client/src/sagas/login/services/index.js
+++ b/client/src/sagas/login/services/index.js
@@ -1,2 +1,7 @@
-export * from './router';
-export * from './login';
+import router from './router';
+import login from './login';
+
+export default {
+ ...router,
+ ...login,
+};
diff --git a/client/src/sagas/login/services/login.js b/client/src/sagas/login/services/login.js
index 38c41623..f4a6d39a 100644
--- a/client/src/sagas/login/services/login.js
+++ b/client/src/sagas/login/services/login.js
@@ -1,22 +1,27 @@
import { call, put } from 'redux-saga/effects';
-import { authenticate, clearAuthenticateError } from '../../../actions';
+import actions from '../../../actions';
import api from '../../../api';
-export function* authenticateService(data) {
- yield put(authenticate(data));
+export function* authenticate(data) {
+ yield put(actions.authenticate(data));
let accessToken;
try {
({ item: accessToken } = yield call(api.createAccessToken, data));
} catch (error) {
- yield put(authenticate.failure(error));
+ yield put(actions.authenticate.failure(error));
return;
}
- yield put(authenticate.success(accessToken));
+ yield put(actions.authenticate.success(accessToken));
}
-export function* clearAuthenticateErrorService() {
- yield put(clearAuthenticateError());
+export function* clearAuthenticateError() {
+ yield put(actions.clearAuthenticateError());
}
+
+export default {
+ authenticate,
+ clearAuthenticateError,
+};
diff --git a/client/src/sagas/login/services/router.js b/client/src/sagas/login/services/router.js
index 3ca6ed2e..1aa806e8 100644
--- a/client/src/sagas/login/services/router.js
+++ b/client/src/sagas/login/services/router.js
@@ -1,19 +1,19 @@
import { call, put, select } from 'redux-saga/effects';
import { push } from 'connected-react-router';
-import { pathsMatchSelector } from '../../../selectors';
+import selectors from '../../../selectors';
import Paths from '../../../constants/Paths';
-export function* goToLoginService() {
+export function* goToLogin() {
yield put(push(Paths.LOGIN));
}
-export function* goToRootService() {
+export function* goToRoot() {
yield put(push(Paths.ROOT));
}
-export function* handleLocationChangeService() {
- const pathsMatch = yield select(pathsMatchSelector);
+export function* handleLocationChange() {
+ const pathsMatch = yield select(selectors.selectPathsMatch);
if (!pathsMatch) {
return;
@@ -24,9 +24,15 @@ export function* handleLocationChangeService() {
case Paths.PROJECTS:
case Paths.BOARDS:
case Paths.CARDS:
- yield call(goToLoginService);
+ yield call(goToLogin);
break;
default:
}
}
+
+export default {
+ goToLogin,
+ goToRoot,
+ handleLocationChange,
+};
diff --git a/client/src/sagas/login/watchers/login.js b/client/src/sagas/login/watchers/login.js
index aed70190..9741b981 100644
--- a/client/src/sagas/login/watchers/login.js
+++ b/client/src/sagas/login/watchers/login.js
@@ -1,11 +1,13 @@
import { all, takeEvery } from 'redux-saga/effects';
-import { authenticateService, clearAuthenticateErrorService } from '../services';
+import services from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* loginWatchers() {
yield all([
- takeEvery(EntryActionTypes.AUTHENTICATE, ({ payload: { data } }) => authenticateService(data)),
- takeEvery(EntryActionTypes.AUTHENTICATE_ERROR_CLEAR, () => clearAuthenticateErrorService()),
+ takeEvery(EntryActionTypes.AUTHENTICATE, ({ payload: { data } }) =>
+ services.authenticate(data),
+ ),
+ takeEvery(EntryActionTypes.AUTHENTICATE_ERROR_CLEAR, () => services.clearAuthenticateError()),
]);
}
diff --git a/client/src/sagas/login/watchers/router.js b/client/src/sagas/login/watchers/router.js
index c25472ab..da82c471 100755
--- a/client/src/sagas/login/watchers/router.js
+++ b/client/src/sagas/login/watchers/router.js
@@ -1,8 +1,8 @@
import { takeEvery } from 'redux-saga/effects';
import { LOCATION_CHANGE } from 'connected-react-router';
-import { handleLocationChangeService } from '../services';
+import services from '../services';
export default function* routerWatchers() {
- yield takeEvery(LOCATION_CHANGE, () => handleLocationChangeService());
+ yield takeEvery(LOCATION_CHANGE, () => services.handleLocationChange());
}
diff --git a/client/src/selectors/attachment.js b/client/src/selectors/attachments.js
similarity index 55%
rename from client/src/selectors/attachment.js
rename to client/src/selectors/attachments.js
index 8ec5ec62..80fb55b3 100644
--- a/client/src/selectors/attachment.js
+++ b/client/src/selectors/attachments.js
@@ -2,9 +2,12 @@ import { createSelector } from 'redux-orm';
import orm from '../orm';
-// eslint-disable-next-line import/prefer-default-export
-export const isAttachmentWithIdExistsSelector = createSelector(
+export const selectIsAttachmentWithIdExists = createSelector(
orm,
(_, id) => id,
({ Attachment }, id) => Attachment.idExists(id),
);
+
+export default {
+ selectIsAttachmentWithIdExists,
+};
diff --git a/client/src/selectors/auth.js b/client/src/selectors/auth.js
index 21deed96..5f86ff36 100644
--- a/client/src/selectors/auth.js
+++ b/client/src/selectors/auth.js
@@ -1,2 +1,5 @@
-// eslint-disable-next-line import/prefer-default-export
-export const accessTokenSelector = ({ auth: { accessToken } }) => accessToken;
+export const selectAccessToken = ({ auth: { accessToken } }) => accessToken;
+
+export default {
+ selectAccessToken,
+};
diff --git a/client/src/selectors/board-membership.js b/client/src/selectors/board-memberships.js
similarity index 62%
rename from client/src/selectors/board-membership.js
rename to client/src/selectors/board-memberships.js
index 879fa19c..4051d8ef 100644
--- a/client/src/selectors/board-membership.js
+++ b/client/src/selectors/board-memberships.js
@@ -2,7 +2,7 @@ import { createSelector } from 'redux-orm';
import orm from '../orm';
-export const makeBoardMembershipByIdSelector = () =>
+export const makeSelectBoardMembershipById = () =>
createSelector(
orm,
(_, id) => id,
@@ -17,4 +17,9 @@ export const makeBoardMembershipByIdSelector = () =>
},
);
-export const boardMembershipByIdSelector = makeBoardMembershipByIdSelector();
+export const selectBoardMembershipById = makeSelectBoardMembershipById();
+
+export default {
+ makeSelectBoardMembershipById,
+ selectBoardMembershipById,
+};
diff --git a/client/src/selectors/board.js b/client/src/selectors/boards.js
similarity index 64%
rename from client/src/selectors/board.js
rename to client/src/selectors/boards.js
index 740a19d0..cb0cec52 100644
--- a/client/src/selectors/board.js
+++ b/client/src/selectors/boards.js
@@ -1,11 +1,11 @@
import { createSelector } from 'redux-orm';
import orm from '../orm';
-import { pathSelector } from './router';
-import { currentUserIdSelector } from './user';
+import { selectPath } from './router';
+import { selectCurrentUserId } from './users';
import { isLocalId } from '../utils/local-id';
-export const makeBoardByIdSelector = () =>
+export const makeSelectBoardById = () =>
createSelector(
orm,
(_, id) => id,
@@ -20,11 +20,11 @@ export const makeBoardByIdSelector = () =>
},
);
-export const boardByIdSelector = makeBoardByIdSelector();
+export const selectBoardById = makeSelectBoardById();
-export const currentBoardSelector = createSelector(
+export const selectCurrentBoard = createSelector(
orm,
- (state) => pathSelector(state).boardId,
+ (state) => selectPath(state).boardId,
({ Board }, id) => {
if (!id) {
return id;
@@ -40,10 +40,10 @@ export const currentBoardSelector = createSelector(
},
);
-export const membershipsForCurrentBoardSelector = createSelector(
+export const selectMembershipsForCurrentBoard = createSelector(
orm,
- (state) => pathSelector(state).boardId,
- (state) => currentUserIdSelector(state),
+ (state) => selectPath(state).boardId,
+ (state) => selectCurrentUserId(state),
({ Board }, id, currentUserId) => {
if (!id) {
return id;
@@ -69,9 +69,9 @@ export const membershipsForCurrentBoardSelector = createSelector(
},
);
-export const labelsForCurrentBoardSelector = createSelector(
+export const selectLabelsForCurrentBoard = createSelector(
orm,
- (state) => pathSelector(state).boardId,
+ (state) => selectPath(state).boardId,
({ Board }, id) => {
if (!id) {
return id;
@@ -90,9 +90,9 @@ export const labelsForCurrentBoardSelector = createSelector(
},
);
-export const listIdsForCurrentBoardSelector = createSelector(
+export const selectListIdsForCurrentBoard = createSelector(
orm,
- (state) => pathSelector(state).boardId,
+ (state) => selectPath(state).boardId,
({ Board }, id) => {
if (!id) {
return id;
@@ -111,9 +111,9 @@ export const listIdsForCurrentBoardSelector = createSelector(
},
);
-export const filterUsersForCurrentBoardSelector = createSelector(
+export const selectFilterUsersForCurrentBoard = createSelector(
orm,
- (state) => pathSelector(state).boardId,
+ (state) => selectPath(state).boardId,
({ Board }, id) => {
if (!id) {
return id;
@@ -129,9 +129,9 @@ export const filterUsersForCurrentBoardSelector = createSelector(
},
);
-export const filterLabelsForCurrentBoardSelector = createSelector(
+export const selectFilterLabelsForCurrentBoard = createSelector(
orm,
- (state) => pathSelector(state).boardId,
+ (state) => selectPath(state).boardId,
({ Board }, id) => {
if (!id) {
return id;
@@ -147,10 +147,10 @@ export const filterLabelsForCurrentBoardSelector = createSelector(
},
);
-export const isCurrentUserMemberForCurrentBoardSelector = createSelector(
+export const selectIsCurrentUserMemberForCurrentBoard = createSelector(
orm,
- (state) => pathSelector(state).boardId,
- (state) => currentUserIdSelector(state),
+ (state) => selectPath(state).boardId,
+ (state) => selectCurrentUserId(state),
({ Board }, id, currentUserId) => {
if (!id) {
return false;
@@ -165,3 +165,15 @@ export const isCurrentUserMemberForCurrentBoardSelector = createSelector(
return boardModel.hasMemberUser(currentUserId);
},
);
+
+export default {
+ makeSelectBoardById,
+ selectBoardById,
+ selectCurrentBoard,
+ selectMembershipsForCurrentBoard,
+ selectLabelsForCurrentBoard,
+ selectListIdsForCurrentBoard,
+ selectFilterUsersForCurrentBoard,
+ selectFilterLabelsForCurrentBoard,
+ selectIsCurrentUserMemberForCurrentBoard,
+};
diff --git a/client/src/selectors/card.js b/client/src/selectors/cards.js
similarity index 58%
rename from client/src/selectors/card.js
rename to client/src/selectors/cards.js
index 6252cddb..8f100d57 100644
--- a/client/src/selectors/card.js
+++ b/client/src/selectors/cards.js
@@ -1,11 +1,11 @@
import { createSelector } from 'redux-orm';
import orm from '../orm';
-import { pathSelector } from './router';
-import { currentUserIdSelector } from './user';
+import { selectPath } from './router';
+import { selectCurrentUserId } from './users';
import { isLocalId } from '../utils/local-id';
-export const makeCardByIdSelector = () =>
+export const makeSelectCardById = () =>
createSelector(
orm,
(_, id) => id,
@@ -24,9 +24,9 @@ export const makeCardByIdSelector = () =>
},
);
-export const cardByIdSelector = makeCardByIdSelector();
+export const selectCardById = makeSelectCardById();
-export const makeUsersByCardIdSelector = () =>
+export const makeSelectUsersByCardId = () =>
createSelector(
orm,
(_, id) => id,
@@ -41,9 +41,9 @@ export const makeUsersByCardIdSelector = () =>
},
);
-export const usersByCardIdSelector = makeUsersByCardIdSelector();
+export const selectUsersByCardId = makeSelectUsersByCardId();
-export const makeLabelsByCardIdSelector = () =>
+export const makeSelectLabelsByCardId = () =>
createSelector(
orm,
(_, id) => id,
@@ -58,9 +58,9 @@ export const makeLabelsByCardIdSelector = () =>
},
);
-export const labelsByCardIdSelector = makeLabelsByCardIdSelector();
+export const selectLabelsByCardId = makeSelectLabelsByCardId();
-export const makeTasksByCardIdSelector = () =>
+export const makeSelectTasksByCardId = () =>
createSelector(
orm,
(_, id) => id,
@@ -75,9 +75,9 @@ export const makeTasksByCardIdSelector = () =>
},
);
-export const tasksByCardIdSelector = makeTasksByCardIdSelector();
+export const selectTasksByCardId = makeSelectTasksByCardId();
-export const makeLastActionIdByCardIdSelector = () =>
+export const makeSelectLastActivityIdByCardId = () =>
createSelector(
orm,
(_, id) => id,
@@ -88,15 +88,15 @@ export const makeLastActionIdByCardIdSelector = () =>
return cardModel;
}
- const lastActionModel = cardModel.getFilteredOrderedInCardActionsQuerySet().last();
+ const lastActivityModel = cardModel.getFilteredOrderedInCardActivitiesQuerySet().last();
- return lastActionModel && lastActionModel.id;
+ return lastActivityModel && lastActivityModel.id;
},
);
-export const lastActionIdByCardIdSelector = makeLastActionIdByCardIdSelector();
+export const selectLastActivityIdByCardId = makeSelectLastActivityIdByCardId();
-export const makeNotificationsByCardIdSelector = () =>
+export const makeSelectNotificationsByCardId = () =>
createSelector(
orm,
(_, id) => id,
@@ -111,9 +111,9 @@ export const makeNotificationsByCardIdSelector = () =>
},
);
-export const notificationsByCardIdSelector = makeNotificationsByCardIdSelector();
+export const selectNotificationsByCardId = makeSelectNotificationsByCardId();
-export const makeNotificationsTotalByCardIdSelector = () =>
+export const makeSelectNotificationsTotalByCardId = () =>
createSelector(
orm,
(_, id) => id,
@@ -128,11 +128,11 @@ export const makeNotificationsTotalByCardIdSelector = () =>
},
);
-export const notificationsTotalByCardIdSelector = makeNotificationsTotalByCardIdSelector();
+export const selectNotificationsTotalByCardId = makeSelectNotificationsTotalByCardId();
-export const currentCardSelector = createSelector(
+export const selectCurrentCard = createSelector(
orm,
- (state) => pathSelector(state).cardId,
+ (state) => selectPath(state).cardId,
({ Card }, id) => {
if (!id) {
return id;
@@ -148,9 +148,9 @@ export const currentCardSelector = createSelector(
},
);
-export const usersForCurrentCardSelector = createSelector(
+export const selectUsersForCurrentCard = createSelector(
orm,
- (state) => pathSelector(state).cardId,
+ (state) => selectPath(state).cardId,
({ Card }, id) => {
if (!id) {
return id;
@@ -166,9 +166,9 @@ export const usersForCurrentCardSelector = createSelector(
},
);
-export const labelsForCurrentCardSelector = createSelector(
+export const selectLabelsForCurrentCard = createSelector(
orm,
- (state) => pathSelector(state).cardId,
+ (state) => selectPath(state).cardId,
({ Card }, id) => {
if (!id) {
return id;
@@ -184,9 +184,9 @@ export const labelsForCurrentCardSelector = createSelector(
},
);
-export const tasksForCurrentCardSelector = createSelector(
+export const selectTasksForCurrentCard = createSelector(
orm,
- (state) => pathSelector(state).cardId,
+ (state) => selectPath(state).cardId,
({ Card }, id) => {
if (!id) {
return id;
@@ -208,9 +208,9 @@ export const tasksForCurrentCardSelector = createSelector(
},
);
-export const attachmentsForCurrentCardSelector = createSelector(
+export const selectAttachmentsForCurrentCard = createSelector(
orm,
- (state) => pathSelector(state).cardId,
+ (state) => selectPath(state).cardId,
({ Card }, id) => {
if (!id) {
return id;
@@ -233,10 +233,10 @@ export const attachmentsForCurrentCardSelector = createSelector(
},
);
-export const actionsForCurrentCardSelector = createSelector(
+export const selectActivitiesForCurrentCard = createSelector(
orm,
- (state) => pathSelector(state).cardId,
- (state) => currentUserIdSelector(state),
+ (state) => selectPath(state).cardId,
+ (state) => selectCurrentUserId(state),
({ Card }, id, currentUserId) => {
if (!id) {
return id;
@@ -249,22 +249,22 @@ export const actionsForCurrentCardSelector = createSelector(
}
return cardModel
- .getFilteredOrderedInCardActionsQuerySet()
+ .getFilteredOrderedInCardActivitiesQuerySet()
.toModelArray()
- .map((actionModel) => ({
- ...actionModel.ref,
- isPersisted: !isLocalId(actionModel.id),
+ .map((activityModel) => ({
+ ...activityModel.ref,
+ isPersisted: !isLocalId(activityModel.id),
user: {
- ...actionModel.user.ref,
- isCurrent: actionModel.user.id === currentUserId,
+ ...activityModel.user.ref,
+ isCurrent: activityModel.user.id === currentUserId,
},
}));
},
);
-export const notificationIdsForCurrentCardSelector = createSelector(
+export const selectNotificationIdsForCurrentCard = createSelector(
orm,
- (state) => pathSelector(state).cardId,
+ (state) => selectPath(state).cardId,
({ Card }, id) => {
if (!id) {
return id;
@@ -282,3 +282,27 @@ export const notificationIdsForCurrentCardSelector = createSelector(
.map((notification) => notification.id);
},
);
+
+export default {
+ makeSelectCardById,
+ selectCardById,
+ makeSelectUsersByCardId,
+ selectUsersByCardId,
+ makeSelectLabelsByCardId,
+ selectLabelsByCardId,
+ makeSelectTasksByCardId,
+ selectTasksByCardId,
+ makeSelectLastActivityIdByCardId,
+ selectLastActivityIdByCardId,
+ makeSelectNotificationsByCardId,
+ selectNotificationsByCardId,
+ makeSelectNotificationsTotalByCardId,
+ selectNotificationsTotalByCardId,
+ selectCurrentCard,
+ selectUsersForCurrentCard,
+ selectLabelsForCurrentCard,
+ selectTasksForCurrentCard,
+ selectAttachmentsForCurrentCard,
+ selectActivitiesForCurrentCard,
+ selectNotificationIdsForCurrentCard,
+};
diff --git a/client/src/selectors/core.js b/client/src/selectors/core.js
index a703f00f..0bd9edfe 100755
--- a/client/src/selectors/core.js
+++ b/client/src/selectors/core.js
@@ -4,7 +4,7 @@ import isUndefined from 'lodash/isUndefined';
import orm from '../orm';
import Config from '../constants/Config';
-export const isCoreInitializingSelector = ({ core: { isInitializing } }) => isInitializing;
+export const selectIsCoreInitializing = ({ core: { isInitializing } }) => isInitializing;
const nextPosition = (items, index, excludedId) => {
const filteredItems = isUndefined(excludedId)
@@ -29,7 +29,7 @@ const nextPosition = (items, index, excludedId) => {
return prevPosition + (nextItem.position - prevPosition) / 2;
};
-export const nextBoardPositionSelector = createSelector(
+export const selectNextBoardPosition = createSelector(
orm,
(_, projectId) => projectId,
(_, __, index) => index,
@@ -45,7 +45,7 @@ export const nextBoardPositionSelector = createSelector(
},
);
-export const nextListPositionSelector = createSelector(
+export const selectNextListPosition = createSelector(
orm,
(_, boardId) => boardId,
(_, __, index) => index,
@@ -61,7 +61,7 @@ export const nextListPositionSelector = createSelector(
},
);
-export const nextCardPositionSelector = createSelector(
+export const selectNextCardPosition = createSelector(
orm,
(_, listId) => listId,
(_, __, index) => index,
@@ -77,7 +77,7 @@ export const nextCardPositionSelector = createSelector(
},
);
-export const nextTaskPositionSelector = createSelector(
+export const selectNextTaskPosition = createSelector(
orm,
(_, cardId) => cardId,
(_, __, index) => index,
@@ -92,3 +92,11 @@ export const nextTaskPositionSelector = createSelector(
return nextPosition(cardModel.getOrderedTasksQuerySet().toRefArray(), index, excludedId);
},
);
+
+export default {
+ selectIsCoreInitializing,
+ selectNextBoardPosition,
+ selectNextListPosition,
+ selectNextCardPosition,
+ selectNextTaskPosition,
+};
diff --git a/client/src/selectors/index.js b/client/src/selectors/index.js
index 7a77a3bb..c3da383f 100755
--- a/client/src/selectors/index.js
+++ b/client/src/selectors/index.js
@@ -1,14 +1,29 @@
-export * from './router';
-export * from './auth';
-export * from './core';
-export * from './modal';
-export * from './user';
-export * from './users';
-export * from './project';
-export * from './project-manager';
-export * from './board';
-export * from './board-membership';
-export * from './list';
-export * from './card';
-export * from './task';
-export * from './attachment';
+import router from './router';
+import auth from './auth';
+import core from './core';
+import modals from './modals';
+import users from './users';
+import projects from './projects';
+import projectManagers from './project-managers';
+import boards from './boards';
+import boardMemberships from './board-memberships';
+import lists from './lists';
+import cards from './cards';
+import tasks from './tasks';
+import attachments from './attachments';
+
+export default {
+ ...router,
+ ...auth,
+ ...core,
+ ...modals,
+ ...users,
+ ...projects,
+ ...projectManagers,
+ ...boards,
+ ...boardMemberships,
+ ...lists,
+ ...cards,
+ ...tasks,
+ ...attachments,
+};
diff --git a/client/src/selectors/list.js b/client/src/selectors/lists.js
similarity index 67%
rename from client/src/selectors/list.js
rename to client/src/selectors/lists.js
index dad75eba..1eddbd9f 100644
--- a/client/src/selectors/list.js
+++ b/client/src/selectors/lists.js
@@ -3,7 +3,7 @@ import { createSelector } from 'redux-orm';
import orm from '../orm';
import { isLocalId } from '../utils/local-id';
-export const makeListByIdSelector = () =>
+export const makeSelectListById = () =>
createSelector(
orm,
(_, id) => id,
@@ -21,9 +21,9 @@ export const makeListByIdSelector = () =>
},
);
-export const listByIdSelector = makeListByIdSelector();
+export const selectListById = makeSelectListById();
-export const makeCardIdsByListIdSelector = () =>
+export const makeSelectCardIdsByListId = () =>
createSelector(
orm,
(_, id) => id,
@@ -38,4 +38,11 @@ export const makeCardIdsByListIdSelector = () =>
},
);
-export const cardIdsByListIdSelector = makeCardIdsByListIdSelector();
+export const selectCardIdsByListId = makeSelectCardIdsByListId();
+
+export default {
+ makeSelectListById,
+ selectListById,
+ makeSelectCardIdsByListId,
+ selectCardIdsByListId,
+};
diff --git a/client/src/selectors/modal.js b/client/src/selectors/modal.js
deleted file mode 100644
index d8c2d8e2..00000000
--- a/client/src/selectors/modal.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// eslint-disable-next-line import/prefer-default-export
-export const currentModalSelector = ({ core: { currentModal } }) => currentModal;
diff --git a/client/src/selectors/modals.js b/client/src/selectors/modals.js
new file mode 100644
index 00000000..8085687d
--- /dev/null
+++ b/client/src/selectors/modals.js
@@ -0,0 +1,5 @@
+export const selectCurrentModal = ({ core: { currentModal } }) => currentModal;
+
+export default {
+ selectCurrentModal,
+};
diff --git a/client/src/selectors/project-manager.js b/client/src/selectors/project-managers.js
similarity index 62%
rename from client/src/selectors/project-manager.js
rename to client/src/selectors/project-managers.js
index eb0f7207..99cb05bb 100644
--- a/client/src/selectors/project-manager.js
+++ b/client/src/selectors/project-managers.js
@@ -2,7 +2,7 @@ import { createSelector } from 'redux-orm';
import orm from '../orm';
-export const makeProjectManagerByIdSelector = () =>
+export const makeSelectProjectManagerById = () =>
createSelector(
orm,
(_, id) => id,
@@ -17,4 +17,9 @@ export const makeProjectManagerByIdSelector = () =>
},
);
-export const projectManagerByIdSelector = makeProjectManagerByIdSelector();
+export const selectProjectManagerById = makeSelectProjectManagerById();
+
+export default {
+ makeSelectProjectManagerById,
+ selectProjectManagerById,
+};
diff --git a/client/src/selectors/project.js b/client/src/selectors/projects.js
similarity index 65%
rename from client/src/selectors/project.js
rename to client/src/selectors/projects.js
index 9727c068..ddfe60e1 100644
--- a/client/src/selectors/project.js
+++ b/client/src/selectors/projects.js
@@ -1,13 +1,13 @@
import { createSelector } from 'redux-orm';
import orm from '../orm';
-import { pathSelector } from './router';
-import { currentUserIdSelector } from './user';
+import { selectPath } from './router';
+import { selectCurrentUserId } from './users';
import { isLocalId } from '../utils/local-id';
-export const currentProjectSelector = createSelector(
+export const selectCurrentProject = createSelector(
orm,
- (state) => pathSelector(state).projectId,
+ (state) => selectPath(state).projectId,
({ Project }, id) => {
if (!id) {
return id;
@@ -23,10 +23,10 @@ export const currentProjectSelector = createSelector(
},
);
-export const managersForCurrentProjectSelector = createSelector(
+export const selectManagersForCurrentProject = createSelector(
orm,
- (state) => pathSelector(state).projectId,
- (state) => currentUserIdSelector(state),
+ (state) => selectPath(state).projectId,
+ (state) => selectCurrentUserId(state),
({ Project }, id, currentUserId) => {
if (!id) {
return id;
@@ -52,10 +52,10 @@ export const managersForCurrentProjectSelector = createSelector(
},
);
-export const boardsForCurrentProjectSelector = createSelector(
+export const selectBoardsForCurrentProject = createSelector(
orm,
- (state) => pathSelector(state).projectId,
- (state) => currentUserIdSelector(state),
+ (state) => selectPath(state).projectId,
+ (state) => selectCurrentUserId(state),
({ Project }, id, currentUserId) => {
if (!id) {
return id;
@@ -74,10 +74,10 @@ export const boardsForCurrentProjectSelector = createSelector(
},
);
-export const isCurrentUserManagerForCurrentProjectSelector = createSelector(
+export const selectIsCurrentUserManagerForCurrentProject = createSelector(
orm,
- (state) => pathSelector(state).projectId,
- (state) => currentUserIdSelector(state),
+ (state) => selectPath(state).projectId,
+ (state) => selectCurrentUserId(state),
({ Project }, id, currentUserId) => {
if (!id) {
return false;
@@ -92,3 +92,10 @@ export const isCurrentUserManagerForCurrentProjectSelector = createSelector(
return projectModel.hasManagerUser(currentUserId);
},
);
+
+export default {
+ selectCurrentProject,
+ selectManagersForCurrentProject,
+ selectBoardsForCurrentProject,
+ selectIsCurrentUserManagerForCurrentProject,
+};
diff --git a/client/src/selectors/router.js b/client/src/selectors/router.js
index 5e79682b..fba03503 100755
--- a/client/src/selectors/router.js
+++ b/client/src/selectors/router.js
@@ -2,24 +2,24 @@ import { createSelector as createReselectSelector } from 'reselect';
import { createSelector as createReduxOrmSelector } from 'redux-orm';
import orm from '../orm';
-import { currentUserIdSelector } from './user';
+import { selectCurrentUserId } from './users';
import matchPaths from '../utils/match-paths';
import Paths from '../constants/Paths';
-export const pathnameSelector = ({
+export const selectPathname = ({
router: {
location: { pathname },
},
}) => pathname;
-export const pathsMatchSelector = createReselectSelector(pathnameSelector, (pathname) =>
+export const selectPathsMatch = createReselectSelector(selectPathname, (pathname) =>
matchPaths(pathname, Object.values(Paths)),
);
-export const pathSelector = createReduxOrmSelector(
+export const selectPath = createReduxOrmSelector(
orm,
- pathsMatchSelector,
- (state) => currentUserIdSelector(state),
+ selectPathsMatch,
+ (state) => selectCurrentUserId(state),
({ Project, Board, Card }, pathsMatch, currentUserId) => {
if (pathsMatch) {
switch (pathsMatch.path) {
@@ -105,3 +105,9 @@ export const pathSelector = createReduxOrmSelector(
return {};
},
);
+
+export default {
+ selectPathname,
+ selectPathsMatch,
+ selectPath,
+};
diff --git a/client/src/selectors/task.js b/client/src/selectors/tasks.js
similarity index 64%
rename from client/src/selectors/task.js
rename to client/src/selectors/tasks.js
index 5ffdd49e..dba6a225 100644
--- a/client/src/selectors/task.js
+++ b/client/src/selectors/tasks.js
@@ -2,7 +2,7 @@ import { createSelector } from 'redux-orm';
import orm from '../orm';
-export const makeTaskByIdSelector = () =>
+export const makeSelectTaskById = () =>
createSelector(
orm,
(_, id) => id,
@@ -17,4 +17,9 @@ export const makeTaskByIdSelector = () =>
},
);
-export const taskByIdSelector = makeTaskByIdSelector();
+export const selectTaskById = makeSelectTaskById();
+
+export default {
+ makeSelectTaskById,
+ selectTaskById,
+};
diff --git a/client/src/selectors/user.js b/client/src/selectors/user.js
deleted file mode 100644
index b0706767..00000000
--- a/client/src/selectors/user.js
+++ /dev/null
@@ -1,108 +0,0 @@
-import { createSelector } from 'redux-orm';
-
-import orm from '../orm';
-
-export const currentUserIdSelector = ({ auth: { userId } }) => userId;
-
-export const currentUserSelector = createSelector(
- orm,
- (state) => currentUserIdSelector(state),
- ({ User }, id) => {
- if (!id) {
- return id;
- }
-
- const userModel = User.withId(id);
-
- if (!userModel) {
- return userModel;
- }
-
- return userModel.ref;
- },
-);
-
-export const projectsForCurrentUserSelector = createSelector(
- orm,
- (state) => currentUserIdSelector(state),
- ({ User }, id) => {
- if (!id) {
- return id;
- }
-
- const userModel = User.withId(id);
-
- if (!userModel) {
- return userModel;
- }
-
- return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => {
- const boardsModels = projectModel.getOrderedAvailableBoardsModelArray(userModel.id);
-
- let notificationsTotal = 0;
- boardsModels.forEach((boardModel) => {
- boardModel.cards.toModelArray().forEach((cardModel) => {
- notificationsTotal += cardModel.getUnreadNotificationsQuerySet().count();
- });
- });
-
- return {
- ...projectModel.ref,
- notificationsTotal,
- firstBoardId: boardsModels[0] && boardsModels[0].id,
- };
- });
- },
-);
-
-export const projectsToListsForCurrentUserSelector = createSelector(
- orm,
- (state) => currentUserIdSelector(state),
- ({ User }, id) => {
- if (!id) {
- return id;
- }
-
- const userModel = User.withId(id);
-
- if (!userModel) {
- return userModel;
- }
-
- return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => ({
- ...projectModel.ref,
- boards: projectModel.getOrderedMemberBoardsModelArray(id).map((boardModel) => ({
- ...boardModel.ref,
- lists: boardModel.getOrderedListsQuerySet().toRefArray(),
- })),
- }));
- },
-);
-
-export const notificationsForCurrentUserSelector = createSelector(
- orm,
- (state) => currentUserIdSelector(state),
- ({ User }, id) => {
- if (!id) {
- return id;
- }
-
- const userModel = User.withId(id);
-
- if (!userModel) {
- return userModel;
- }
-
- return userModel
- .getOrderedUnreadNotificationsQuerySet()
- .toModelArray()
- .map((notificationModel) => ({
- ...notificationModel.ref,
- action: notificationModel.action && {
- ...notificationModel.action.ref,
- user: notificationModel.action.user.ref,
- },
- card: notificationModel.card && notificationModel.card.ref,
- }));
- },
-);
diff --git a/client/src/selectors/users.js b/client/src/selectors/users.js
index 66f0ef9b..c3b3bd4b 100644
--- a/client/src/selectors/users.js
+++ b/client/src/selectors/users.js
@@ -1,15 +1,16 @@
import { createSelector } from 'redux-orm';
import orm from '../orm';
-import { currentUserIdSelector } from './user';
-export const usersSelector = createSelector(orm, ({ User }) =>
+export const selectCurrentUserId = ({ auth: { userId } }) => userId;
+
+export const selectUsers = createSelector(orm, ({ User }) =>
User.getOrderedUndeletedQuerySet().toRefArray(),
);
-export const usersExceptCurrentSelector = createSelector(
+export const selectUsersExceptCurrent = createSelector(
orm,
- (state) => currentUserIdSelector(state),
+ (state) => selectCurrentUserId(state),
({ User }, id) =>
User.getOrderedUndeletedQuerySet()
.exclude({
@@ -17,3 +18,116 @@ export const usersExceptCurrentSelector = createSelector(
})
.toRefArray(),
);
+
+export const selectCurrentUser = createSelector(
+ orm,
+ (state) => selectCurrentUserId(state),
+ ({ User }, id) => {
+ if (!id) {
+ return id;
+ }
+
+ const userModel = User.withId(id);
+
+ if (!userModel) {
+ return userModel;
+ }
+
+ return userModel.ref;
+ },
+);
+
+export const selectProjectsForCurrentUser = createSelector(
+ orm,
+ (state) => selectCurrentUserId(state),
+ ({ User }, id) => {
+ if (!id) {
+ return id;
+ }
+
+ const userModel = User.withId(id);
+
+ if (!userModel) {
+ return userModel;
+ }
+
+ return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => {
+ const boardsModels = projectModel.getOrderedAvailableBoardsModelArray(userModel.id);
+
+ let notificationsTotal = 0;
+ boardsModels.forEach((boardModel) => {
+ boardModel.cards.toModelArray().forEach((cardModel) => {
+ notificationsTotal += cardModel.getUnreadNotificationsQuerySet().count();
+ });
+ });
+
+ return {
+ ...projectModel.ref,
+ notificationsTotal,
+ firstBoardId: boardsModels[0] && boardsModels[0].id,
+ };
+ });
+ },
+);
+
+export const selectProjectsToListsForCurrentUser = createSelector(
+ orm,
+ (state) => selectCurrentUserId(state),
+ ({ User }, id) => {
+ if (!id) {
+ return id;
+ }
+
+ const userModel = User.withId(id);
+
+ if (!userModel) {
+ return userModel;
+ }
+
+ return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => ({
+ ...projectModel.ref,
+ boards: projectModel.getOrderedMemberBoardsModelArray(id).map((boardModel) => ({
+ ...boardModel.ref,
+ lists: boardModel.getOrderedListsQuerySet().toRefArray(),
+ })),
+ }));
+ },
+);
+
+export const selectNotificationsForCurrentUser = createSelector(
+ orm,
+ (state) => selectCurrentUserId(state),
+ ({ User }, id) => {
+ if (!id) {
+ return id;
+ }
+
+ const userModel = User.withId(id);
+
+ if (!userModel) {
+ return userModel;
+ }
+
+ return userModel
+ .getOrderedUnreadNotificationsQuerySet()
+ .toModelArray()
+ .map((notificationModel) => ({
+ ...notificationModel.ref,
+ activity: notificationModel.activity && {
+ ...notificationModel.activity.ref,
+ user: notificationModel.activity.user.ref,
+ },
+ card: notificationModel.card && notificationModel.card.ref,
+ }));
+ },
+);
+
+export default {
+ selectCurrentUserId,
+ selectUsers,
+ selectUsersExceptCurrent,
+ selectCurrentUser,
+ selectProjectsForCurrentUser,
+ selectProjectsToListsForCurrentUser,
+ selectNotificationsForCurrentUser,
+};
diff --git a/client/src/store.js b/client/src/store.js
index 8c56df6a..4839a3cf 100755
--- a/client/src/store.js
+++ b/client/src/store.js
@@ -1,4 +1,4 @@
-import { applyMiddleware, createStore, compose as reduxCompose } from 'redux';
+import { applyMiddleware, legacy_createStore as createStore, compose as reduxCompose } from 'redux';
import createSagaMiddleware from 'redux-saga';
import { routerMiddleware } from 'connected-react-router';
diff --git a/client/src/utils/access-token-storage.js b/client/src/utils/access-token-storage.js
index e3a8adfd..cde5b2e2 100755
--- a/client/src/utils/access-token-storage.js
+++ b/client/src/utils/access-token-storage.js
@@ -8,18 +8,7 @@ export const setAccessToken = (accessToken) => {
});
};
-export const getAccessToken = () => {
- // TODO: remove migration
- const accessToken = localStorage.getItem(Config.ACCESS_TOKEN_KEY);
- if (accessToken) {
- localStorage.removeItem(Config.ACCESS_TOKEN_KEY);
-
- setAccessToken(accessToken);
- return accessToken;
- }
-
- return Cookies.get(Config.ACCESS_TOKEN_KEY);
-};
+export const getAccessToken = () => Cookies.get(Config.ACCESS_TOKEN_KEY);
export const removeAccessToken = () => {
Cookies.remove(Config.ACCESS_TOKEN_KEY);
diff --git a/server/api/helpers/utils/create-attachment-receiver.js b/server/api/helpers/utils/create-attachment-receiver.js
index 93827348..31384384 100644
--- a/server/api/helpers/utils/create-attachment-receiver.js
+++ b/server/api/helpers/utils/create-attachment-receiver.js
@@ -28,7 +28,7 @@ module.exports = {
firstFileHandled = true;
const buffer = await streamToArray(file).then((parts) =>
- Buffer.concat(parts.map((part) => (util.isBuffer(part) ? part : Buffer.from(part)))),
+ Buffer.concat(parts.map((part) => (Buffer.isBuffer(part) ? part : Buffer.from(part)))),
);
try {
diff --git a/server/api/helpers/utils/create-project-background-image-receiver.js b/server/api/helpers/utils/create-project-background-image-receiver.js
index 9535c443..e39fe92f 100644
--- a/server/api/helpers/utils/create-project-background-image-receiver.js
+++ b/server/api/helpers/utils/create-project-background-image-receiver.js
@@ -27,7 +27,7 @@ module.exports = {
firstFileHandled = true;
const buffer = await streamToArray(file).then((parts) =>
- Buffer.concat(parts.map((part) => (util.isBuffer(part) ? part : Buffer.from(part)))),
+ Buffer.concat(parts.map((part) => (Buffer.isBuffer(part) ? part : Buffer.from(part)))),
);
try {
diff --git a/server/api/helpers/utils/create-user-avatar-receiver.js b/server/api/helpers/utils/create-user-avatar-receiver.js
index 82a4968c..0c17f67c 100644
--- a/server/api/helpers/utils/create-user-avatar-receiver.js
+++ b/server/api/helpers/utils/create-user-avatar-receiver.js
@@ -27,7 +27,7 @@ module.exports = {
firstFileHandled = true;
const buffer = await streamToArray(file).then((parts) =>
- Buffer.concat(parts.map((part) => (util.isBuffer(part) ? part : Buffer.from(part)))),
+ Buffer.concat(parts.map((part) => (Buffer.isBuffer(part) ? part : Buffer.from(part)))),
);
try {