mirror of
https://github.com/plankanban/planka.git
synced 2025-08-05 05:25:29 +02:00
ref: Refactoring
This commit is contained in:
parent
1f569bdb61
commit
3714bbc06f
189 changed files with 3781 additions and 3486 deletions
|
@ -1,15 +1,16 @@
|
|||
import { createSelector } from 'redux-orm';
|
||||
|
||||
import orm from '../orm';
|
||||
import { currentUserIdSelector } from './user';
|
||||
|
||||
export const usersSelector = createSelector(orm, ({ User }) =>
|
||||
export const selectCurrentUserId = ({ auth: { userId } }) => userId;
|
||||
|
||||
export const selectUsers = createSelector(orm, ({ User }) =>
|
||||
User.getOrderedUndeletedQuerySet().toRefArray(),
|
||||
);
|
||||
|
||||
export const usersExceptCurrentSelector = createSelector(
|
||||
export const selectUsersExceptCurrent = createSelector(
|
||||
orm,
|
||||
(state) => currentUserIdSelector(state),
|
||||
(state) => selectCurrentUserId(state),
|
||||
({ User }, id) =>
|
||||
User.getOrderedUndeletedQuerySet()
|
||||
.exclude({
|
||||
|
@ -17,3 +18,116 @@ export const usersExceptCurrentSelector = createSelector(
|
|||
})
|
||||
.toRefArray(),
|
||||
);
|
||||
|
||||
export const selectCurrentUser = createSelector(
|
||||
orm,
|
||||
(state) => selectCurrentUserId(state),
|
||||
({ User }, id) => {
|
||||
if (!id) {
|
||||
return id;
|
||||
}
|
||||
|
||||
const userModel = User.withId(id);
|
||||
|
||||
if (!userModel) {
|
||||
return userModel;
|
||||
}
|
||||
|
||||
return userModel.ref;
|
||||
},
|
||||
);
|
||||
|
||||
export const selectProjectsForCurrentUser = createSelector(
|
||||
orm,
|
||||
(state) => selectCurrentUserId(state),
|
||||
({ User }, id) => {
|
||||
if (!id) {
|
||||
return id;
|
||||
}
|
||||
|
||||
const userModel = User.withId(id);
|
||||
|
||||
if (!userModel) {
|
||||
return userModel;
|
||||
}
|
||||
|
||||
return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => {
|
||||
const boardsModels = projectModel.getOrderedAvailableBoardsModelArray(userModel.id);
|
||||
|
||||
let notificationsTotal = 0;
|
||||
boardsModels.forEach((boardModel) => {
|
||||
boardModel.cards.toModelArray().forEach((cardModel) => {
|
||||
notificationsTotal += cardModel.getUnreadNotificationsQuerySet().count();
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
...projectModel.ref,
|
||||
notificationsTotal,
|
||||
firstBoardId: boardsModels[0] && boardsModels[0].id,
|
||||
};
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
export const selectProjectsToListsForCurrentUser = createSelector(
|
||||
orm,
|
||||
(state) => selectCurrentUserId(state),
|
||||
({ User }, id) => {
|
||||
if (!id) {
|
||||
return id;
|
||||
}
|
||||
|
||||
const userModel = User.withId(id);
|
||||
|
||||
if (!userModel) {
|
||||
return userModel;
|
||||
}
|
||||
|
||||
return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => ({
|
||||
...projectModel.ref,
|
||||
boards: projectModel.getOrderedMemberBoardsModelArray(id).map((boardModel) => ({
|
||||
...boardModel.ref,
|
||||
lists: boardModel.getOrderedListsQuerySet().toRefArray(),
|
||||
})),
|
||||
}));
|
||||
},
|
||||
);
|
||||
|
||||
export const selectNotificationsForCurrentUser = createSelector(
|
||||
orm,
|
||||
(state) => selectCurrentUserId(state),
|
||||
({ User }, id) => {
|
||||
if (!id) {
|
||||
return id;
|
||||
}
|
||||
|
||||
const userModel = User.withId(id);
|
||||
|
||||
if (!userModel) {
|
||||
return userModel;
|
||||
}
|
||||
|
||||
return userModel
|
||||
.getOrderedUnreadNotificationsQuerySet()
|
||||
.toModelArray()
|
||||
.map((notificationModel) => ({
|
||||
...notificationModel.ref,
|
||||
activity: notificationModel.activity && {
|
||||
...notificationModel.activity.ref,
|
||||
user: notificationModel.activity.user.ref,
|
||||
},
|
||||
card: notificationModel.card && notificationModel.card.ref,
|
||||
}));
|
||||
},
|
||||
);
|
||||
|
||||
export default {
|
||||
selectCurrentUserId,
|
||||
selectUsers,
|
||||
selectUsersExceptCurrent,
|
||||
selectCurrentUser,
|
||||
selectProjectsForCurrentUser,
|
||||
selectProjectsToListsForCurrentUser,
|
||||
selectNotificationsForCurrentUser,
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue