mirror of
https://github.com/openmhz/trunk-server.git
synced 2026-11-12 08:47:40 -05:00
164 lines
4.4 KiB
JavaScript
164 lines
4.4 KiB
JavaScript
import axios, { post } from 'axios';
|
|
//import { browserHistory } from "react-router"
|
|
import * as types from "./talkgroup-constants";
|
|
import { push } from 'connected-react-router';
|
|
|
|
// "Log In" action creators
|
|
function beginImportTalkgroup() {
|
|
return { type: types.IMPORT_TALKGROUP };
|
|
}
|
|
|
|
function importTalkgroupSuccess(data) {
|
|
return {
|
|
type: types.IMPORT_SUCCESS_TALKGROUP,
|
|
data
|
|
};
|
|
}
|
|
|
|
function importTalkgroupError(data) {
|
|
return {
|
|
type: types.IMPORT_ERROR_TALKGROUP,
|
|
data
|
|
};
|
|
}
|
|
|
|
function beginExportTalkgroup() {
|
|
return { type: types.EXPORT_TALKGROUP };
|
|
}
|
|
|
|
function beginFetchTalkgroup() {
|
|
return { type: types.FETCH_TALKGROUP };
|
|
}
|
|
|
|
function fetchTalkgroupSuccess(data) {
|
|
return { type: types.FETCH_SUCCESS_TALKGROUP,
|
|
data };
|
|
}
|
|
|
|
function fetchTalkgroupError(data) {
|
|
return { type: types.FETCH_ERROR_TALKGROUP,
|
|
data };
|
|
}
|
|
|
|
export function changeUrl(url) {
|
|
return dispatch => {
|
|
dispatch(push(url));
|
|
};
|
|
}
|
|
|
|
|
|
// https://stackoverflow.com/questions/41878838/how-do-i-set-multipart-in-axios-with-react
|
|
function fileUpload(shortName, file){
|
|
const url = process.env.REACT_APP_ADMIN_SERVER + "/talkgroups/" + shortName + "/import";
|
|
const formData = new FormData();
|
|
formData.append('file',file)
|
|
const config = {
|
|
headers: {
|
|
'content-type': 'multipart/form-data'
|
|
},
|
|
withCredentials: true
|
|
}
|
|
return post(url, formData,config)
|
|
}
|
|
|
|
// Example of an Async Action Creator
|
|
// http://redux.js.org/docs/advanced/AsyncActions.html
|
|
export function importTalkgroups(
|
|
shortName, file,
|
|
successPath // path to redirect to upon successful log in
|
|
) {
|
|
return dispatch => {
|
|
dispatch(beginImportTalkgroup());
|
|
|
|
return fileUpload(shortName, file)
|
|
.then(response => {
|
|
if (response.data.success) {
|
|
var data = {};
|
|
data.shortName = shortName;
|
|
data.talkgroups = response.data.talkgroups
|
|
dispatch(importTalkgroupSuccess(data));
|
|
// use browserHistory singleton to control navigation. Will generate a
|
|
// state change for time-traveling as we are using the react-router-redux package
|
|
//browserHistory.push(successPath)
|
|
|
|
} else {
|
|
dispatch(importTalkgroupError(response.data.message));
|
|
return response.data.message;
|
|
}
|
|
})
|
|
.catch(function(response) {
|
|
if (response instanceof Error) {
|
|
// Something happened in setting up the request that triggered an Error
|
|
console.log("Error", response.message);
|
|
return response.message;
|
|
}
|
|
});
|
|
};
|
|
}
|
|
|
|
export function exportTalkgroups(
|
|
shortName
|
|
) {
|
|
return dispatch => {
|
|
dispatch(beginExportTalkgroup());
|
|
|
|
return axios
|
|
.get(process.env.REACT_APP_ADMIN_SERVER + "/talkgroups/" + shortName + "/export", { withCredentials: true })
|
|
.then(response => {
|
|
if (response.data.success) {
|
|
var data = {shortName: shortName, talkgroups: response.data.talkgroups}
|
|
dispatch(fetchTalkgroupSuccess( data));
|
|
} else {
|
|
dispatch(fetchTalkgroupError());
|
|
let registerMessage = response.data.message;
|
|
return registerMessage;
|
|
}
|
|
})
|
|
.catch(response => {
|
|
if (response instanceof Error) {
|
|
// Something happened in setting up the request that triggered an Error
|
|
console.log("Error", response.message);
|
|
}
|
|
});
|
|
};
|
|
};
|
|
|
|
|
|
|
|
function shouldFetchTalkgroups(state, shortName) {
|
|
if (!state.talkgroup.items.hasOwnProperty(shortName)) {
|
|
return true
|
|
} else if (state.talkgroup.isWaiting) {
|
|
return false
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
export function fetchTalkgroups(shortName) {
|
|
return (dispatch, getState) => {
|
|
if (shouldFetchTalkgroups(getState(), shortName)) {
|
|
dispatch(beginFetchTalkgroup());
|
|
|
|
return axios
|
|
.get(process.env.REACT_APP_ADMIN_SERVER + "/talkgroups/"+shortName, { withCredentials: true })
|
|
.then(response => {
|
|
if (response.data.success) {
|
|
var data = {shortName: shortName, talkgroups: response.data.talkgroups}
|
|
dispatch(fetchTalkgroupSuccess( data));
|
|
} else {
|
|
dispatch(fetchTalkgroupError());
|
|
let registerMessage = response.data.message;
|
|
return registerMessage;
|
|
}
|
|
})
|
|
.catch(response => {
|
|
if (response instanceof Error) {
|
|
// Something happened in setting up the request that triggered an Error
|
|
console.log("Error", response.message);
|
|
}
|
|
});
|
|
};
|
|
};
|
|
}
|