More consistent handling of errors and invalid/expired sessions

This commit is contained in:
James Nuanez
2020-04-23 17:14:12 -07:00
parent b723d0c022
commit fca352981b
10 changed files with 483 additions and 191 deletions
+44 -10
View File
@@ -1,21 +1,55 @@
import React, { useState, useEffect } from 'react';
import React, { useState, useEffect, useContext } from 'react';
import axios from 'axios';
import { useHistory } from 'react-router-dom';
import { NotificationDispatchContext } from '../../contexts/NotificationContext';
const Sbcs = () => {
let history = useHistory();
const dispatch = useContext(NotificationDispatchContext);
const [ sbcs, setSbcs ] = useState('');
useEffect(() => {
const getAPIData = async () => {
const sbcResults = await axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
url: '/Sbcs',
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`,
},
});
setSbcs(sbcResults.data);
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
const sbcResults = await axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
url: '/Sbcs',
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`,
},
});
setSbcs(sbcResults.data);
} catch (err) {
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.',
});
console.log(err.response || err);
}
}
};
getAPIData();
// eslint-disable-next-line
}, []);
return (
+50 -18
View File
@@ -49,20 +49,19 @@ const AccountForm = props => {
const [ accountSid, setAccountSid ] = useState('');
const [ serviceProviderSid, setServiceProviderSid ] = useState('');
useEffect(() => {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
}
}, [history, dispatch]);
useEffect(() => {
const getAccounts = async () => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
const accountsResponse = await axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
@@ -120,12 +119,29 @@ const AccountForm = props => {
setShowLoader(false);
} catch (err) {
setErrorMessage((err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again');
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.',
});
console.log(err.response || err);
}
setShowLoader(false);
}
};
getAccounts();
}, [props.account_sid, props.type, dispatch, history]);
// eslint-disable-next-line
}, []);
useEffect(() => {
if (props.type === 'add') {
@@ -141,13 +157,29 @@ const AccountForm = props => {
});
setServiceProviderSid(serviceProviders.data[0].service_provider_sid);
} catch (err) {
setErrorMessage((err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again');
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.',
});
console.log(err.response || err);
}
}
};
getServiceProviders();
}
}, [props.type]);
// eslint-disable-next-line
}, []);
const handleSumit = async (e) => {
try {
@@ -277,7 +309,7 @@ const AccountForm = props => {
message: 'Your session has expired. Please log in and try again.',
});
} else {
setErrorMessage((err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again');
setErrorMessage((err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.');
console.log(err.response || err);
}
}
+29 -23
View File
@@ -70,23 +70,19 @@ const ApplicationForm = props => {
const [ applicationSid, setApplicationSid ] = useState([]);
// See if user logged in
useEffect(() => {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
}
}, [history, dispatch]);
// Get Account info
// Account SID needed for setup/add (when creating a new application
// Account list needed add/edit
useEffect(() => {
const getAPIData = async () => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
const accountsPromise = axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
@@ -194,13 +190,23 @@ const ApplicationForm = props => {
}
setShowLoader(false);
} catch (err) {
setErrorMessage('Something went wrong, please try again');
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.message) || 'Unable to get accounts',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get accounts',
});
console.log(err.response || err);
}
setShowLoader(false);
}
};
@@ -358,7 +364,7 @@ const ApplicationForm = props => {
}
} catch (err) {
if (err.response.status === 401) {
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
@@ -368,7 +374,7 @@ const ApplicationForm = props => {
message: 'Your session has expired. Please log in and try again.',
});
} else {
setErrorMessage((err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again');
setErrorMessage((err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.');
console.log(err.response || err);
}
}
+28 -18
View File
@@ -42,20 +42,19 @@ const PhoneNumberForm = props => {
const [ errorMessage, setErrorMessage ] = useState('');
// Check if user is logged in
useEffect(() => {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
}
}, [history, dispatch]);
useEffect(() => {
const getAPIData = async () => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
const sipTrunksPromise = axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
@@ -160,12 +159,23 @@ const PhoneNumberForm = props => {
setShowLoader(false);
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get necessary data',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.',
});
console.log(err.response || err);
}
setShowLoader(false);
}
};
@@ -281,7 +291,7 @@ const PhoneNumberForm = props => {
} catch (err) {
setErrorMessage(
(err.response && err.response.data && err.response.data.msg) ||
'Something went wrong, please try again'
'Something went wrong, please try again.'
);
console.log(err.response || err);
}
+87 -67
View File
@@ -48,91 +48,111 @@ const SipTrunkForm = props => {
const [ showLoader, setShowLoader ] = useState(true);
const [ errorMessage, setErrorMessage ] = useState('');
useEffect(() => {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
}
}, [history, dispatch]);
useEffect(() => {
const getAPIData = async () => {
const sipTrunksPromise = axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
url: `/VoipCarriers`,
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`,
},
});
const sipGatewaysPromise = axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
url: `/SipGateways`,
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`,
},
});
const promiseAllValues = await Promise.all([
sipTrunksPromise,
sipGatewaysPromise,
]);
const allSipTrunks = promiseAllValues[0].data;
const allSipGateways = promiseAllValues[1].data;
setSipTrunks(allSipTrunks);
if (props.type === 'setup' && allSipTrunks.length > 1) {
history.push('/internal/sip-trunks');
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'That page is only accessible during setup.',
message: 'You must log in to view that page.',
});
return;
}
try {
const sipTrunksPromise = axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
url: `/VoipCarriers`,
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`,
},
});
const sipGatewaysPromise = axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
url: `/SipGateways`,
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`,
},
});
const promiseAllValues = await Promise.all([
sipTrunksPromise,
sipGatewaysPromise,
]);
if (props.type === 'edit' || props.type === 'setup') {
const currentSipTrunk = props.type === 'edit'
? allSipTrunks.filter(s => s.voip_carrier_sid === props.voip_carrier_sid)
: allSipTrunks;
const allSipTrunks = promiseAllValues[0].data;
const allSipGateways = promiseAllValues[1].data;
if (props.type === 'edit' && !currentSipTrunk.length) {
setSipTrunks(allSipTrunks);
if (props.type === 'setup' && allSipTrunks.length > 1) {
history.push('/internal/sip-trunks');
dispatch({
type: 'ADD',
level: 'error',
message: 'That SIP trunk does not exist.',
message: 'That page is only accessible during setup.',
});
return;
}
const currentSipGateways = allSipGateways.filter(s => {
return s.voip_carrier_sid === currentSipTrunk[0].voip_carrier_sid;
});
if (props.type === 'edit' || props.type === 'setup') {
const currentSipTrunk = props.type === 'edit'
? allSipTrunks.filter(s => s.voip_carrier_sid === props.voip_carrier_sid)
: allSipTrunks;
if (currentSipTrunk.length) {
setName(currentSipTrunk[0].name);
setDescription(currentSipTrunk[0].description);
setSipGateways(currentSipGateways.map(s => ({
sip_gateway_sid: s.sip_gateway_sid,
ip: s.ipv4,
port: s.port,
inbound: s.inbound === 1,
outbound: s.outbound === 1,
invalidIp: false,
invalidPort: false,
invalidInbound: false,
invalidOutbound: false,
})));
setSipTrunkSid(currentSipTrunk[0].voip_carrier_sid);
if (props.type === 'edit' && !currentSipTrunk.length) {
history.push('/internal/sip-trunks');
dispatch({
type: 'ADD',
level: 'error',
message: 'That SIP trunk does not exist.',
});
return;
}
const currentSipGateways = allSipGateways.filter(s => {
return s.voip_carrier_sid === currentSipTrunk[0].voip_carrier_sid;
});
if (currentSipTrunk.length) {
setName(currentSipTrunk[0].name);
setDescription(currentSipTrunk[0].description);
setSipGateways(currentSipGateways.map(s => ({
sip_gateway_sid: s.sip_gateway_sid,
ip: s.ipv4,
port: s.port,
inbound: s.inbound === 1,
outbound: s.outbound === 1,
invalidIp: false,
invalidPort: false,
invalidInbound: false,
invalidOutbound: false,
})));
setSipTrunkSid(currentSipTrunk[0].voip_carrier_sid);
}
}
setShowLoader(false);
} catch (err) {
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
setErrorMessage('Something went wrong, please try again.');
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get accounts',
});
console.log(err.response || err);
}
setShowLoader(false);
}
setShowLoader(false);
};
getAPIData();
// eslint-disable-next-line
@@ -496,7 +516,7 @@ const SipTrunkForm = props => {
message: 'Your session has expired. Please log in and try again.',
});
} else {
setErrorMessage((err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again');
setErrorMessage((err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.');
console.log(err.response || err);
}
}
+1 -1
View File
@@ -178,7 +178,7 @@ const Login = props => {
} else {
setErrorMessage(
(err.response && err.response.data && err.response.data.msg) ||
'Something went wrong, please try again'
'Something went wrong, please try again.'
);
console.log(err.response || err);
}
+55 -12
View File
@@ -1,10 +1,12 @@
import React, { useEffect, useContext } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { NotificationDispatchContext } from '../../../contexts/NotificationContext';
import InternalTemplate from '../../templates/InternalTemplate';
import TableContent from '../../blocks/TableContent.js';
const AccountsList = () => {
let history = useHistory();
const dispatch = useContext(NotificationDispatchContext);
useEffect(() => {
document.title = `Accounts | Jambonz | Open Source CPAAS`;
@@ -15,6 +17,15 @@ const AccountsList = () => {
//=============================================================================
const getAccounts = async () => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
const results = await axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
@@ -34,12 +45,23 @@ const AccountsList = () => {
}));
return(simplifiedAccounts);
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get account data',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get account data',
});
console.log(err.response || err);
}
}
};
@@ -59,6 +81,16 @@ const AccountsList = () => {
};
const deleteAccount = async accountToDelete => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
// Check if any application or phone number uses this account
const applicationsPromise = axios({
method: 'get',
@@ -143,12 +175,23 @@ const AccountsList = () => {
});
return true;
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to delete account',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to delete account',
});
console.log(err.response || err);
}
return false;
}
};
@@ -1,10 +1,12 @@
import React, { useEffect, useContext } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { NotificationDispatchContext } from '../../../contexts/NotificationContext';
import InternalTemplate from '../../templates/InternalTemplate';
import TableContent from '../../blocks/TableContent.js';
const ApplicationsList = () => {
let history = useHistory();
const dispatch = useContext(NotificationDispatchContext);
useEffect(() => {
document.title = `Applications | Jambonz | Open Source CPAAS`;
@@ -15,6 +17,15 @@ const ApplicationsList = () => {
//=============================================================================
const getApplications = async () => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
const applicationsPromise = axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
@@ -53,12 +64,23 @@ const ApplicationsList = () => {
});
return(simplifiedApplications);
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get application data',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get application data',
});
console.log(err.response || err);
}
}
};
@@ -74,6 +96,15 @@ const ApplicationsList = () => {
};
const deleteApplication = async applicationToDelete => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
await axios({
method: 'delete',
baseURL: process.env.REACT_APP_API_BASE_URL,
@@ -84,12 +115,23 @@ const ApplicationsList = () => {
});
return true;
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get delete application',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to delete application',
});
console.log(err.response || err);
}
return false;
}
};
@@ -1,10 +1,12 @@
import React, { useState, useEffect, useContext } from 'react';
import axios from 'axios';
import { useHistory } from 'react-router-dom';
import { NotificationDispatchContext } from '../../../contexts/NotificationContext';
import InternalTemplate from '../../templates/InternalTemplate';
import TableContent from '../../blocks/TableContent.js';
const PhoneNumbersList = () => {
let history = useHistory();
const dispatch = useContext(NotificationDispatchContext);
useEffect(() => {
document.title = `Phone Number Routing | Jambonz | Open Source CPAAS`;
@@ -15,6 +17,15 @@ const PhoneNumbersList = () => {
//=============================================================================
const getPhoneNumbers = async () => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
const phoneNumbersPromise = axios({
method: 'get',
baseURL: process.env.REACT_APP_API_BASE_URL,
@@ -90,12 +101,23 @@ const PhoneNumbersList = () => {
});
return(combinedData);
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get phone number data',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get phone number data',
});
console.log(err.response || err);
}
}
};
@@ -112,6 +134,15 @@ const PhoneNumbersList = () => {
};
const deletePhoneNumber = async phoneNumber => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
await axios({
method: 'delete',
baseURL: process.env.REACT_APP_API_BASE_URL,
@@ -122,12 +153,23 @@ const PhoneNumbersList = () => {
});
return true;
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to delete phone number',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to delete phone number',
});
console.log(err.response || err);
}
return false;
}
};
@@ -138,6 +180,15 @@ const PhoneNumbersList = () => {
const [ applications, setApplications ] = useState([]);
const handleBulkEditApplications = async (phoneNumberSids, application) => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
for (const sid of phoneNumberSids) {
await axios({
method: 'put',
@@ -153,12 +204,23 @@ const PhoneNumbersList = () => {
}
return true;
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Something went wrong, please try again.',
});
console.log(err.response || err);
}
return false;
}
};
+55 -12
View File
@@ -1,11 +1,13 @@
import React, { useEffect, useContext } from 'react';
import axios from 'axios';
import { useHistory } from 'react-router-dom';
import { NotificationDispatchContext } from '../../../contexts/NotificationContext';
import InternalTemplate from '../../templates/InternalTemplate';
import TableContent from '../../blocks/TableContent.js';
import Sbcs from '../../blocks/Sbcs';
const SipTrunksList = () => {
let history = useHistory();
const dispatch = useContext(NotificationDispatchContext);
useEffect(() => {
document.title = `SIP Trunks | Jambonz | Open Source CPAAS`;
@@ -16,6 +18,16 @@ const SipTrunksList = () => {
//=============================================================================
const getSipTrunks = async () => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
// Get all SIP trunks
const trunkResults = await axios({
method: 'get',
@@ -56,12 +68,23 @@ const SipTrunksList = () => {
}));
return(simplifiedSipTrunks);
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get SIP trunk data',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to get SIP trunk data',
});
console.log(err.response || err);
}
}
};
@@ -83,6 +106,15 @@ const SipTrunksList = () => {
};
const deleteSipTrunk = async sipTrunkToDelete => {
try {
if (!localStorage.getItem('token')) {
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'You must log in to view that page.',
});
return;
}
// delete associated gateways
for (const sid of sipTrunkToDelete.gatewaysSid) {
await axios({
@@ -105,12 +137,23 @@ const SipTrunksList = () => {
});
return true;
} catch (err) {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to delete SIP trunk',
});
console.log(err.response || err);
if (err.response && err.response.status === 401) {
localStorage.removeItem('token');
sessionStorage.clear();
history.push('/');
dispatch({
type: 'ADD',
level: 'error',
message: 'Your session has expired. Please log in and try again.',
});
} else {
dispatch({
type: 'ADD',
level: 'error',
message: (err.response && err.response.data && err.response.data.msg) || 'Unable to delete SIP trunk',
});
console.log(err.response || err);
}
return false;
}
};