75 lines
1.7 KiB
JavaScript
Executable File
75 lines
1.7 KiB
JavaScript
Executable File
/*!
|
|
* Copyright (c) 2024 PLANKA Software GmbH
|
|
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
|
*/
|
|
|
|
import http from './http';
|
|
import socket from './socket';
|
|
|
|
/* Transformers */
|
|
|
|
export const transformAttachment = (attachment) => ({
|
|
...attachment,
|
|
...(attachment.createdAt && {
|
|
createdAt: new Date(attachment.createdAt),
|
|
}),
|
|
});
|
|
|
|
/* Actions */
|
|
|
|
const createAttachment = (cardId, data, headers) =>
|
|
socket.post(`/cards/${cardId}/attachments`, data, headers).then((body) => ({
|
|
...body,
|
|
item: transformAttachment(body.item),
|
|
}));
|
|
|
|
const createAttachmentWithFile = (cardId, { file, ...data }, requestId, headers) =>
|
|
http
|
|
.post(
|
|
`/cards/${cardId}/attachments?requestId=${requestId}`,
|
|
{
|
|
...data,
|
|
file,
|
|
},
|
|
headers,
|
|
)
|
|
.then((body) => ({
|
|
...body,
|
|
item: transformAttachment(body.item),
|
|
}));
|
|
|
|
const updateAttachment = (id, data, headers) =>
|
|
socket.patch(`/attachments/${id}`, data, headers).then((body) => ({
|
|
...body,
|
|
item: transformAttachment(body.item),
|
|
}));
|
|
|
|
const deleteAttachment = (id, headers) =>
|
|
socket.delete(`/attachments/${id}`, undefined, headers).then((body) => ({
|
|
...body,
|
|
item: transformAttachment(body.item),
|
|
}));
|
|
|
|
/* Event handlers */
|
|
|
|
const makeHandleAttachmentCreate = (next) => (body) => {
|
|
next({
|
|
...body,
|
|
item: transformAttachment(body.item),
|
|
});
|
|
};
|
|
|
|
const makeHandleAttachmentUpdate = makeHandleAttachmentCreate;
|
|
|
|
const makeHandleAttachmentDelete = makeHandleAttachmentCreate;
|
|
|
|
export default {
|
|
createAttachment,
|
|
createAttachmentWithFile,
|
|
updateAttachment,
|
|
deleteAttachment,
|
|
makeHandleAttachmentCreate,
|
|
makeHandleAttachmentUpdate,
|
|
makeHandleAttachmentDelete,
|
|
};
|