1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-18 12:49:43 +02:00

Mute socket messages in production, fix max-len, update dependencies

This commit is contained in:
Maksim Eltyshev 2019-09-25 02:26:31 +05:00
parent d7cc9a0d56
commit 2398199740
26 changed files with 1157 additions and 1192 deletions

2026
client/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -30,10 +30,10 @@
"axios": "^0.19.0",
"classnames": "^2.2.6",
"connected-react-router": "^6.5.2",
"date-fns": "^2.1.0",
"date-fns": "^2.3.0",
"dequal": "^1.0.0",
"history": "^4.9.0",
"i18next": "^17.0.13",
"history": "^4.10.1",
"i18next": "^17.0.16",
"i18next-browser-languagedetector": "^3.0.3",
"initials": "^3.0.1",
"lodash": "^4.17.15",
@ -42,25 +42,25 @@
"react-beautiful-dnd": "^11.0.5",
"react-datepicker": "^2.9.6",
"react-dom": "^16.9.0",
"react-i18next": "^10.12.2",
"react-i18next": "^10.13.0",
"react-input-mask": "^2.0.4",
"react-redux": "^7.1.1",
"react-router-dom": "^5.0.1",
"react-scripts": "3.1.1",
"react-router-dom": "^5.1.0",
"react-scripts": "3.1.2",
"react-textarea-autosize": "^7.1.0",
"redux": "^4.0.4",
"redux-logger": "^3.0.6",
"redux-orm": "^0.13.3",
"redux-saga": "^1.0.5",
"redux-orm": "^0.14.0",
"redux-saga": "^1.1.1",
"reselect": "^4.0.0",
"sails.io.js": "^1.2.1",
"semantic-ui-react": "^0.88.0",
"socket.io-client": "^2.2.0",
"semantic-ui-react": "^0.88.1",
"socket.io-client": "^2.3.0",
"validator": "^11.1.0",
"whatwg-fetch": "^3.0.0"
},
"devDependencies": {
"eslint": "^6.3.0",
"eslint": "^6.4.0",
"eslint-config-airbnb": "^18.0.1",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",

View file

@ -9,6 +9,7 @@ io.sails.url = Config.API_URL;
io.sails.autoConnect = false;
io.sails.reconnection = true;
io.sails.useCORSRouteToGetCookie = false;
io.sails.environment = process.env.NODE_ENV;
const { socket } = io;

View file

@ -2,5 +2,7 @@ import { useCallback } from 'react';
import useDeepCompareMemoize from './use-deep-compare-memoize';
// eslint-disable-next-line max-len
export default (callback, dependencies) => useCallback(callback, useDeepCompareMemoize(dependencies));
export default (callback, dependencies) => useCallback(
callback,
useDeepCompareMemoize(dependencies),
);

View file

@ -13,7 +13,9 @@ import {
User,
} from './models';
const orm = new ORM();
const orm = new ORM({
stateSelector: ({ db }) => db,
});
orm.register(
User,

View file

@ -4,6 +4,8 @@ import { fetchActionsInCurrentCardService } from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
// eslint-disable-next-line max-len
yield takeLatest(EntryActionTypes.ACTIONS_IN_CURRENT_CARD_FETCH, () => fetchActionsInCurrentCardService());
yield takeLatest(
EntryActionTypes.ACTIONS_IN_CURRENT_CARD_FETCH,
() => fetchActionsInCurrentCardService(),
);
}

View file

@ -10,11 +10,18 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.BOARD_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) => createBoardInCurrentProjectService(data)),
takeLatest(EntryActionTypes.BOARD_UPDATE, ({ payload: { id, data } }) => updateBoardService(id, data)),
takeLatest(EntryActionTypes.BOARD_MOVE, ({ payload: { id, index } }) => moveBoardService(id, index)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.BOARD_IN_CURRENT_PROJECT_CREATE,
({ payload: { data } }) => createBoardInCurrentProjectService(data),
),
takeLatest(
EntryActionTypes.BOARD_UPDATE,
({ payload: { id, data } }) => updateBoardService(id, data),
),
takeLatest(
EntryActionTypes.BOARD_MOVE,
({ payload: { id, index } }) => moveBoardService(id, index),
),
takeLatest(EntryActionTypes.BOARD_DELETE, ({ payload: { id } }) => deleteBoardService(id)),
]);
}

View file

@ -12,12 +12,22 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data } }) => createCardService(listId, data)),
takeLatest(EntryActionTypes.CARD_UPDATE, ({ payload: { id, data } }) => updateCardService(id, data)),
takeLatest(EntryActionTypes.CURRENT_CARD_UPDATE, ({ payload: { data } }) => updateCurrentCardService(data)),
takeLatest(EntryActionTypes.CARD_MOVE, ({ payload: { id, listId, index } }) => moveCardService(id, listId, index)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.CARD_CREATE,
({ payload: { listId, data } }) => createCardService(listId, data),
),
takeLatest(
EntryActionTypes.CARD_UPDATE,
({ payload: { id, data } }) => updateCardService(id, data),
),
takeLatest(
EntryActionTypes.CURRENT_CARD_UPDATE,
({ payload: { data } }) => updateCurrentCardService(data),
),
takeLatest(
EntryActionTypes.CARD_MOVE,
({ payload: { id, listId, index } }) => moveCardService(id, listId, index),
),
takeLatest(EntryActionTypes.CARD_DELETE, ({ payload: { id } }) => deleteCardService(id)),
takeLatest(EntryActionTypes.CURRENT_CARD_DELETE, () => deleteCurrentCardService()),
]);

View file

@ -9,10 +9,17 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.COMMENT_ACTION_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => createCommentActionInCurrentCardService(data)),
takeLatest(EntryActionTypes.COMMENT_ACTION_UPDATE, ({ payload: { id, data } }) => updateCommentActionService(id, data)),
takeLatest(EntryActionTypes.COMMENT_ACTION_DELETE, ({ payload: { id } }) => deleteCommentActionService(id)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.COMMENT_ACTION_IN_CURRENT_CARD_CREATE,
({ payload: { data } }) => createCommentActionInCurrentCardService(data),
),
takeLatest(
EntryActionTypes.COMMENT_ACTION_UPDATE,
({ payload: { id, data } }) => updateCommentActionService(id, data),
),
takeLatest(
EntryActionTypes.COMMENT_ACTION_DELETE,
({ payload: { id } }) => deleteCommentActionService(id),
),
]);
}

View file

@ -15,18 +15,38 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.LABEL_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => createLabelInCurrentBoardService(data)),
takeLatest(EntryActionTypes.LABEL_UPDATE, ({ payload: { id, data } }) => updateLabelService(id, data)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.LABEL_IN_CURRENT_BOARD_CREATE,
({ payload: { data } }) => createLabelInCurrentBoardService(data),
),
takeLatest(
EntryActionTypes.LABEL_UPDATE,
({ payload: { id, data } }) => updateLabelService(id, data),
),
takeLatest(EntryActionTypes.LABEL_DELETE, ({ payload: { id } }) => deleteLabelService(id)),
/* eslint-disable max-len */
takeLatest(EntryActionTypes.LABEL_TO_CARD_ADD, ({ payload: { id, cardId } }) => addLabelToCardService(id, cardId)),
takeLatest(EntryActionTypes.LABEL_TO_CURRENT_CARD_ADD, ({ payload: { id } }) => addLabelToCurrentCardService(id)),
takeLatest(EntryActionTypes.LABEL_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) => removeLabelFromCardService(id, cardId)),
takeLatest(EntryActionTypes.LABEL_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) => removeLabelFromCurrentCardService(id)),
takeLatest(EntryActionTypes.LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) => addLabelToFilterInCurrentBoardService(id)),
takeLatest(EntryActionTypes.LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) => removeLabelFromFilterInCurrentBoardService(id)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.LABEL_TO_CARD_ADD,
({ payload: { id, cardId } }) => addLabelToCardService(id, cardId),
),
takeLatest(
EntryActionTypes.LABEL_TO_CURRENT_CARD_ADD,
({ payload: { id } }) => addLabelToCurrentCardService(id),
),
takeLatest(
EntryActionTypes.LABEL_FROM_CARD_REMOVE,
({ payload: { id, cardId } }) => removeLabelFromCardService(id, cardId),
),
takeLatest(
EntryActionTypes.LABEL_FROM_CURRENT_CARD_REMOVE,
({ payload: { id } }) => removeLabelFromCurrentCardService(id),
),
takeLatest(
EntryActionTypes.LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD,
({ payload: { id } }) => addLabelToFilterInCurrentBoardService(id),
),
takeLatest(
EntryActionTypes.LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE,
({ payload: { id } }) => removeLabelFromFilterInCurrentBoardService(id),
),
]);
}

View file

@ -10,11 +10,18 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.LIST_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => createListInCurrentBoardService(data)),
takeLatest(EntryActionTypes.LIST_UPDATE, ({ payload: { id, data } }) => updateListService(id, data)),
takeLatest(EntryActionTypes.LIST_MOVE, ({ payload: { id, index } }) => moveListService(id, index)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.LIST_IN_CURRENT_BOARD_CREATE,
({ payload: { data } }) => createListInCurrentBoardService(data),
),
takeLatest(
EntryActionTypes.LIST_UPDATE,
({ payload: { id, data } }) => updateListService(id, data),
),
takeLatest(
EntryActionTypes.LIST_MOVE,
({ payload: { id, index } }) => moveListService(id, index),
),
takeLatest(EntryActionTypes.LIST_DELETE, ({ payload: { id } }) => deleteListService(id)),
]);
}

View file

@ -4,6 +4,8 @@ import { deleteNotificationService } from '../services';
import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
// eslint-disable-next-line max-len
yield takeLatest(EntryActionTypes.NOTIFICATION_DELETE, ({ payload: { id } }) => deleteNotificationService(id));
yield takeLatest(
EntryActionTypes.NOTIFICATION_DELETE,
({ payload: { id } }) => deleteNotificationService(id),
);
}

View file

@ -8,9 +8,13 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.MEMBERSHIP_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) => createMembershipInCurrentProjectService(data)),
takeLatest(EntryActionTypes.PROJECT_MEMBERSHIP_DELETE, ({ payload: { id } }) => deleteProjectMembershipService(id)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.MEMBERSHIP_IN_CURRENT_PROJECT_CREATE,
({ payload: { data } }) => createMembershipInCurrentProjectService(data),
),
takeLatest(
EntryActionTypes.PROJECT_MEMBERSHIP_DELETE,
({ payload: { id } }) => deleteProjectMembershipService(id),
),
]);
}

View file

@ -9,10 +9,14 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.PROJECT_CREATE, ({ payload: { data } }) => createProjectService(data)),
takeLatest(EntryActionTypes.CURRENT_PROJECT_UPDATE, ({ payload: { data } }) => updateCurrentProjectService(data)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.PROJECT_CREATE,
({ payload: { data } }) => createProjectService(data),
),
takeLatest(
EntryActionTypes.CURRENT_PROJECT_UPDATE,
({ payload: { data } }) => updateCurrentProjectService(data),
),
takeLatest(EntryActionTypes.CURRENT_PROJECT_DELETE, () => deleteCurrentProjectService()),
]);
}

View file

@ -5,10 +5,14 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
/* eslint-disable max-len */
takeLatest(EntryActionTypes.TASK_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => createTaskInCurrentCardService(data)),
takeLatest(EntryActionTypes.TASK_UPDATE, ({ payload: { id, data } }) => updateTaskService(id, data)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.TASK_IN_CURRENT_CARD_CREATE,
({ payload: { data } }) => createTaskInCurrentCardService(data),
),
takeLatest(
EntryActionTypes.TASK_UPDATE,
({ payload: { id, data } }) => updateTaskService(id, data),
),
takeLatest(EntryActionTypes.TASK_DELETE, ({ payload: { id } }) => deleteTaskService(id)),
]);
}

View file

@ -20,19 +20,42 @@ export default function* () {
yield all([
takeLatest(EntryActionTypes.USER_CREATE, ({ payload: { data } }) => createUserService(data)),
takeLatest(EntryActionTypes.USER_CREATION_ERROR_CLEAR, () => clearUserCreationErrorService()),
/* eslint-disable max-len */
takeLatest(EntryActionTypes.USER_UPDATE, ({ payload: { id, data } }) => updateUserService(id, data)),
takeLatest(EntryActionTypes.CURRENT_USER_UPDATE, ({ payload: { data } }) => updateCurrentUserService(data)),
takeLatest(EntryActionTypes.CURRENT_USER_AVATAR_UPLOAD, ({ payload: { file } }) => uploadCurrentUserAvatarService(file)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.USER_UPDATE,
({ payload: { id, data } }) => updateUserService(id, data),
),
takeLatest(
EntryActionTypes.CURRENT_USER_UPDATE,
({ payload: { data } }) => updateCurrentUserService(data),
),
takeLatest(
EntryActionTypes.CURRENT_USER_AVATAR_UPLOAD,
({ payload: { file } }) => uploadCurrentUserAvatarService(file),
),
takeLatest(EntryActionTypes.USER_DELETE, ({ payload: { id } }) => deleteUserService(id)),
/* eslint-disable max-len */
takeLatest(EntryActionTypes.USER_TO_CARD_ADD, ({ payload: { id, cardId } }) => addUserToCardService(id, cardId)),
takeLatest(EntryActionTypes.USER_TO_CURRENT_CARD_ADD, ({ payload: { id } }) => addUserToCurrentCardService(id)),
takeLatest(EntryActionTypes.USER_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) => removeUserFromCardService(id, cardId)),
takeLatest(EntryActionTypes.USER_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) => removeUserFromCurrentCardService(id)),
takeLatest(EntryActionTypes.USER_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) => addUserToFilterInCurrentBoardService(id)),
takeLatest(EntryActionTypes.USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) => removeUserFromFilterInCurrentBoardService(id)),
/* eslint-enable max-len */
takeLatest(
EntryActionTypes.USER_TO_CARD_ADD,
({ payload: { id, cardId } }) => addUserToCardService(id, cardId),
),
takeLatest(
EntryActionTypes.USER_TO_CURRENT_CARD_ADD,
({ payload: { id } }) => addUserToCurrentCardService(id),
),
takeLatest(
EntryActionTypes.USER_FROM_CARD_REMOVE,
({ payload: { id, cardId } }) => removeUserFromCardService(id, cardId),
),
takeLatest(
EntryActionTypes.USER_FROM_CURRENT_CARD_REMOVE,
({ payload: { id } }) => removeUserFromCurrentCardService(id),
),
takeLatest(
EntryActionTypes.USER_TO_FILTER_IN_CURRENT_BOARD_ADD,
({ payload: { id } }) => addUserToFilterInCurrentBoardService(id),
),
takeLatest(
EntryActionTypes.USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE,
({ payload: { id } }) => removeUserFromFilterInCurrentBoardService(id),
),
]);
}

View file

@ -6,7 +6,9 @@ import EntryActionTypes from '../../../constants/EntryActionTypes';
export default function* () {
yield all([
takeLatest(EntryActionTypes.AUTHENTICATE, ({ payload: { data } }) => authenticateService(data)),
// eslint-disable-next-line max-len
takeLatest(EntryActionTypes.AUTHENTICATION_ERROR_CLEAR, () => clearAuthenticationErrorService()),
takeLatest(
EntryActionTypes.AUTHENTICATION_ERROR_CLEAR,
() => clearAuthenticationErrorService(),
),
]);
}

View file

@ -1,18 +1,15 @@
import { createSelector } from 'redux-orm';
import orm from '../orm';
import { dbSelector } from './common';
import { currentUserIdSelector } from './current';
export const allUsersSelector = createSelector(
orm,
dbSelector,
({ User }) => User.getOrderedUndeletedQuerySet().toRefArray(),
);
export const allUsersExceptCurrentSelector = createSelector(
orm,
dbSelector,
(state) => currentUserIdSelector(state),
({ User }, currentUserId) => User.getOrderedUndeletedQuerySet()
.exclude({

View file

@ -1,12 +1,10 @@
import { createSelector } from 'redux-orm';
import orm from '../orm';
import { dbSelector } from './common';
import { isLocalId } from '../utils/local-id';
export const makeBoardByIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ Board }, id) => {
const boardModel = Board.withId(id);
@ -21,7 +19,6 @@ export const makeBoardByIdSelector = () => createSelector(
export const makeListByIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ List }, id) => {
const listModel = List.withId(id);
@ -39,7 +36,6 @@ export const makeListByIdSelector = () => createSelector(
export const makeCardIdsByListIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ List }, id) => {
const listModel = List.withId(id);
@ -54,7 +50,6 @@ export const makeCardIdsByListIdSelector = () => createSelector(
export const makeCardByIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ Card }, id) => {
const cardModel = Card.withId(id);
@ -72,7 +67,6 @@ export const makeCardByIdSelector = () => createSelector(
export const makeUsersByCardIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ Card }, id) => {
const cardModel = Card.withId(id);
@ -87,7 +81,6 @@ export const makeUsersByCardIdSelector = () => createSelector(
export const makeLabelsByCardIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ Card }, id) => {
const cardModel = Card.withId(id);
@ -102,7 +95,6 @@ export const makeLabelsByCardIdSelector = () => createSelector(
export const makeTasksByCardIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ Card }, id) => {
const cardModel = Card.withId(id);
@ -117,7 +109,6 @@ export const makeTasksByCardIdSelector = () => createSelector(
export const makeLastActionIdByCardIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ Card }, id) => {
const cardModel = Card.withId(id);
@ -134,7 +125,6 @@ export const makeLastActionIdByCardIdSelector = () => createSelector(
export const makeNotificationsTotalByCardIdSelector = () => createSelector(
orm,
dbSelector,
(_, id) => id,
({ Card }, id) => {
const cardModel = Card.withId(id);

View file

@ -1,5 +1,3 @@
export const dbSelector = ({ db }) => db;
export const maxIdSelector = ({ db }, modelName) => db[modelName].meta.maxId;
export const accessTokenSelector = ({ auth: { accessToken } }) => accessToken;

View file

@ -1,7 +1,6 @@
import { createSelector } from 'redux-orm';
import orm from '../orm';
import { dbSelector } from './common';
import { pathSelector } from './path';
import { isLocalId } from '../utils/local-id';
@ -11,7 +10,6 @@ export const currentUserIdSelector = ({ auth: { userId } }) => userId;
export const currentUserSelector = createSelector(
orm,
dbSelector,
(state) => currentUserIdSelector(state),
({ User }, id) => {
if (!id) {
@ -30,7 +28,6 @@ export const currentUserSelector = createSelector(
export const projectsForCurrentUserSelector = createSelector(
orm,
dbSelector,
(state) => currentUserIdSelector(state),
({ User }, id) => {
if (!id) {
@ -68,7 +65,6 @@ export const projectsForCurrentUserSelector = createSelector(
export const notificationsForCurrentUserSelector = createSelector(
orm,
dbSelector,
(state) => currentUserIdSelector(state),
({ User }, id) => {
if (!id) {
@ -97,7 +93,6 @@ export const notificationsForCurrentUserSelector = createSelector(
export const currentProjectSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).projectId,
({ Project }, id) => {
if (!id) {
@ -116,7 +111,6 @@ export const currentProjectSelector = createSelector(
export const membershipsForCurrentProjectSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).projectId,
(state) => currentUserIdSelector(state),
({ Project }, id, currentUserId) => {
@ -146,7 +140,6 @@ export const membershipsForCurrentProjectSelector = createSelector(
export const boardsForCurrentProjectSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).projectId,
({ Project }, id) => {
if (!id) {
@ -171,7 +164,6 @@ export const boardsForCurrentProjectSelector = createSelector(
export const currentBoardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).boardId,
({ Board }, id) => {
if (!id) {
@ -190,7 +182,6 @@ export const currentBoardSelector = createSelector(
export const listIdsForCurrentBoardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).boardId,
({ Board }, id) => {
if (!id) {
@ -212,7 +203,6 @@ export const listIdsForCurrentBoardSelector = createSelector(
export const labelsForCurrentBoardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).boardId,
({ Board }, id) => {
if (!id) {
@ -234,7 +224,6 @@ export const labelsForCurrentBoardSelector = createSelector(
export const filterUsersForCurrentBoardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).boardId,
({ Board }, id) => {
if (!id) {
@ -253,7 +242,6 @@ export const filterUsersForCurrentBoardSelector = createSelector(
export const filterLabelsForCurrentBoardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).boardId,
({ Board }, id) => {
if (!id) {
@ -272,7 +260,6 @@ export const filterLabelsForCurrentBoardSelector = createSelector(
export const currentCardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).cardId,
({ Card }, id) => {
if (!id) {
@ -291,7 +278,6 @@ export const currentCardSelector = createSelector(
export const usersForCurrentCardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).cardId,
({ Card }, id) => {
if (!id) {
@ -310,7 +296,6 @@ export const usersForCurrentCardSelector = createSelector(
export const labelsForCurrentCardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).cardId,
({ Card }, id) => {
if (!id) {
@ -329,7 +314,6 @@ export const labelsForCurrentCardSelector = createSelector(
export const tasksForCurrentCardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).cardId,
({ Card }, id) => {
if (!id) {
@ -354,7 +338,6 @@ export const tasksForCurrentCardSelector = createSelector(
export const actionsForCurrentCardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).cardId,
(state) => currentUserIdSelector(state),
({ Card }, id, currentUserId) => {
@ -384,7 +367,6 @@ export const actionsForCurrentCardSelector = createSelector(
export const notificationIdsForCurrentCardSelector = createSelector(
orm,
dbSelector,
(state) => pathSelector(state).cardId,
({ Card }, id) => {
if (!id) {

View file

@ -2,7 +2,6 @@ import { createSelector } from 'redux-orm';
import isUndefined from 'lodash/isUndefined';
import orm from '../orm';
import { dbSelector } from './common';
import Config from '../constants/Config';
const nextPosition = (items, index, excludedId) => {
@ -30,7 +29,6 @@ const nextPosition = (items, index, excludedId) => {
export const nextBoardPositionSelector = createSelector(
orm,
dbSelector,
(_, projectId) => projectId,
(_, __, index) => index,
(_, __, ___, excludedId) => excludedId,
@ -47,7 +45,6 @@ export const nextBoardPositionSelector = createSelector(
export const nextListPositionSelector = createSelector(
orm,
dbSelector,
(_, boardId) => boardId,
(_, __, index) => index,
(_, __, ___, excludedId) => excludedId,
@ -64,7 +61,6 @@ export const nextListPositionSelector = createSelector(
export const nextCardPositionSelector = createSelector(
orm,
dbSelector,
(_, listId) => listId,
(_, __, index) => index,
(_, __, ___, excludedId) => excludedId,

View file

@ -2,7 +2,6 @@ import { createSelector as createReselectSelector } from 'reselect';
import { createSelector as createReduxOrmSelector } from 'redux-orm';
import orm from '../orm';
import { dbSelector } from './common';
import matchPaths from '../utils/match-paths';
import Paths from '../constants/Paths';
@ -12,12 +11,13 @@ export const pathnameSelector = ({
},
}) => pathname;
// eslint-disable-next-line max-len
export const pathsMatchSelector = createReselectSelector(pathnameSelector, (pathname) => matchPaths(pathname, Object.values(Paths)));
export const pathsMatchSelector = createReselectSelector(
pathnameSelector,
(pathname) => matchPaths(pathname, Object.values(Paths)),
);
export const pathSelector = createReduxOrmSelector(
orm,
dbSelector,
pathsMatchSelector,
({ Project, Board, Card }, pathsMatch) => {
if (pathsMatch) {

View file

@ -1,5 +1,10 @@
// eslint-disable-next-line max-len
const getFullSeconds = ({ startedAt, total }) => (startedAt ? Math.floor((new Date() - startedAt) / 1000) + total : total);
const getFullSeconds = ({ startedAt, total }) => {
if (startedAt) {
return Math.floor((new Date() - startedAt) / 1000) + total;
}
return total;
};
export const createTimer = ({ hours, minutes, seconds }) => ({
startedAt: null,

View file

@ -3699,13 +3699,13 @@
}
},
"knex": {
"version": "0.19.3",
"resolved": "https://registry.npmjs.org/knex/-/knex-0.19.3.tgz",
"integrity": "sha512-HN32QB5PVkUYfvE4UoK/Tbf6UQ7CLEgS0PL8EP6xfonsP0IPZr2M84dy1dIy2KnB5dx+XO6NNEPgfzo8Y8BYzA==",
"version": "0.19.4",
"resolved": "https://registry.npmjs.org/knex/-/knex-0.19.4.tgz",
"integrity": "sha512-FRnR2iWEAoKkrVo3KyiEYeGwUjZOZT2WDko/tn3nCKzQdn6m8+5qSUeYLGa9zM8SwFGJriYKQSSMiDJKLILcMQ==",
"requires": {
"bluebird": "^3.5.5",
"colorette": "1.1.0",
"commander": "^2.20.0",
"commander": "^3.0.1",
"debug": "4.1.1",
"getopts": "2.2.5",
"inherits": "~2.0.4",
@ -3726,9 +3726,9 @@
"integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w=="
},
"commander": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-3.0.1.tgz",
"integrity": "sha512-UNgvDd+csKdc9GD4zjtkHKQbT8Aspt2jCBqNSPp53vAS0L1tS9sXB2TCEOPHJ7kt9bN/niWkYj8T3RQSoMXdSQ=="
},
"debug": {
"version": "4.1.1",

View file

@ -16,7 +16,7 @@
"dotenv": "^8.1.0",
"dotenv-cli": "^2.0.1",
"jsonwebtoken": "^8.5.1",
"knex": "^0.19.3",
"knex": "^0.19.4",
"lodash": "^4.17.15",
"moment": "^2.23.0",
"sails": "^1.2.3",