Project managers, board members, auto-update after reconnection, refactoring

This commit is contained in:
Maksim Eltyshev
2021-06-24 01:05:22 +05:00
parent d6cb1f6683
commit b39119ace4
478 changed files with 21226 additions and 19495 deletions

View File

@@ -1,17 +1,8 @@
import { call, put, select } from 'redux-saga/effects';
import {
createCardMembershipRequest,
createUserRequest,
deleteCardMembershipRequest,
deleteUserRequest,
updateUserAvatarRequest,
updateUserEmailRequest,
updateUserPasswordRequest,
updateUserRequest,
updateUserUsernameRequest,
} from '../requests';
import { currentUserIdSelector, pathSelector } from '../../../selectors';
import { logoutService } from './login';
import request from '../request';
import { currentUserIdSelector, currentUserSelector, pathSelector } from '../../../selectors';
import {
addUserToBoardFilter,
addUserToCard,
@@ -21,14 +12,37 @@ import {
clearUserUsernameUpdateError,
createUser,
deleteUser,
updateUser,
handleUserCreate,
handleUserDelete,
handleUserFromCardRemove,
handleUserToCardAdd,
handleUserUpdate,
removeUserFromBoardFilter,
removeUserFromCard,
updateUser,
updateUserAvatar,
updateUserEmail,
updateUserPassword,
updateUserUsername,
} from '../../../actions';
import api from '../../../api';
export function* createUserService(data) {
yield put(createUser(data));
yield call(createUserRequest, data);
let user;
try {
({ item: user } = yield call(request, api.createUser, data));
} catch (error) {
yield put(createUser.failure(error));
return;
}
yield put(createUser.success(user));
}
export function* handleUserCreateService(user) {
yield put(handleUserCreate(user));
}
export function* clearUserCreateErrorService() {
@@ -37,7 +51,16 @@ export function* clearUserCreateErrorService() {
export function* updateUserService(id, data) {
yield put(updateUser(id, data));
yield call(updateUserRequest, id, data);
let user;
try {
({ item: user } = yield call(request, api.updateUser, id, data));
} catch (error) {
yield put(updateUser.failure(id, error));
return;
}
yield put(updateUser.success(user));
}
export function* updateCurrentUserService(data) {
@@ -46,8 +69,30 @@ export function* updateCurrentUserService(data) {
yield call(updateUserService, id, data);
}
export function* handleUserUpdateService(user) {
const currentUser = yield select(currentUserSelector);
const isCurrent = user.id === currentUser.id;
let users;
if (isCurrent && !currentUser.isAdmin && user.isAdmin) {
({ items: users } = yield call(request, api.getUsers));
}
yield put(handleUserUpdate(user, users, isCurrent));
}
export function* updateUserEmailService(id, data) {
yield call(updateUserEmailRequest, id, data);
yield put(updateUserEmail(id, data));
let user;
try {
({ item: user } = yield call(request, api.updateUserEmail, id, data));
} catch (error) {
yield put(updateUserEmail.failure(id, error));
return;
}
yield put(updateUserEmail.success(user));
}
export function* updateCurrentUserEmailService(data) {
@@ -67,7 +112,17 @@ export function* clearCurrentUserEmailUpdateErrorService() {
}
export function* updateUserPasswordService(id, data) {
yield call(updateUserPasswordRequest, id, data);
yield put(updateUserPassword(id, data));
let user;
try {
({ item: user } = yield call(request, api.updateUserPassword, id, data));
} catch (error) {
yield put(updateUserPassword.failure(id, error));
return;
}
yield put(updateUserPassword.success(user));
}
export function* updateCurrentUserPasswordService(data) {
@@ -87,7 +142,17 @@ export function* clearCurrentUserPasswordUpdateErrorService() {
}
export function* updateUserUsernameService(id, data) {
yield call(updateUserUsernameRequest, id, data);
yield put(updateUserUsername(id, data));
let user;
try {
({ item: user } = yield call(request, api.updateUserUsername, id, data));
} catch (error) {
yield put(updateUserUsername.failure(id, error));
return;
}
yield put(updateUserUsername.success(user));
}
export function* updateCurrentUserUsernameService(data) {
@@ -107,7 +172,17 @@ export function* clearCurrentUserUsernameUpdateErrorService() {
}
export function* updateUserAvatarService(id, data) {
yield call(updateUserAvatarRequest, id, data);
yield put(updateUserAvatar(id));
let user;
try {
({ item: user } = yield call(request, api.updateUserAvatar, id, data));
} catch (error) {
yield put(updateUserAvatar.failure(id, error));
return;
}
yield put(updateUserAvatar.success(user));
}
export function* updateCurrentUserAvatarService(data) {
@@ -118,14 +193,44 @@ export function* updateCurrentUserAvatarService(data) {
export function* deleteUserService(id) {
yield put(deleteUser(id));
yield call(deleteUserRequest, id);
let user;
try {
({ item: user } = yield call(request, api.deleteUser, id));
} catch (error) {
yield put(deleteUser.failure(id, error));
return;
}
yield put(deleteUser.success(user));
}
export function* handleUserDeleteService(user) {
const currentUserId = yield select(currentUserIdSelector);
if (user.id === currentUserId) {
yield call(logoutService);
}
yield put(handleUserDelete(user));
}
export function* addUserToCardService(id, cardId) {
const currentUserId = yield select(currentUserIdSelector);
yield put(addUserToCard(id, cardId, id === currentUserId));
yield call(createCardMembershipRequest, cardId, id);
let cardMembership;
try {
({ item: cardMembership } = yield call(request, api.createCardMembership, cardId, {
userId: id,
}));
} catch (error) {
yield put(addUserToCard.failure(id, cardId, error));
return;
}
yield put(addUserToCard.success(cardMembership));
}
export function* addUserToCurrentCardService(id) {
@@ -134,9 +239,22 @@ export function* addUserToCurrentCardService(id) {
yield call(addUserToCardService, id, cardId);
}
export function* handleUserToCardAddService(cardMembership) {
yield put(handleUserToCardAdd(cardMembership));
}
export function* removeUserFromCardService(id, cardId) {
yield put(removeUserFromCard(id, cardId));
yield call(deleteCardMembershipRequest, cardId, id);
let cardMembership;
try {
({ item: cardMembership } = yield call(request, api.deleteCardMembership, cardId, id));
} catch (error) {
yield put(removeUserFromCard.failure(id, cardId, error));
return;
}
yield put(removeUserFromCard.success(cardMembership));
}
export function* removeUserFromCurrentCardService(id) {
@@ -145,6 +263,10 @@ export function* removeUserFromCurrentCardService(id) {
yield call(removeUserFromCardService, id, cardId);
}
export function* handleUserFromCardRemoveService(cardMembership) {
yield put(handleUserFromCardRemove(cardMembership));
}
export function* addUserToBoardFilterService(id, boardId) {
yield put(addUserToBoardFilter(id, boardId));
}