Files
planka/client/src/sagas/core/requests/card.js
T

130 lines
2.5 KiB
JavaScript

import { call, put } from 'redux-saga/effects';
import request from './request';
import {
createCardFailed,
createCardRequested,
createCardSucceeded,
deleteCardFailed,
deleteCardRequested,
deleteCardSucceeded,
fetchCardFailed,
fetchCardRequested,
fetchCardSucceeded,
updateCardFailed,
updateCardRequested,
updateCardSucceeded,
} from '../../../actions';
import api from '../../../api';
export function* createCardRequest(boardId, localId, data) {
yield put(
createCardRequested(localId, {
...data,
boardId,
}),
);
try {
const {
item,
included: { cardMemberships, cardLabels, tasks, attachments },
} = yield call(request, api.createCard, boardId, data);
const action = createCardSucceeded(
localId,
item,
cardMemberships,
cardLabels,
tasks,
attachments,
);
yield put(action);
return {
success: true,
payload: action.payload,
};
} catch (error) {
const action = createCardFailed(localId, error);
yield put(action);
return {
success: false,
payload: action.payload,
};
}
}
export function* fetchCardRequest(id) {
yield put(fetchCardRequested(id));
try {
const { item } = yield call(request, api.getCard, id);
const action = fetchCardSucceeded(item);
yield put(action);
return {
success: true,
payload: action.payload,
};
} catch (error) {
const action = fetchCardFailed(id, error);
yield put(action);
return {
success: false,
payload: action.payload,
};
}
}
export function* updateCardRequest(id, data) {
yield put(updateCardRequested(id, data));
try {
const { item } = yield call(request, api.updateCard, id, data);
const action = updateCardSucceeded(item);
yield put(action);
return {
success: true,
payload: action.payload,
};
} catch (error) {
const action = updateCardFailed(error);
yield put(action);
return {
success: false,
payload: action.payload,
};
}
}
export function* deleteCardRequest(id) {
yield put(deleteCardRequested(id));
try {
const { item } = yield call(request, api.deleteCard, id);
const action = deleteCardSucceeded(item);
yield put(action);
return {
success: true,
payload: action.payload,
};
} catch (error) {
const action = deleteCardFailed(error);
yield put(action);
return {
success: false,
payload: action.payload,
};
}
}