diff --git a/client/src/api/activities.js b/client/src/api/activities.js index a404eeec..523c6850 100755 --- a/client/src/api/activities.js +++ b/client/src/api/activities.js @@ -1,4 +1,5 @@ import socket from './socket'; +import { transformUser } from './users'; /* Transformers */ @@ -13,6 +14,10 @@ const getActivities = (cardId, data, headers) => socket.get(`/cards/${cardId}/actions`, data, headers).then((body) => ({ ...body, items: body.items.map(transformActivity), + included: { + ...body.included, + users: body.included.users.map(transformUser), + }, })); /* Event handlers */ diff --git a/client/src/api/board-memberships.js b/client/src/api/board-memberships.js index d7d3fd64..1e75e4f7 100644 --- a/client/src/api/board-memberships.js +++ b/client/src/api/board-memberships.js @@ -1,18 +1,50 @@ import socket from './socket'; +/* Transformers */ + +export const transformBoardMembership = (boardMembership) => ({ + ...boardMembership, + createdAt: new Date(boardMembership.createdAt), +}); + /* Actions */ const createBoardMembership = (boardId, data, headers) => - socket.post(`/boards/${boardId}/memberships`, data, headers); + socket.post(`/boards/${boardId}/memberships`, data, headers).then((body) => ({ + ...body, + item: transformBoardMembership(body.item), + })); const updateBoardMembership = (id, data, headers) => - socket.patch(`/board-memberships/${id}`, data, headers); + socket.patch(`/board-memberships/${id}`, data, headers).then((body) => ({ + ...body, + item: transformBoardMembership(body.item), + })); const deleteBoardMembership = (id, headers) => - socket.delete(`/board-memberships/${id}`, undefined, headers); + socket.delete(`/board-memberships/${id}`, undefined, headers).then((body) => ({ + ...body, + item: transformBoardMembership(body.item), + })); + +/* Event handlers */ + +const makeHandleBoardMembershipCreate = (next) => (body) => { + next({ + ...body, + item: transformBoardMembership(body.item), + }); +}; + +const makeHandleBoardMembershipUpdate = makeHandleBoardMembershipCreate; + +const makeHandleBoardMembershipDelete = makeHandleBoardMembershipCreate; export default { createBoardMembership, updateBoardMembership, deleteBoardMembership, + makeHandleBoardMembershipCreate, + makeHandleBoardMembershipUpdate, + makeHandleBoardMembershipDelete, }; diff --git a/client/src/api/boards.js b/client/src/api/boards.js index 3a50c47a..b8ead169 100755 --- a/client/src/api/boards.js +++ b/client/src/api/boards.js @@ -1,12 +1,20 @@ import socket from './socket'; import http from './http'; +import { transformUser } from './users'; +import { transformBoardMembership } from './board-memberships'; import { transformCard } from './cards'; import { transformAttachment } from './attachments'; /* Actions */ const createBoard = (projectId, data, headers) => - socket.post(`/projects/${projectId}/boards`, data, headers); + socket.post(`/projects/${projectId}/boards`, data, headers).then((body) => ({ + ...body, + included: { + ...body.included, + boardMemberships: body.included.boardMemberships.map(transformBoardMembership), + }, + })); const createBoardWithImport = (projectId, data, requestId, headers) => http.post(`/projects/${projectId}/boards?requestId=${requestId}`, data, headers); @@ -18,6 +26,8 @@ const getBoard = (id, subscribe, headers) => ...body, included: { ...body.included, + users: body.included.users.map(transformUser), + boardMemberships: body.included.boardMemberships.map(transformBoardMembership), cards: body.included.cards.map(transformCard), attachments: body.included.attachments.map(transformAttachment), }, diff --git a/client/src/api/notifications.js b/client/src/api/notifications.js index f415e240..eac7609a 100755 --- a/client/src/api/notifications.js +++ b/client/src/api/notifications.js @@ -1,6 +1,7 @@ import omit from 'lodash/omit'; import socket from './socket'; +import { transformUser } from './users'; import { transformCard } from './cards'; import { transformActivity } from './activities'; @@ -19,6 +20,7 @@ const getNotifications = (headers) => items: body.items.map(transformNotification), included: { ...omit(body.included, 'actions'), + users: body.included.users.map(transformUser), cards: body.included.cards.map(transformCard), activities: body.included.actions.map(transformActivity), }, @@ -30,6 +32,7 @@ const getNotification = (id, headers) => item: transformNotification(body.item), included: { ...omit(body.included, 'actions'), + users: body.included.users.map(transformUser), cards: body.included.cards.map(transformCard), activities: body.included.actions.map(transformActivity), }, diff --git a/client/src/api/project-managers.js b/client/src/api/project-managers.js index a835bf2d..7ac9bcc6 100755 --- a/client/src/api/project-managers.js +++ b/client/src/api/project-managers.js @@ -1,14 +1,40 @@ import socket from './socket'; +/* Transformers */ + +export const transformProjectManager = (projectManager) => ({ + ...projectManager, + createdAt: new Date(projectManager.createdAt), +}); + /* Actions */ const createProjectManager = (projectId, data, headers) => - socket.post(`/projects/${projectId}/managers`, data, headers); + socket.post(`/projects/${projectId}/managers`, data, headers).then((body) => ({ + ...body, + item: transformProjectManager(body.item), + })); const deleteProjectManager = (id, headers) => - socket.delete(`/project-managers/${id}`, undefined, headers); + socket.delete(`/project-managers/${id}`, undefined, headers).then((body) => ({ + ...body, + item: transformProjectManager(body.item), + })); + +/* Event handlers */ + +const makeHandleProjectManagerCreate = (next) => (body) => { + next({ + ...body, + item: transformProjectManager(body.item), + }); +}; + +const makeHandleProjectManagerDelete = makeHandleProjectManagerCreate; export default { createProjectManager, deleteProjectManager, + makeHandleProjectManagerCreate, + makeHandleProjectManagerDelete, }; diff --git a/client/src/api/projects.js b/client/src/api/projects.js index 5a22beec..4b0bbc97 100755 --- a/client/src/api/projects.js +++ b/client/src/api/projects.js @@ -1,13 +1,41 @@ import http from './http'; import socket from './socket'; +import { transformUser } from './users'; +import { transformProjectManager } from './project-managers'; +import { transformBoardMembership } from './board-memberships'; /* Actions */ -const getProjects = (headers) => socket.get('/projects', undefined, headers); +const getProjects = (headers) => + socket.get('/projects', undefined, headers).then((body) => ({ + ...body, + included: { + ...body.included, + users: body.included.users.map(transformUser), + projectManagers: body.included.projectManagers.map(transformProjectManager), + boardMemberships: body.included.boardMemberships.map(transformBoardMembership), + }, + })); -const createProject = (data, headers) => socket.post('/projects', data, headers); +const createProject = (data, headers) => + socket.post('/projects', data, headers).then((body) => ({ + ...body, + included: { + ...body.included, + projectManagers: body.included.projectManagers.map(transformProjectManager), + }, + })); -const getProject = (id, headers) => socket.get(`/projects/${id}`, undefined, headers); +const getProject = (id, headers) => + socket.get(`/projects/${id}`, undefined, headers).then((body) => ({ + ...body, + included: { + ...body.included, + users: body.included.users.map(transformUser), + projectManagers: body.included.projectManagers.map(transformProjectManager), + boardMemberships: body.included.boardMemberships.map(transformBoardMembership), + }, + })); const updateProject = (id, data, headers) => socket.patch(`/projects/${id}`, data, headers); diff --git a/client/src/api/users.js b/client/src/api/users.js index 93d9be31..f2287900 100755 --- a/client/src/api/users.js +++ b/client/src/api/users.js @@ -1,30 +1,87 @@ import http from './http'; import socket from './socket'; +/* Transformers */ + +export const transformUser = (user) => ({ + ...user, + createdAt: new Date(user.createdAt), +}); + /* Actions */ -const getUsers = (headers) => socket.get('/users', undefined, headers); +const getUsers = (headers) => + socket.get('/users', undefined, headers).then((body) => ({ + ...body, + items: body.items.map(transformUser), + })); -const createUser = (data, headers) => socket.post('/users', data, headers); +const createUser = (data, headers) => + socket.post('/users', data, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); -const getUser = (id, headers) => socket.get(`/users/${id}`, undefined, headers); +const getUser = (id, headers) => + socket.get(`/users/${id}`, undefined, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); const getCurrentUser = (subscribe, headers) => - socket.get(`/users/me${subscribe ? '?subscribe=true' : ''}`, undefined, headers); + socket.get(`/users/me${subscribe ? '?subscribe=true' : ''}`, undefined, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); -const updateUser = (id, data, headers) => socket.patch(`/users/${id}`, data, headers); +const updateUser = (id, data, headers) => + socket.patch(`/users/${id}`, data, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); -const updateUserEmail = (id, data, headers) => socket.patch(`/users/${id}/email`, data, headers); +const updateUserEmail = (id, data, headers) => + socket.patch(`/users/${id}/email`, data, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); const updateUserPassword = (id, data, headers) => - socket.patch(`/users/${id}/password`, data, headers); + socket.patch(`/users/${id}/password`, data, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); const updateUserUsername = (id, data, headers) => - socket.patch(`/users/${id}/username`, data, headers); + socket.patch(`/users/${id}/username`, data, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); -const updateUserAvatar = (id, data, headers) => http.post(`/users/${id}/avatar`, data, headers); +const updateUserAvatar = (id, data, headers) => + http.post(`/users/${id}/avatar`, data, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); -const deleteUser = (id, headers) => socket.delete(`/users/${id}`, undefined, headers); +const deleteUser = (id, headers) => + socket.delete(`/users/${id}`, undefined, headers).then((body) => ({ + ...body, + item: transformUser(body.item), + })); + +/* Event handlers */ + +const makeHandleUserCreate = (next) => (body) => { + next({ + ...body, + item: transformUser(body.item), + }); +}; + +const makeHandleUserUpdate = makeHandleUserCreate; + +const makeHandleUserDelete = makeHandleUserCreate; export default { getUsers, @@ -37,4 +94,7 @@ export default { updateUserUsername, updateUserAvatar, deleteUser, + makeHandleUserCreate, + makeHandleUserUpdate, + makeHandleUserDelete, }; diff --git a/client/src/locales/_/index.js b/client/src/locales/_/index.js deleted file mode 100644 index 58bff0d6..00000000 --- a/client/src/locales/_/index.js +++ /dev/null @@ -1,31 +0,0 @@ -import fromPairs from 'lodash/fromPairs'; - -import cs from './cs/embed'; -import da from './da/embed'; -import de from './de/embed'; -import en from './en/embed'; -import es from './es/embed'; -import fr from './fr/embed'; -import ja from './ja/embed'; -import pl from './pl/embed'; -import ru from './ru/embed'; -import uz from './uz/embed'; -import zh from './zh/embed'; - -const localePairs = [ - ['cs', cs], - ['da', da], - ['de', de], - ['en', en], - ['es', es], - ['fr', fr], - ['ja', ja], - ['pl', pl], - ['ru', ru], - ['uz', uz], - ['zh', zh], -]; - -export const languages = localePairs.map((locale) => locale[0]); - -export const embedLocales = fromPairs(localePairs); diff --git a/client/src/locales/_/zh/core.js b/client/src/locales/_/zh/core.js deleted file mode 100644 index bcd48e75..00000000 --- a/client/src/locales/_/zh/core.js +++ /dev/null @@ -1,207 +0,0 @@ -export default { - format: { - date: 'M/d/yyyy', - time: 'p', - dateTime: '$t(format:date) $t(format:time)', - longDate: 'MMM d', - longDateTime: "MMMM d 'at' p", - }, - - translation: { - common: { - account: '账号', - actions: '操作', - addAttachment_title: '添加附件', - addComment: '添加评论', - addManager_title: '添加管理员', - addMember_title: '添加成员', - addUser_title: '添加用户', - administrator: '管理员', - all: '全部', - allChangesWillBeAutomaticallySavedAfterConnectionRestored: '所有修改会在重连后自动保存', - areYouSureYouWantToDeleteThisAttachment: '确认删除此附件吗?', - areYouSureYouWantToDeleteThisBoard: '确认删除此面板吗?', - areYouSureYouWantToDeleteThisCard: '确认删除此卡片吗?', - areYouSureYouWantToDeleteThisComment: '确认删除此评论吗?', - areYouSureYouWantToDeleteThisLabel: '确认删除此标签吗?', - areYouSureYouWantToDeleteThisList: '确认删除此列表吗?', - areYouSureYouWantToDeleteThisProject: '确认删除此项目吗?', - areYouSureYouWantToDeleteThisTask: '确认删除此任务吗?', - areYouSureYouWantToDeleteThisUser: '确认删除此用户吗?', - areYouSureYouWantToLeaveBoard: '确认离开此面板吗?', - areYouSureYouWantToLeaveProject: '确认离开此项目吗?', - areYouSureYouWantToRemoveThisManagerFromProject: '确认从本项目删除该管理员吗?', - areYouSureYouWantToRemoveThisMemberFromBoard: '确认本面板删除该成员吗?', - attachment: '附件', - attachments: '多个附件', - authentication: '认证', - background: '背景', - board: '面板', - boardNotFound_title: '面板不存在', - cardActions_title: '卡片操作', - cardNotFound_title: '卡片不存在', - cardOrActionAreDeleted: '卡片或操作已经被删除', - color: '颜色', - createBoard_title: '创建面板', - createLabel_title: '创建标签', - createNewOneOrSelectExistingOne: '创建一个新的或者选择一个已创建的', - createProject_title: '创建项目', - createTextFile_title: '创建文本文件', - currentPassword: '当前密码', - dangerZone_title: '危险区域', - date: '日期', - dueDate_title: '截止日期', - deleteAttachment_title: '删除附件', - deleteBoard_title: '删除面板', - deleteCard_title: '删除擦片', - deleteComment_title: '删除评论', - deleteLabel_title: '删除标签', - deleteList_title: '删除列表', - deleteProject_title: '删除项目', - deleteTask_title: '删除任务', - deleteUser_title: '删除用户', - description: '描述', - dropFileToUpload: '拖放文件以上传', - editAttachment_title: '编辑附件', - editAvatar_title: '编辑头像', - editBoard_title: '编辑面板', - editDueDate_title: '编辑截止时间', - editEmail_title: '编辑邮箱', - editLabel_title: '编辑标签', - editPassword_title: '修改密码', - editTimer_title: '修改时间', - editUsername_title: '修改用户名', - email: '邮箱', - emailAlreadyInUse: '邮箱已使用', - enterCardTitle: '输入卡片标题...', - enterDescription: '输入描述...', - enterFilename: '输入文件名', - enterListTitle: '输入列表标题...', - enterProjectTitle: '输入项目标题', - enterTaskDescription: '输入任务描述...', - filterByLabels_title: '通过标签筛选', - filterByMembers_title: '通过成员筛选', - fromComputer_title: '从电脑', - general: '全体', - hours: '小时', - invalidCurrentPassword: '当前密码错误', - labels: '标签', - leaveBoard_title: '离开面板', - leaveProject_title: '离开项目', - list: '列表', - listActions_title: '列表操作', - managers: '管理员', - members: '成员', - minutes: '分钟', - moveCard_title: '移动卡片', - name: '姓名', - newEmail: '新邮箱', - newPassword: '新密码', - newUsername: '新用户名', - noConnectionToServer: '未连接服务器', - noBoards: '没有面板', - noLists: '没有列表', - noProjects: '没有项目', - notifications: '通知', - noUnreadNotifications: '没有未读通知', - openBoard_title: '打开面板', - optional_inline: '可选的', - organization: '组织机构', - phone: '电话', - preferences: '偏好', - pressPasteShortcutToAddAttachmentFromClipboard: - '提示: 点击 Ctrl-V (Mac: Cmd-V) 从剪切板添加附件.', - project: '项目', - projectNotFound_title: '项目未找到', - removeManager_title: '删除管理员', - removeMember_title: '删除成员', - seconds: '秒', - selectBoard: '选择面板', - selectList: '选择列表', - selectProject: '选择项目', - settings: '设置', - subscribeToMyOwnCardsByDefault: '默认关注自己创建的卡片', - taskActions_title: '任务操作', - tasks: '任务', - time: '时间', - timer: '计时器', - title: '标题', - userActions_title: '用户操作', - userAddedThisCardToList: '<0>{{user}}<1> 向列表 {{list}} 添加了该卡片', - userLeftNewCommentToCard: '{{user}} 给 {{card}} 添加了一个新评论 «{{comment}}»', - userMovedCardFromListToList: - '{{user}} 将卡片 <2>{{card}} 从 {{fromList}} 移动到 {{toList}}', - userMovedThisCardFromListToList: - '<0>{{user}}<1> 将该卡片从 {{fromList}} 移动到 {{toList}}', - username: '用户名', - usernameAlreadyInUse: '用户名已占用', - users: '用户', - writeComment: '编写评论...', - }, - - action: { - addAnotherCard: '添加别的卡片', - addAnotherList: '添加别的列表', - addAnotherTask: '添加别的任务', - addCard: '添加卡片', - addCard_title: '添加卡片', - addComment: '添加评论', - addList: '添加列表', - addMoreDetailedDescription: '添加更多详细描述', - addTask: '添加任务', - addToCard: '添加擦篇', - addUser: '添加用户', - createBoard: '创建面板', - createFile: '创建文件', - createLabel: '创建标签', - createNewLabel: '创建新标签', - createProject: '创建项目', - delete: '删除', - deleteAttachment: '删除附件', - deleteAvatar: '删除头像', - deleteBoard: '删除面板', - deleteCard: '删除卡片', - deleteCard_title: '删除卡片', - deleteComment: '删除评论', - deleteImage: '删除图片', - deleteLabel: '删除标签', - deleteList: '删除列表', - deleteList_title: '删除列表', - deleteProject: '删除项目', - deleteProject_title: '删除项目', - deleteTask: '删除任务', - deleteTask_title: '删除任务', - deleteUser: '删除用户', - edit: '编辑', - editDueDate_title: '编辑到期时间', - editDescription_title: '编辑描述', - editEmail_title: '编辑邮箱', - editPassword_title: '编辑密码', - editTimer_title: '编辑实践', - editTitle_title: '编辑标题', - editUsername_title: '编辑用户名', - leaveBoard: '离开面板', - leaveProject: '离开项目', - logOut_title: '退出', - makeCover_title: '设置标题', - move: '移动', - moveCard_title: '移动卡片', - remove: '删除', - removeBackground: '删除背景', - removeCover_title: '删除封面', - removeFromBoard: '从面板中删除', - removeFromProject: '从项目中删除', - removeManager: '删除管理者', - removeMember: '删除成员', - save: '保存', - showAllAttachments: '显示所有的附件 ({{hidden}} 隐藏)', - showFewerAttachments: '显示较少的附件', - start: '开始', - stop: '结束', - subscribe: '关注', - unsubscribe: '取消关注', - uploadNewAvatar: '上传新头像', - uploadNewImage: '上传图片', - }, - }, -}; diff --git a/client/src/locales/_/zh/embed.js b/client/src/locales/_/zh/embed.js deleted file mode 100644 index ef3b4369..00000000 --- a/client/src/locales/_/zh/embed.js +++ /dev/null @@ -1,20 +0,0 @@ -export default { - translation: { - common: { - emailOrUsername: '邮箱或用户名', - invalidEmailOrUsername: '错误的邮箱或用户名', - invalidPassword: '密码错误', - logInToPlanka: '登录至 Planka', - noInternetConnection: '没有网络连接', - pageNotFound_title: '页面找不到', - password: '密码', - projectManagement: '项目管理', - serverConnectionFailed: '服务连接失败', - unknownError: '未知错误,请稍后重试', - }, - - action: { - logIn: '登录', - }, - }, -}; diff --git a/client/src/models/Attachment.js b/client/src/models/Attachment.js index 64ea0116..ca171f8e 100644 --- a/client/src/models/Attachment.js +++ b/client/src/models/Attachment.js @@ -12,6 +12,9 @@ export default class extends BaseModel { coverUrl: attr(), image: attr(), name: attr(), + createdAt: attr({ + getDefault: () => new Date(), + }), cardId: fk({ to: 'Card', as: 'card', diff --git a/client/src/models/Board.js b/client/src/models/Board.js index 5652a7f5..3b235035 100755 --- a/client/src/models/Board.js +++ b/client/src/models/Board.js @@ -172,7 +172,7 @@ export default class extends BaseModel { } getOrderedMembershipsQuerySet() { - return this.memberships.orderBy('id'); + return this.memberships.orderBy('createdAt'); } getOrderedLabelsQuerySet() { diff --git a/client/src/models/BoardMembership.js b/client/src/models/BoardMembership.js index 0bdd7044..5496d0bb 100644 --- a/client/src/models/BoardMembership.js +++ b/client/src/models/BoardMembership.js @@ -10,6 +10,9 @@ export default class extends BaseModel { id: attr(), role: attr(), canComment: attr(), + createdAt: attr({ + getDefault: () => new Date(), + }), boardId: fk({ to: 'Board', as: 'board', diff --git a/client/src/models/Card.js b/client/src/models/Card.js index 8ac9c7b2..78c682cc 100755 --- a/client/src/models/Card.js +++ b/client/src/models/Card.js @@ -244,7 +244,7 @@ export default class extends BaseModel { } getOrderedAttachmentsQuerySet() { - return this.attachments.orderBy('id', false); + return this.attachments.orderBy('createdAt', false); } getFilteredOrderedInCardActivitiesQuerySet() { @@ -256,7 +256,7 @@ export default class extends BaseModel { filter.type = ActivityTypes.COMMENT_CARD; } - return this.activities.filter(filter).orderBy('id', false); + return this.activities.filter(filter).orderBy('createdAt', false); } getUnreadNotificationsQuerySet() { diff --git a/client/src/models/Project.js b/client/src/models/Project.js index df844734..03ea3b63 100755 --- a/client/src/models/Project.js +++ b/client/src/models/Project.js @@ -137,7 +137,7 @@ export default class extends BaseModel { } getOrderedManagersQuerySet() { - return this.managers.orderBy('id'); + return this.managers.orderBy('createdAt'); } getOrderedBoardsQuerySet() { diff --git a/client/src/models/ProjectManager.js b/client/src/models/ProjectManager.js index 6c68d5a0..a388e81b 100644 --- a/client/src/models/ProjectManager.js +++ b/client/src/models/ProjectManager.js @@ -8,6 +8,9 @@ export default class extends BaseModel { static fields = { id: attr(), + createdAt: attr({ + getDefault: () => new Date(), + }), projectId: fk({ to: 'Project', as: 'project', diff --git a/client/src/models/User.js b/client/src/models/User.js index fbc03d6c..8e2f6768 100755 --- a/client/src/models/User.js +++ b/client/src/models/User.js @@ -43,6 +43,9 @@ export default class extends BaseModel { organization: attr(), language: attr(), subscribeToOwnCards: attr(), + createdAt: attr({ + getDefault: () => new Date(), + }), deletedAt: attr(), isAdmin: attr({ getDefault: () => false, @@ -293,15 +296,15 @@ export default class extends BaseModel { static getOrderedUndeletedQuerySet() { return this.filter({ deletedAt: null, - }).orderBy('id'); + }).orderBy('createdAt'); } getOrderedProjectManagersQuerySet() { - return this.projectManagers.orderBy('id'); + return this.projectManagers.orderBy('createdAt'); } getOrderedBoardMembershipsQuerySet() { - return this.boardMemberships.orderBy('id'); + return this.boardMemberships.orderBy('createdAt'); } getOrderedUnreadNotificationsQuerySet() { @@ -309,7 +312,7 @@ export default class extends BaseModel { .filter({ isRead: false, }) - .orderBy('id', false); + .orderBy('createdAt', false); } getOrderedAvailableProjectsModelArray() { diff --git a/client/src/sagas/core/watchers/socket.js b/client/src/sagas/core/watchers/socket.js index ef6bed94..169de93f 100644 --- a/client/src/sagas/core/watchers/socket.js +++ b/client/src/sagas/core/watchers/socket.js @@ -16,17 +16,17 @@ const createSocketEventsChannel = () => emit(entryActions.handleSocketReconnect()); }; - const handleUserCreate = ({ item }) => { + const handleUserCreate = api.makeHandleUserCreate(({ item }) => { emit(entryActions.handleUserCreate(item)); - }; + }); - const handleUserUpdate = ({ item }) => { + const handleUserUpdate = api.makeHandleUserUpdate(({ item }) => { emit(entryActions.handleUserUpdate(item)); - }; + }); - const handleUserDelete = ({ item }) => { + const handleUserDelete = api.makeHandleUserDelete(({ item }) => { emit(entryActions.handleUserDelete(item)); - }; + }); const handleProjectCreate = ({ item }) => { emit(entryActions.handleProjectCreate(item)); @@ -40,13 +40,13 @@ const createSocketEventsChannel = () => emit(entryActions.handleProjectDelete(item)); }; - const handleProjectManagerCreate = ({ item }) => { + const handleProjectManagerCreate = api.makeHandleProjectManagerCreate(({ item }) => { emit(entryActions.handleProjectManagerCreate(item)); - }; + }); - const handleProjectManagerDelete = ({ item }) => { + const handleProjectManagerDelete = api.makeHandleProjectManagerDelete(({ item }) => { emit(entryActions.handleProjectManagerDelete(item)); - }; + }); const handleBoardCreate = ({ item, requestId }) => { emit(entryActions.handleBoardCreate(item, requestId)); @@ -60,17 +60,17 @@ const createSocketEventsChannel = () => emit(entryActions.handleBoardDelete(item)); }; - const handleBoardMembershipCreate = ({ item }) => { + const handleBoardMembershipCreate = api.makeHandleBoardMembershipCreate(({ item }) => { emit(entryActions.handleBoardMembershipCreate(item)); - }; + }); - const handleBoardMembershipUpdate = ({ item }) => { + const handleBoardMembershipUpdate = api.makeHandleBoardMembershipUpdate(({ item }) => { emit(entryActions.handleBoardMembershipUpdate(item)); - }; + }); - const handleBoardMembershipDelete = ({ item }) => { + const handleBoardMembershipDelete = api.makeHandleBoardMembershipDelete(({ item }) => { emit(entryActions.handleBoardMembershipDelete(item)); - }; + }); const handleListCreate = ({ item }) => { emit(entryActions.handleListCreate(item));