You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.7 KiB
89 lines
2.7 KiB
7 years ago
|
import { effects } from "redux-saga";
|
||
|
import {
|
||
|
isSendingWorktypeRequest,
|
||
|
setWorktypeRequestError,
|
||
|
setWorktypeRequestSuccess,
|
||
|
clearWorktypeRequestError,
|
||
|
clearWorktypeRequestSuccess,
|
||
|
setWorktypeUUID,
|
||
|
setFormWorktypeColor,
|
||
|
setFormWorktypeLabel
|
||
|
} from "../actions/worktype/reducer.actions";
|
||
|
import { getSelfUserRequest } from "../actions/user/saga.actions";
|
||
|
import {
|
||
|
createWorktype,
|
||
|
getWorktype,
|
||
|
updateWorktype,
|
||
|
deleteWorktype
|
||
|
} from "../api/worktype.api";
|
||
|
|
||
|
function* createWorktypeCall(postBody) {
|
||
|
yield effects.put(isSendingWorktypeRequest(true));
|
||
|
const { color, label } = postBody;
|
||
|
try {
|
||
|
return yield effects.call(createWorktype, color, label);
|
||
|
} catch (exception) {
|
||
|
yield effects.put(setWorktypeRequestError(exception));
|
||
|
return false;
|
||
|
} finally {
|
||
|
yield effects.put(isSendingWorktypeRequest(false));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function* readWorktypeCall(uuid) {
|
||
|
yield effects.put(isSendingWorktypeRequest(true));
|
||
|
try {
|
||
|
return yield effects.call(getWorktype, uuid);
|
||
|
} catch (exception) {
|
||
|
yield effects.put(setWorktypeRequestError(exception));
|
||
|
return false;
|
||
|
} finally {
|
||
|
yield effects.put(isSendingWorktypeRequest(false));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function* updateWorktypeCall(payload) {
|
||
|
yield effects.put(isSendingWorktypeRequest(true));
|
||
|
const { uuid, color } = payload;
|
||
|
try {
|
||
|
return yield effects.call(updateWorktype, uuid, color);
|
||
|
} catch (exception) {
|
||
|
yield effects.put(setWorktypeRequestError(exception));
|
||
|
return false;
|
||
|
} finally {
|
||
|
yield effects.put(isSendingWorktypeRequest(false));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export function* createWorktypeFlow(request) {
|
||
|
yield effects.put(clearWorktypeRequestSuccess());
|
||
|
yield effects.put(clearWorktypeRequestError());
|
||
|
const wasSuccessful = yield effects.call(createWorktypeCall, request.data);
|
||
|
if (wasSuccessful) {
|
||
|
yield effects.put(getSelfUserRequest());
|
||
|
yield effects.put(setWorktypeRequestSuccess(wasSuccessful));
|
||
|
yield effects.put(setFormWorktypeColor(""));
|
||
|
yield effects.put(setFormWorktypeLabel(""));
|
||
|
yield effects.put(clearWorktypeRequestError());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export function* readWorktypeFlow(request) {
|
||
|
const wasSuccessful = yield effects.call(readWorktypeCall, request.data);
|
||
|
if (wasSuccessful) {
|
||
|
yield effects.put(setWorktypeUUID(wasSuccessful.uuid));
|
||
|
yield effects.put(setFormWorktypeColor(wasSuccessful.color));
|
||
|
yield effects.put(setFormWorktypeLabel(wasSuccessful.label));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export function* updateWorktypeFlow(request) {
|
||
|
yield effects.put(clearWorktypeRequestSuccess());
|
||
|
yield effects.put(clearWorktypeRequestError());
|
||
|
const wasSuccessful = yield effects.call(updateWorktypeCall, request.data);
|
||
|
if (wasSuccessful) {
|
||
|
yield effects.put(getSelfUserRequest());
|
||
|
yield effects.put(setWorktypeRequestSuccess(wasSuccessful));
|
||
|
}
|
||
|
}
|