mirror of
https://github.com/plankanban/planka.git
synced 2025-12-26 17:25:03 +03:00
feat: Add ability to move lists between boards (#1208)
This commit is contained in:
@@ -7,6 +7,7 @@ import { createSelector } from 'redux-orm';
|
||||
|
||||
import orm from '../orm';
|
||||
import { selectPath } from './router';
|
||||
import { selectCurrentUserId } from './users';
|
||||
import { isLocalId } from '../utils/local-id';
|
||||
import { BoardContexts, ListTypes } from '../constants/Enums';
|
||||
|
||||
@@ -64,6 +65,22 @@ export const makeSelectFilteredCardIdsByListId = () =>
|
||||
|
||||
export const selectFilteredCardIdsByListId = makeSelectFilteredCardIdsByListId();
|
||||
|
||||
export const selectIsListWithIdAvailableForCurrentUser = createSelector(
|
||||
orm,
|
||||
(_, id) => id,
|
||||
(state) => selectCurrentUserId(state),
|
||||
({ List, User }, id, currentUserId) => {
|
||||
const listModel = List.withId(id);
|
||||
|
||||
if (!listModel) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const currentUserModel = User.withId(currentUserId);
|
||||
return listModel.isAvailableForUser(currentUserModel);
|
||||
},
|
||||
);
|
||||
|
||||
export const selectCurrentListId = createSelector(
|
||||
orm,
|
||||
(state) => selectPath(state).boardId,
|
||||
@@ -154,6 +171,7 @@ export default {
|
||||
selectCardIdsByListId,
|
||||
makeSelectFilteredCardIdsByListId,
|
||||
selectFilteredCardIdsByListId,
|
||||
selectIsListWithIdAvailableForCurrentUser,
|
||||
selectCurrentListId,
|
||||
selectCurrentList,
|
||||
selectFirstFiniteListId,
|
||||
|
||||
@@ -197,6 +197,35 @@ export const selectFavoriteProjectIdsForCurrentUser = createSelector(
|
||||
},
|
||||
);
|
||||
|
||||
export const selectProjectsToBoardsWithEditorRightsForCurrentUser = createSelector(
|
||||
orm,
|
||||
(state) => selectCurrentUserId(state),
|
||||
({ User }, id) => {
|
||||
if (!id) {
|
||||
return id;
|
||||
}
|
||||
|
||||
const userModel = User.withId(id);
|
||||
|
||||
if (!userModel) {
|
||||
return userModel;
|
||||
}
|
||||
|
||||
return userModel.getMembershipProjectsModelArray().map((projectModel) => ({
|
||||
...projectModel.ref,
|
||||
boards: projectModel.getBoardsModelArrayForUserWithId(id).flatMap((boardModel) => {
|
||||
const boardMembersipModel = boardModel.getMembershipModelByUserId(id);
|
||||
|
||||
if (boardMembersipModel.role !== BoardMembershipRoles.EDITOR) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return boardModel.ref;
|
||||
}),
|
||||
}));
|
||||
},
|
||||
);
|
||||
|
||||
export const selectProjectsToListsWithEditorRightsForCurrentUser = createSelector(
|
||||
orm,
|
||||
(state) => selectCurrentUserId(state),
|
||||
@@ -334,6 +363,7 @@ export default {
|
||||
selectFilteredProjectIdsForCurrentUser,
|
||||
selectFilteredProjctIdsByGroupForCurrentUser,
|
||||
selectFavoriteProjectIdsForCurrentUser,
|
||||
selectProjectsToBoardsWithEditorRightsForCurrentUser,
|
||||
selectProjectsToListsWithEditorRightsForCurrentUser,
|
||||
selectBoardIdsForCurrentUser,
|
||||
selectNotificationIdsForCurrentUser,
|
||||
|
||||
Reference in New Issue
Block a user