Added user add functionality

This commit is contained in:
Philipp Czora
2018-07-11 17:02:38 +02:00
parent d35a56e07e
commit 1b6df5ee08
9 changed files with 317 additions and 38 deletions

View File

@@ -1,5 +1,6 @@
// @flow
import { apiClient, PAGE_NOT_FOUND_ERROR } from "../../apiclient";
import type { User } from "../types/User";
import { ThunkDispatch } from "redux-thunk";
const FETCH_USERS = "scm/users/FETCH";
@@ -7,12 +8,21 @@ const FETCH_USERS_SUCCESS = "scm/users/FETCH_SUCCESS";
const FETCH_USERS_FAILURE = "scm/users/FETCH_FAILURE";
const FETCH_USERS_NOTFOUND = "scm/users/FETCH_NOTFOUND";
const ADD_USER = "scm/users/ADD";
const ADD_USER_SUCCESS = "scm/users/ADD_SUCCESS";
const ADD_USER_FAILURE = "scm/users/ADD_FAILURE";
const EDIT_USER = "scm/users/EDIT";
const EDIT_USER_SUCCESS = "scm/users/EDIT_SUCCESS";
const EDIT_USER_FAILURE = "scm/users/EDIT_FAILURE";
const DELETE_USER = "scm/users/DELETE";
const DELETE_USER_SUCCESS = "scm/users/DELETE_SUCCESS";
const DELETE_USER_FAILURE = "scm/users/DELETE_FAILURE";
const USERS_URL = "users";
const CONTENT_TYPE_USER = "application/vnd.scmm-user+json;v=2";
function requestUsers() {
return {
type: FETCH_USERS
@@ -67,6 +77,74 @@ function fetchUsersSuccess(users: any) {
};
}
function requestAddUser(user: User) {
return {
type: ADD_USER,
user
};
}
export function addUser(user: User) {
return function(dispatch: ThunkDispatch) {
dispatch(requestAddUser(user));
return apiClient
.postWithContentType(USERS_URL, user, CONTENT_TYPE_USER)
.then(() => {
dispatch(addUserSuccess());
dispatch(fetchUsers());
})
.catch(err => dispatch(addUserFailure(user, err)));
};
}
function addUserSuccess() {
return {
type: ADD_USER_SUCCESS
};
}
function addUserFailure(user: User, err: Error) {
return {
type: ADD_USER_FAILURE,
payload: err,
user
};
}
function requestAddUser(user: User) {
return {
type: ADD_USER,
user
};
}
export function editUser(user: User) {
return function(dispatch: ThunkDispatch) {
dispatch(requestAddUser(user));
return apiClient
.putWithContentType(USERS_URL + "/" + user.name, user, CONTENT_TYPE_USER)
.then(() => {
dispatch(addUserSuccess());
dispatch(fetchUsers());
})
.catch(err => dispatch(addUserFailure(user, err)));
};
}
function editUserSuccess() {
return {
type: ADD_USER_SUCCESS
};
}
function addUserFailure(user: User, err: Error) {
return {
type: ADD_USER_FAILURE,
payload: err,
user
};
}
function requestDeleteUser(url: string) {
return {
type: DELETE_USER,