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, };