Project managers, board members, auto-update after reconnection, refactoring
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user