// WARNING // THIS FILE HAS BEEN AUTOMATICALLY GENERATED // WITH /frontend/generate/generate_frontend_files.js // MODIFY THE FILE ABOVE IF YOUR NOT SATISFIED // THIS WARNING DOESN'T APPLY TO .tpl FILES... import Cookies from 'js-cookie'; import { {% for obj in data %} {{obj.NAME}}_HAS_ERROR, {{obj.NAME}}_IS_LOADING, {{obj.NAME}}_FETCH_DATA_SUCCESS, {{obj.NAME}}_INVALIDATED, {{obj.NAME}}_EL_INVALIDATED, {{obj.NAME}}_EL_HAS_ERROR, {{obj.NAME}}_EL_IS_LOADING, {{obj.NAME}}_EL_FETCH_DATA_SUCCESS, {% if 'read_only' not in obj or not obj.read_only %} {{obj.NAME}}_EL_IS_SAVING, {{obj.NAME}}_EL_SAVING_DATA_SUCCESS, {% endif %} {% endfor %} } from "./action-types"; ////////////////////////////////// // generic function definitions function _FetchData(pk, api_end_point, _IsLoading, _FetchDataSuccess, _Invalidated, _HasError, pk_required=false) { if (pk_required && pk == ""){ throw "pk shouldn't be empty when requesting a specific element"; } return (dispatch) => { dispatch(_IsLoading(true)); let token = Cookies.get('csrftoken'); fetch(api_end_point, {credentials: 'same-origin',headers: {'X-CSRFToken': token}}) .then((response) => { if (!response.ok) { throw Error(response.statusText); } return response; }) .then((response) => response.json()) .then((obj) => { dispatch(_Invalidated(false)); dispatch(_FetchDataSuccess(obj)); dispatch(_IsLoading(false)); }) .catch(() => dispatch(_HasError(true))); }; } function _ElSaveData(data, api_end_point, _IsLoading, _FetchDataSuccess, _Invalidated, _HasError) { return (dispatch) => { let method = "POST"; let pk = ""; if ('id' in data){ method = "PUT"; pk = data.id; } dispatch(_ElIsSaving(true)); let token = Cookies.get('csrftoken'); fetch(api_end_point+pk, { method: method, credentials: 'same-origin', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'X-CSRFToken': token }, body: JSON.stringify(data) }) .then((response) => { if (!response.ok) { throw Error(response.statusText); } return response; }) .then((response) => response.json()) .then((_El) => { dispatch(_ElInvalidated(false)); dispatch(_ElSaveDataSuccess(_El)); dispatch(_ElIsSaving(false)); }) .catch(() => dispatch(_ElHasError(true))); }; } ///////////////////////////////// {% for obj in data %} export function {{obj.name}}HasError(bool) { return { type: {{obj.NAME}}_HAS_ERROR, hasError: bool }; } export function {{obj.name}}IsLoading(bool) { return { type: {{obj.NAME}}_IS_LOADING, isLoading: bool }; } export function {{obj.name}}Invalidated(bool) { return { type: {{obj.NAME}}_INVALIDATED, invalidated: bool }; } export function {{obj.name}}FetchDataSuccess({{obj.name}}) { {{obj.name}}Invalidated(false) return { type: {{obj.NAME}}_FETCH_DATA_SUCCESS, {{obj.name}}, {{obj.name}}FetchedAt: Date.now() }; } export function {{obj.name}}FetchData() { return _FetchData( "", "{{obj.api_end_point}}", {{obj.name}}IsLoading, {{obj.name}}FetchDataSuccess, {{obj.name}}Invalidated, {{obj.name}}HasError ) } export function {{obj.name}}ElHasError(bool) { return { type: {{obj.NAME}}_EL_HAS_ERROR, hasError: bool }; } export function {{obj.name}}ElInvalidated(bool) { return { type: {{obj.NAME}}_EL_INVALIDATED, invalidated: bool }; } export function {{obj.name}}ElIsLoading(bool) { return { type: {{obj.NAME}}_EL_IS_LOADING, isLoading: bool }; } export function {{obj.name}}ElFetchDataSuccess({{obj.name}}El) { {{obj.name}}ElInvalidated(false) return { type: {{obj.NAME}}_EL_FETCH_DATA_SUCCESS, {{obj.name}}El, {{obj.name}}ElFetchedAt: Date.now() }; } export function {{obj.name}}ElFetchData(pk) { return _FetchData( pk, "{{obj.api_end_point}}", {{obj.name}}ElIsLoading, {{obj.name}}ElFetchDataSuccess, {{obj.name}}ElInvalidated, {{obj.name}}ElHasError, true ) } {% if 'read_only' not in obj or not obj.read_only %} export function {{obj.name}}ElIsSaving(bool) { return { type: {{obj.NAME}}_EL_IS_SAVING, isSaving: bool }; } export function {{obj.name}}ElSaveDataSuccess({{obj.name}}El) { {{obj.name}}ElInvalidated(false) return { type: {{obj.NAME}}_EL_SAVING_DATA_SUCCESS, {{obj.name}}El, {{obj.name}}ElSavedAt: Date.now() }; } export function {{obj.name}}ElSaveData(data) { return _ElSaveData(data, "{{obj.api_end_point}}", {{obj.name}}ElIsLoading, {{obj.name}}ElFetchDataSuccess, {{obj.name}}ElInvalidated, {{obj.name}}ElHasError) } {% endif %} {% endfor %}