1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-18 20:59:44 +02:00
planka/client/src/api/cards.js

100 lines
2 KiB
JavaScript
Raw Normal View History

2019-08-31 04:07:25 +05:00
import socket from './socket';
import { transformAttachment } from './attachments';
2019-08-31 04:07:25 +05:00
/* Transformers */
2020-03-25 00:15:47 +05:00
export const transformCard = (card) => ({
2019-08-31 04:07:25 +05:00
...card,
...(card.dueDate && {
dueDate: new Date(card.dueDate),
}),
...(card.timer && {
timer: {
...card.timer,
...(card.timer.startedAt && {
startedAt: new Date(card.timer.startedAt),
}),
},
}),
2019-08-31 04:07:25 +05:00
});
2020-03-25 00:15:47 +05:00
export const transformCardData = (data) => ({
2019-08-31 04:07:25 +05:00
...data,
...(data.dueDate && {
dueDate: data.dueDate.toISOString(),
2019-08-31 04:07:25 +05:00
}),
...(data.timer && {
timer: {
...data.timer,
...(data.timer.startedAt && {
startedAt: data.timer.startedAt.toISOString(),
}),
},
2019-08-31 04:07:25 +05:00
}),
});
/* Actions */
const getCards = (boardId, data) =>
socket.get(`/board/${boardId}/cards`, data).then((body) => ({
...body,
items: body.items.map(transformCard),
included: {
...body.included,
attachments: body.included.attachments.map(transformAttachment),
},
}));
const createCard = (boardId, data) =>
socket.post(`/boards/${boardId}/cards`, transformCardData(data)).then((body) => ({
...body,
item: transformCard(body.item),
}));
2019-08-31 04:07:25 +05:00
const getCard = (id) =>
socket.get(`/cards/${id}`).then((body) => ({
...body,
item: transformCard(body.item),
}));
2019-08-31 04:07:25 +05:00
const updateCard = (id, data) =>
socket.patch(`/cards/${id}`, transformCardData(data)).then((body) => ({
...body,
item: transformCard(body.item),
}));
2019-08-31 04:07:25 +05:00
const deleteCard = (id) =>
socket.delete(`/cards/${id}`).then((body) => ({
...body,
item: transformCard(body.item),
}));
2019-08-31 04:07:25 +05:00
/* Event handlers */
2020-03-25 00:15:47 +05:00
const makeHandleCardCreate = (next) => (body) => {
2019-08-31 04:07:25 +05:00
next({
...body,
item: transformCard(body.item),
});
};
const makeHandleCardUpdate = (next) => (body) => {
next({
...body,
item: transformCard(body.item),
});
};
2019-08-31 04:07:25 +05:00
const makeHandleCardDelete = makeHandleCardUpdate;
2019-08-31 04:07:25 +05:00
export default {
getCards,
2019-08-31 04:07:25 +05:00
createCard,
getCard,
updateCard,
deleteCard,
makeHandleCardCreate,
makeHandleCardUpdate,
makeHandleCardDelete,
};