Migration du client sur Typescript
This commit is contained in:
74
client/src/store/reducers/kanboards.ts
Normal file
74
client/src/store/reducers/kanboards.ts
Normal file
@ -0,0 +1,74 @@
|
||||
import { BUILD_KANBOARD_SUCCESS, MOVE_CARD } from "../actions/kanboards";
|
||||
import { CREATE_ISSUE_SUCCESS } from "../actions/issues";
|
||||
|
||||
export const defaultState = {
|
||||
byID: {},
|
||||
};
|
||||
|
||||
export function kanboardsReducer(state = defaultState, action: any) {
|
||||
switch(action.type) {
|
||||
case BUILD_KANBOARD_SUCCESS:
|
||||
return handleBuildKanboardSuccess(state, action);
|
||||
case MOVE_CARD:
|
||||
return handleMoveCard(state, action);
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
||||
|
||||
function handleBuildKanboardSuccess(state: any, action: any) {
|
||||
return {
|
||||
...state,
|
||||
byID: {
|
||||
...state.byID,
|
||||
[action.kanboard.id]: {
|
||||
...action.kanboard,
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function handleMoveCard(state: any, action: any) {
|
||||
const {
|
||||
boardID, fromLaneID,
|
||||
fromPosition, toLaneID,
|
||||
toPosition
|
||||
} = action;
|
||||
|
||||
const kanboard = state.byID[boardID];
|
||||
|
||||
const lanes = [ ...kanboard.lanes ];
|
||||
const fromLane = lanes[fromLaneID];
|
||||
const toLane = lanes[toLaneID];
|
||||
const card = fromLane.cards[fromPosition];
|
||||
|
||||
const fromCards = [ ...fromLane.cards ];
|
||||
if (fromLaneID !== toLaneID) {
|
||||
fromCards.splice(fromPosition, 1);
|
||||
lanes[fromLaneID] = {
|
||||
...fromLane,
|
||||
cards: fromCards,
|
||||
};
|
||||
|
||||
const toCards = [ ...toLane.cards ];
|
||||
toCards.splice(toPosition, 0, card);
|
||||
lanes[toLaneID] = {
|
||||
...toLane,
|
||||
cards: toCards,
|
||||
};
|
||||
} else {
|
||||
fromCards.splice(fromPosition, 1);
|
||||
fromCards.splice(toPosition, 0, card);
|
||||
}
|
||||
|
||||
return {
|
||||
...state,
|
||||
byID: {
|
||||
...state.byID,
|
||||
[boardID]: {
|
||||
...state.byID[boardID],
|
||||
lanes,
|
||||
},
|
||||
}
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user