1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-08-05 13:35:27 +02:00

Fix attachment duplication on add

This commit is contained in:
Maksim Eltyshev 2020-04-23 05:56:02 +05:00
parent dc66a93e18
commit cb2f795ef1
8 changed files with 36 additions and 7 deletions

View file

@ -10,8 +10,8 @@ export const transformAttachment = (attachment) => ({
/* Actions */
const createAttachment = (cardId, data, headers) =>
http.post(`/cards/${cardId}/attachments`, data, headers).then((body) => ({
const createAttachment = (cardId, data, requestId, headers) =>
http.post(`/cards/${cardId}/attachments?requestId=${requestId}`, data, headers).then((body) => ({
...body,
item: transformAttachment(body.item),
}));

View file

@ -23,7 +23,7 @@ export function* createAttachmentRequest(cardId, localId, data) {
);
try {
const { item } = yield call(request, api.createAttachment, cardId, data);
const { item } = yield call(request, api.createAttachment, cardId, data, localId);
const action = createAttachmentSucceeded(localId, item);
yield put(action);

View file

@ -5,6 +5,7 @@ import { logoutService } from './login';
import { closeModalService } from './modal';
import { deleteNotificationsRequest, fetchUsersRequest } from '../requests';
import {
attachmentWithIdExistsSelector,
currentModalSelector,
currentUserIdSelector,
currentUserSelector,
@ -208,8 +209,12 @@ export function* deleteTaskReceivedService(task) {
yield put(deleteTaskReceived(task));
}
export function* createAttachmentReceivedService(attachment) {
yield put(createAttachmentReceived(attachment));
export function* createAttachmentReceivedService(attachment, requestId) {
const exists = yield select(attachmentWithIdExistsSelector, requestId);
if (!exists) {
yield put(createAttachmentReceived(attachment));
}
}
export function* updateAttachmentReceivedService(attachment) {

View file

@ -156,8 +156,8 @@ const createSocketEventsChannel = () =>
emit([deleteTaskReceivedService, item]);
};
const handleAttachmentCreate = api.makeHandleAttachmentCreate(({ item }) => {
emit([createAttachmentReceivedService, item]);
const handleAttachmentCreate = api.makeHandleAttachmentCreate(({ item, requestId }) => {
emit([createAttachmentReceivedService, item, requestId]);
});
const handleAttachmentUpdate = api.makeHandleAttachmentUpdate(({ item }) => {

View file

@ -0,0 +1,11 @@
import { createSelector } from 'redux-orm';
import orm from '../orm';
// eslint-disable-next-line import/prefer-default-export
export const attachmentWithIdExistsSelector = () =>
createSelector(
orm,
(_, id) => id,
({ Attachment }, id) => Attachment.idExists(id),
);

View file

@ -3,4 +3,5 @@ export * from './all';
export * from './path';
export * from './current';
export * from './by-id';
export * from './boolean';
export * from './next-position';