ref: Refactoring
This commit is contained in:
153
client/src/sagas/core/services/cards.js
Normal file
153
client/src/sagas/core/services/cards.js
Normal file
@@ -0,0 +1,153 @@
|
||||
import { call, put, select } from 'redux-saga/effects';
|
||||
|
||||
import { goToBoard } from './router';
|
||||
import request from '../request';
|
||||
import selectors from '../../../selectors';
|
||||
import actions from '../../../actions';
|
||||
import api from '../../../api';
|
||||
import { createLocalId } from '../../../utils/local-id';
|
||||
|
||||
export function* createCard(listId, data) {
|
||||
const { boardId } = yield select(selectors.selectListById, listId);
|
||||
|
||||
const nextData = {
|
||||
...data,
|
||||
listId,
|
||||
position: yield select(selectors.selectNextCardPosition, listId),
|
||||
};
|
||||
|
||||
const localId = yield call(createLocalId);
|
||||
|
||||
yield put(
|
||||
actions.createCard({
|
||||
...nextData,
|
||||
boardId,
|
||||
id: localId,
|
||||
}),
|
||||
);
|
||||
|
||||
let card;
|
||||
try {
|
||||
({ item: card } = yield call(request, api.createCard, boardId, nextData));
|
||||
} catch (error) {
|
||||
yield put(actions.createCard.failure(localId, error));
|
||||
return;
|
||||
}
|
||||
|
||||
yield put(actions.createCard.success(localId, card));
|
||||
}
|
||||
|
||||
export function* handleCardCreate(card) {
|
||||
yield put(actions.handleCardCreate(card));
|
||||
}
|
||||
|
||||
export function* updateCard(id, data) {
|
||||
yield put(actions.updateCard(id, data));
|
||||
|
||||
let card;
|
||||
try {
|
||||
({ item: card } = yield call(request, api.updateCard, id, data));
|
||||
} catch (error) {
|
||||
yield put(actions.updateCard.failure(id, error));
|
||||
return;
|
||||
}
|
||||
|
||||
yield put(actions.updateCard.success(card));
|
||||
}
|
||||
|
||||
export function* updateCurrentCard(data) {
|
||||
const { cardId } = yield select(selectors.selectPath);
|
||||
|
||||
yield call(updateCard, cardId, data);
|
||||
}
|
||||
|
||||
export function* handleCardUpdate(card) {
|
||||
yield put(actions.handleCardUpdate(card)); // TODO: handle card transfer
|
||||
}
|
||||
|
||||
export function* moveCard(id, listId, index) {
|
||||
const position = yield select(selectors.selectNextCardPosition, listId, index, id);
|
||||
|
||||
yield call(updateCard, id, {
|
||||
listId,
|
||||
position,
|
||||
});
|
||||
}
|
||||
|
||||
export function* moveCurrentCard(listId, index) {
|
||||
const { cardId } = yield select(selectors.selectPath);
|
||||
|
||||
yield call(moveCard, cardId, listId, index);
|
||||
}
|
||||
|
||||
export function* transferCard(id, boardId, listId, index) {
|
||||
const { cardId: currentCardId, boardId: currentBoardId } = yield select(selectors.selectPath);
|
||||
const position = yield select(selectors.selectNextCardPosition, listId, index, id);
|
||||
|
||||
if (id === currentCardId) {
|
||||
yield call(goToBoard, currentBoardId);
|
||||
}
|
||||
|
||||
yield call(updateCard, id, {
|
||||
boardId,
|
||||
listId,
|
||||
position,
|
||||
});
|
||||
}
|
||||
|
||||
export function* transferCurrentCard(boardId, listId, index) {
|
||||
const { cardId } = yield select(selectors.selectPath);
|
||||
|
||||
yield call(transferCard, cardId, boardId, listId, index);
|
||||
}
|
||||
|
||||
export function* deleteCard(id) {
|
||||
const { cardId, boardId } = yield select(selectors.selectPath);
|
||||
|
||||
if (id === cardId) {
|
||||
yield call(goToBoard, boardId);
|
||||
}
|
||||
|
||||
yield put(actions.deleteCard(id));
|
||||
|
||||
let card;
|
||||
try {
|
||||
({ item: card } = yield call(request, api.deleteCard, id));
|
||||
} catch (error) {
|
||||
yield put(actions.deleteCard.failure(id, error));
|
||||
return;
|
||||
}
|
||||
|
||||
yield put(actions.deleteCard.success(card));
|
||||
}
|
||||
|
||||
export function* deleteCurrentCard() {
|
||||
const { cardId } = yield select(selectors.selectPath);
|
||||
|
||||
yield call(deleteCard, cardId);
|
||||
}
|
||||
|
||||
export function* handleCardDelete(card) {
|
||||
const { cardId, boardId } = yield select(selectors.selectPath);
|
||||
|
||||
if (card.id === cardId) {
|
||||
yield call(goToBoard, boardId);
|
||||
}
|
||||
|
||||
yield put(actions.handleCardDelete(card));
|
||||
}
|
||||
|
||||
export default {
|
||||
createCard,
|
||||
handleCardCreate,
|
||||
updateCard,
|
||||
updateCurrentCard,
|
||||
moveCard,
|
||||
moveCurrentCard,
|
||||
transferCard,
|
||||
transferCurrentCard,
|
||||
handleCardUpdate,
|
||||
deleteCard,
|
||||
deleteCurrentCard,
|
||||
handleCardDelete,
|
||||
};
|
||||
Reference in New Issue
Block a user