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.
88 lines
2.7 KiB
88 lines
2.7 KiB
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)); |
|
} |
|
}
|
|
|