import socket from './socket'; /* Transformers */ export const transformCard = (card) => ({ ...card, ...(card.dueDate && { dueDate: new Date(card.dueDate), }), ...(card.timer && { timer: { ...card.timer, ...(card.timer.startedAt && { startedAt: new Date(card.timer.startedAt), }), }, }), }); export const transformCardData = (data) => ({ ...data, ...(data.dueDate && { dueDate: data.dueDate.toISOString(), }), ...(data.timer && { timer: { ...data.timer, ...(data.timer.startedAt && { startedAt: data.timer.startedAt.toISOString(), }), }, }), }); /* Actions */ const createCard = (listId, data, headers) => socket.post(`/lists/${listId}/cards`, transformCardData(data), headers).then((body) => ({ ...body, item: transformCard(body.item), })); const getCard = (id, headers) => socket.get(`/cards/${id}`, undefined, headers).then((body) => ({ ...body, item: transformCard(body.item), })); const updateCard = (id, data, headers) => socket.patch(`/cards/${id}`, transformCardData(data), headers).then((body) => ({ ...body, item: transformCard(body.item), })); const deleteCard = (id, headers) => socket.delete(`/cards/${id}`, undefined, headers).then((body) => ({ ...body, item: transformCard(body.item), })); /* Event handlers */ const makeHandleCardCreate = (next) => (body) => { next({ ...body, item: transformCard(body.item), }); }; const makeHandleCardUpdate = makeHandleCardCreate; const makeHandleCardDelete = makeHandleCardCreate; export default { createCard, getCard, updateCard, deleteCard, makeHandleCardCreate, makeHandleCardUpdate, makeHandleCardDelete, };