2019-08-31 04:07:25 +05:00
|
|
|
import socket from './socket';
|
2020-05-09 05:30:52 +05:00
|
|
|
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,
|
2019-10-25 21:38:14 +05:00
|
|
|
...(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,
|
2019-10-05 06:12:36 +05:00
|
|
|
...(data.dueDate && {
|
|
|
|
dueDate: data.dueDate.toISOString(),
|
2019-08-31 04:07:25 +05:00
|
|
|
}),
|
|
|
|
...(data.timer && {
|
2019-10-25 21:38:14 +05:00
|
|
|
timer: {
|
|
|
|
...data.timer,
|
|
|
|
...(data.timer.startedAt && {
|
|
|
|
startedAt: data.timer.startedAt.toISOString(),
|
|
|
|
}),
|
|
|
|
},
|
2019-08-31 04:07:25 +05:00
|
|
|
}),
|
|
|
|
});
|
|
|
|
|
|
|
|
/* Actions */
|
|
|
|
|
2022-04-26 18:01:55 +05:00
|
|
|
const getCards = (boardId, data) =>
|
|
|
|
socket.get(`/board/${boardId}/cards`, data).then((body) => ({
|
2020-08-04 01:32:46 +05:00
|
|
|
...body,
|
|
|
|
items: body.items.map(transformCard),
|
|
|
|
included: {
|
|
|
|
...body.included,
|
|
|
|
attachments: body.included.attachments.map(transformAttachment),
|
|
|
|
},
|
|
|
|
}));
|
|
|
|
|
2022-04-26 18:01:55 +05:00
|
|
|
const createCard = (boardId, data) =>
|
|
|
|
socket.post(`/boards/${boardId}/cards`, transformCardData(data)).then((body) => ({
|
2020-02-03 18:42:31 +05:00
|
|
|
...body,
|
|
|
|
item: transformCard(body.item),
|
|
|
|
}));
|
2019-08-31 04:07:25 +05:00
|
|
|
|
2022-04-26 18:01:55 +05:00
|
|
|
const getCard = (id) =>
|
|
|
|
socket.get(`/cards/${id}`).then((body) => ({
|
2020-02-03 18:42:31 +05:00
|
|
|
...body,
|
|
|
|
item: transformCard(body.item),
|
|
|
|
}));
|
2019-08-31 04:07:25 +05:00
|
|
|
|
2022-04-26 18:01:55 +05:00
|
|
|
const updateCard = (id, data) =>
|
|
|
|
socket.patch(`/cards/${id}`, transformCardData(data)).then((body) => ({
|
2020-02-03 18:42:31 +05:00
|
|
|
...body,
|
|
|
|
item: transformCard(body.item),
|
|
|
|
}));
|
2019-08-31 04:07:25 +05:00
|
|
|
|
2022-04-26 18:01:55 +05:00
|
|
|
const deleteCard = (id) =>
|
|
|
|
socket.delete(`/cards/${id}`).then((body) => ({
|
2020-02-03 18:42:31 +05:00
|
|
|
...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),
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2020-05-09 05:30:52 +05:00
|
|
|
const makeHandleCardUpdate = (next) => (body) => {
|
|
|
|
next({
|
|
|
|
...body,
|
|
|
|
item: transformCard(body.item),
|
|
|
|
});
|
|
|
|
};
|
2019-08-31 04:07:25 +05:00
|
|
|
|
2020-05-09 05:30:52 +05:00
|
|
|
const makeHandleCardDelete = makeHandleCardUpdate;
|
2019-08-31 04:07:25 +05:00
|
|
|
|
|
|
|
export default {
|
2020-08-04 01:32:46 +05:00
|
|
|
getCards,
|
2019-08-31 04:07:25 +05:00
|
|
|
createCard,
|
|
|
|
getCard,
|
|
|
|
updateCard,
|
|
|
|
deleteCard,
|
|
|
|
makeHandleCardCreate,
|
|
|
|
makeHandleCardUpdate,
|
|
|
|
makeHandleCardDelete,
|
|
|
|
};
|