1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-22 14:49:43 +02:00

fix: Use creation timestamp instead of id for ordering

Closes #465
This commit is contained in:
Maksim Eltyshev 2023-06-13 00:19:17 +02:00
parent d386c82973
commit 2d7812a679
18 changed files with 219 additions and 301 deletions

View file

@ -1,4 +1,5 @@
import socket from './socket'; import socket from './socket';
import { transformUser } from './users';
/* Transformers */ /* Transformers */
@ -13,6 +14,10 @@ const getActivities = (cardId, data, headers) =>
socket.get(`/cards/${cardId}/actions`, data, headers).then((body) => ({ socket.get(`/cards/${cardId}/actions`, data, headers).then((body) => ({
...body, ...body,
items: body.items.map(transformActivity), items: body.items.map(transformActivity),
included: {
...body.included,
users: body.included.users.map(transformUser),
},
})); }));
/* Event handlers */ /* Event handlers */

View file

@ -1,18 +1,50 @@
import socket from './socket'; import socket from './socket';
/* Transformers */
export const transformBoardMembership = (boardMembership) => ({
...boardMembership,
createdAt: new Date(boardMembership.createdAt),
});
/* Actions */ /* Actions */
const createBoardMembership = (boardId, data, headers) => 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) => 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) => 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 { export default {
createBoardMembership, createBoardMembership,
updateBoardMembership, updateBoardMembership,
deleteBoardMembership, deleteBoardMembership,
makeHandleBoardMembershipCreate,
makeHandleBoardMembershipUpdate,
makeHandleBoardMembershipDelete,
}; };

View file

@ -1,12 +1,20 @@
import socket from './socket'; import socket from './socket';
import http from './http'; import http from './http';
import { transformUser } from './users';
import { transformBoardMembership } from './board-memberships';
import { transformCard } from './cards'; import { transformCard } from './cards';
import { transformAttachment } from './attachments'; import { transformAttachment } from './attachments';
/* Actions */ /* Actions */
const createBoard = (projectId, data, headers) => 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) => const createBoardWithImport = (projectId, data, requestId, headers) =>
http.post(`/projects/${projectId}/boards?requestId=${requestId}`, data, headers); http.post(`/projects/${projectId}/boards?requestId=${requestId}`, data, headers);
@ -18,6 +26,8 @@ const getBoard = (id, subscribe, headers) =>
...body, ...body,
included: { included: {
...body.included, ...body.included,
users: body.included.users.map(transformUser),
boardMemberships: body.included.boardMemberships.map(transformBoardMembership),
cards: body.included.cards.map(transformCard), cards: body.included.cards.map(transformCard),
attachments: body.included.attachments.map(transformAttachment), attachments: body.included.attachments.map(transformAttachment),
}, },

View file

@ -1,6 +1,7 @@
import omit from 'lodash/omit'; import omit from 'lodash/omit';
import socket from './socket'; import socket from './socket';
import { transformUser } from './users';
import { transformCard } from './cards'; import { transformCard } from './cards';
import { transformActivity } from './activities'; import { transformActivity } from './activities';
@ -19,6 +20,7 @@ const getNotifications = (headers) =>
items: body.items.map(transformNotification), items: body.items.map(transformNotification),
included: { included: {
...omit(body.included, 'actions'), ...omit(body.included, 'actions'),
users: body.included.users.map(transformUser),
cards: body.included.cards.map(transformCard), cards: body.included.cards.map(transformCard),
activities: body.included.actions.map(transformActivity), activities: body.included.actions.map(transformActivity),
}, },
@ -30,6 +32,7 @@ const getNotification = (id, headers) =>
item: transformNotification(body.item), item: transformNotification(body.item),
included: { included: {
...omit(body.included, 'actions'), ...omit(body.included, 'actions'),
users: body.included.users.map(transformUser),
cards: body.included.cards.map(transformCard), cards: body.included.cards.map(transformCard),
activities: body.included.actions.map(transformActivity), activities: body.included.actions.map(transformActivity),
}, },

View file

@ -1,14 +1,40 @@
import socket from './socket'; import socket from './socket';
/* Transformers */
export const transformProjectManager = (projectManager) => ({
...projectManager,
createdAt: new Date(projectManager.createdAt),
});
/* Actions */ /* Actions */
const createProjectManager = (projectId, data, headers) => 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) => 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 { export default {
createProjectManager, createProjectManager,
deleteProjectManager, deleteProjectManager,
makeHandleProjectManagerCreate,
makeHandleProjectManagerDelete,
}; };

View file

@ -1,13 +1,41 @@
import http from './http'; import http from './http';
import socket from './socket'; import socket from './socket';
import { transformUser } from './users';
import { transformProjectManager } from './project-managers';
import { transformBoardMembership } from './board-memberships';
/* Actions */ /* 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); const updateProject = (id, data, headers) => socket.patch(`/projects/${id}`, data, headers);

View file

@ -1,30 +1,87 @@
import http from './http'; import http from './http';
import socket from './socket'; import socket from './socket';
/* Transformers */
export const transformUser = (user) => ({
...user,
createdAt: new Date(user.createdAt),
});
/* Actions */ /* 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) => 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) => 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) => 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 { export default {
getUsers, getUsers,
@ -37,4 +94,7 @@ export default {
updateUserUsername, updateUserUsername,
updateUserAvatar, updateUserAvatar,
deleteUser, deleteUser,
makeHandleUserCreate,
makeHandleUserUpdate,
makeHandleUserDelete,
}; };

View file

@ -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);

View file

@ -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}}</0><1> 向列表 {{list}} 添加了该卡片</1>',
userLeftNewCommentToCard: '{{user}} 给 {{card}} 添加了一个新评论 «{{comment}}»',
userMovedCardFromListToList:
'{{user}} 将卡片 <2>{{card}}</2> 从 {{fromList}} 移动到 {{toList}}',
userMovedThisCardFromListToList:
'<0>{{user}}</0><1> 将该卡片从 {{fromList}} 移动到 {{toList}}</1>',
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: '上传图片',
},
},
};

View file

@ -1,20 +0,0 @@
export default {
translation: {
common: {
emailOrUsername: '邮箱或用户名',
invalidEmailOrUsername: '错误的邮箱或用户名',
invalidPassword: '密码错误',
logInToPlanka: '登录至 Planka',
noInternetConnection: '没有网络连接',
pageNotFound_title: '页面找不到',
password: '密码',
projectManagement: '项目管理',
serverConnectionFailed: '服务连接失败',
unknownError: '未知错误,请稍后重试',
},
action: {
logIn: '登录',
},
},
};

View file

@ -12,6 +12,9 @@ export default class extends BaseModel {
coverUrl: attr(), coverUrl: attr(),
image: attr(), image: attr(),
name: attr(), name: attr(),
createdAt: attr({
getDefault: () => new Date(),
}),
cardId: fk({ cardId: fk({
to: 'Card', to: 'Card',
as: 'card', as: 'card',

View file

@ -172,7 +172,7 @@ export default class extends BaseModel {
} }
getOrderedMembershipsQuerySet() { getOrderedMembershipsQuerySet() {
return this.memberships.orderBy('id'); return this.memberships.orderBy('createdAt');
} }
getOrderedLabelsQuerySet() { getOrderedLabelsQuerySet() {

View file

@ -10,6 +10,9 @@ export default class extends BaseModel {
id: attr(), id: attr(),
role: attr(), role: attr(),
canComment: attr(), canComment: attr(),
createdAt: attr({
getDefault: () => new Date(),
}),
boardId: fk({ boardId: fk({
to: 'Board', to: 'Board',
as: 'board', as: 'board',

View file

@ -244,7 +244,7 @@ export default class extends BaseModel {
} }
getOrderedAttachmentsQuerySet() { getOrderedAttachmentsQuerySet() {
return this.attachments.orderBy('id', false); return this.attachments.orderBy('createdAt', false);
} }
getFilteredOrderedInCardActivitiesQuerySet() { getFilteredOrderedInCardActivitiesQuerySet() {
@ -256,7 +256,7 @@ export default class extends BaseModel {
filter.type = ActivityTypes.COMMENT_CARD; filter.type = ActivityTypes.COMMENT_CARD;
} }
return this.activities.filter(filter).orderBy('id', false); return this.activities.filter(filter).orderBy('createdAt', false);
} }
getUnreadNotificationsQuerySet() { getUnreadNotificationsQuerySet() {

View file

@ -137,7 +137,7 @@ export default class extends BaseModel {
} }
getOrderedManagersQuerySet() { getOrderedManagersQuerySet() {
return this.managers.orderBy('id'); return this.managers.orderBy('createdAt');
} }
getOrderedBoardsQuerySet() { getOrderedBoardsQuerySet() {

View file

@ -8,6 +8,9 @@ export default class extends BaseModel {
static fields = { static fields = {
id: attr(), id: attr(),
createdAt: attr({
getDefault: () => new Date(),
}),
projectId: fk({ projectId: fk({
to: 'Project', to: 'Project',
as: 'project', as: 'project',

View file

@ -43,6 +43,9 @@ export default class extends BaseModel {
organization: attr(), organization: attr(),
language: attr(), language: attr(),
subscribeToOwnCards: attr(), subscribeToOwnCards: attr(),
createdAt: attr({
getDefault: () => new Date(),
}),
deletedAt: attr(), deletedAt: attr(),
isAdmin: attr({ isAdmin: attr({
getDefault: () => false, getDefault: () => false,
@ -293,15 +296,15 @@ export default class extends BaseModel {
static getOrderedUndeletedQuerySet() { static getOrderedUndeletedQuerySet() {
return this.filter({ return this.filter({
deletedAt: null, deletedAt: null,
}).orderBy('id'); }).orderBy('createdAt');
} }
getOrderedProjectManagersQuerySet() { getOrderedProjectManagersQuerySet() {
return this.projectManagers.orderBy('id'); return this.projectManagers.orderBy('createdAt');
} }
getOrderedBoardMembershipsQuerySet() { getOrderedBoardMembershipsQuerySet() {
return this.boardMemberships.orderBy('id'); return this.boardMemberships.orderBy('createdAt');
} }
getOrderedUnreadNotificationsQuerySet() { getOrderedUnreadNotificationsQuerySet() {
@ -309,7 +312,7 @@ export default class extends BaseModel {
.filter({ .filter({
isRead: false, isRead: false,
}) })
.orderBy('id', false); .orderBy('createdAt', false);
} }
getOrderedAvailableProjectsModelArray() { getOrderedAvailableProjectsModelArray() {

View file

@ -16,17 +16,17 @@ const createSocketEventsChannel = () =>
emit(entryActions.handleSocketReconnect()); emit(entryActions.handleSocketReconnect());
}; };
const handleUserCreate = ({ item }) => { const handleUserCreate = api.makeHandleUserCreate(({ item }) => {
emit(entryActions.handleUserCreate(item)); emit(entryActions.handleUserCreate(item));
}; });
const handleUserUpdate = ({ item }) => { const handleUserUpdate = api.makeHandleUserUpdate(({ item }) => {
emit(entryActions.handleUserUpdate(item)); emit(entryActions.handleUserUpdate(item));
}; });
const handleUserDelete = ({ item }) => { const handleUserDelete = api.makeHandleUserDelete(({ item }) => {
emit(entryActions.handleUserDelete(item)); emit(entryActions.handleUserDelete(item));
}; });
const handleProjectCreate = ({ item }) => { const handleProjectCreate = ({ item }) => {
emit(entryActions.handleProjectCreate(item)); emit(entryActions.handleProjectCreate(item));
@ -40,13 +40,13 @@ const createSocketEventsChannel = () =>
emit(entryActions.handleProjectDelete(item)); emit(entryActions.handleProjectDelete(item));
}; };
const handleProjectManagerCreate = ({ item }) => { const handleProjectManagerCreate = api.makeHandleProjectManagerCreate(({ item }) => {
emit(entryActions.handleProjectManagerCreate(item)); emit(entryActions.handleProjectManagerCreate(item));
}; });
const handleProjectManagerDelete = ({ item }) => { const handleProjectManagerDelete = api.makeHandleProjectManagerDelete(({ item }) => {
emit(entryActions.handleProjectManagerDelete(item)); emit(entryActions.handleProjectManagerDelete(item));
}; });
const handleBoardCreate = ({ item, requestId }) => { const handleBoardCreate = ({ item, requestId }) => {
emit(entryActions.handleBoardCreate(item, requestId)); emit(entryActions.handleBoardCreate(item, requestId));
@ -60,17 +60,17 @@ const createSocketEventsChannel = () =>
emit(entryActions.handleBoardDelete(item)); emit(entryActions.handleBoardDelete(item));
}; };
const handleBoardMembershipCreate = ({ item }) => { const handleBoardMembershipCreate = api.makeHandleBoardMembershipCreate(({ item }) => {
emit(entryActions.handleBoardMembershipCreate(item)); emit(entryActions.handleBoardMembershipCreate(item));
}; });
const handleBoardMembershipUpdate = ({ item }) => { const handleBoardMembershipUpdate = api.makeHandleBoardMembershipUpdate(({ item }) => {
emit(entryActions.handleBoardMembershipUpdate(item)); emit(entryActions.handleBoardMembershipUpdate(item));
}; });
const handleBoardMembershipDelete = ({ item }) => { const handleBoardMembershipDelete = api.makeHandleBoardMembershipDelete(({ item }) => {
emit(entryActions.handleBoardMembershipDelete(item)); emit(entryActions.handleBoardMembershipDelete(item));
}; });
const handleListCreate = ({ item }) => { const handleListCreate = ({ item }) => {
emit(entryActions.handleListCreate(item)); emit(entryActions.handleListCreate(item));