diff --git a/src/components/forms/ApplicationForm.js b/src/components/forms/ApplicationForm.js
index 5c92656..241c4ff 100644
--- a/src/components/forms/ApplicationForm.js
+++ b/src/components/forms/ApplicationForm.js
@@ -120,7 +120,7 @@ const ApplicationForm = props => {
applicationsPromise,
]);
- const accounts = promiseAllValues[0].data;
+ const accounts = promiseAllValues[0].data.filter(a => a.service_provider_sid === currentServiceProvider);
const applications = promiseAllValues[1].data;
setAccounts(accounts);
diff --git a/src/components/forms/CarrierForm.js b/src/components/forms/CarrierForm.js
index 7ca74c5..a9fd6f9 100644
--- a/src/components/forms/CarrierForm.js
+++ b/src/components/forms/CarrierForm.js
@@ -5,6 +5,7 @@ import styled from "styled-components/macro";
import { Menu, Dropdown } from "antd";
import { NotificationDispatchContext } from '../../contexts/NotificationContext';
+import { ServiceProviderValueContext } from '../../contexts/ServiceProviderContext';
import Form from '../elements/Form';
import Input from '../elements/Input';
import PasswordInput from '../elements/PasswordInput';
@@ -18,7 +19,6 @@ import Loader from '../blocks/Loader';
import sortSipGateways from '../../helpers/sortSipGateways';
import Select from '../elements/Select';
import handleErrors from "../../helpers/handleErrors";
-import { ServiceProviderValueContext } from '../../contexts/ServiceProviderContext'
const StyledForm = styled(Form)`
@media (max-width: 978.98px) {
@@ -185,6 +185,8 @@ const CarrierForm = (props) => {
]);
const [ applicationValues, setApplicationValues ] = useState([]);
+ const [ accounts, setAccounts ] = useState([]);
+ const [ accountSid, setAccountSid ] = useState('');
const [ carrierSid, setCarrierSid ] = useState('');
const [ showLoader, setShowLoader ] = useState(true);
@@ -220,7 +222,16 @@ const CarrierForm = (props) => {
Authorization: `Bearer ${jwt}`,
},
});
+ const accountsPromise = axios({
+ method: 'get',
+ baseURL: process.env.REACT_APP_API_BASE_URL,
+ url: '/Accounts',
+ headers: {
+ Authorization: `Bearer ${jwt}`,
+ },
+ });
promises.push(applicationPromise);
+ promises.push(accountsPromise);
if (type === 'edit') {
const carrierPromise = axios({
@@ -248,11 +259,12 @@ const CarrierForm = (props) => {
const promiseResponses = await Promise.all(promises);
setApplicationValues(promiseResponses[0].data);
+ setAccounts(promiseResponses[1].data);
if (type === 'edit') {
- const carrier = promiseResponses[1].data;
- const allSipGateways = promiseResponses[2].data;
+ const carrier = promiseResponses[2].data;
+ const allSipGateways = promiseResponses[3].data;
if (!carrier) {
isMounted = false;
@@ -274,6 +286,7 @@ const CarrierForm = (props) => {
setName(carrier.name || '');
setE164(carrier.e164_leading_plus === 1);
setApplication(carrier.application_sid || '');
+ setAccountSid(carrier.account_sid || '');
setAuthenticate(carrier.register_username ? true : false);
setRegister(carrier.requires_register === 1);
setUsername(carrier.register_username || '');
@@ -639,6 +652,7 @@ const CarrierForm = (props) => {
name: name.trim() || null,
e164_leading_plus: e164 ? 1 : 0,
application_sid: application || null,
+ account_sid: accountSid || null,
requires_register: register ? 1 : 0,
register_username: username ? username.trim() : null,
register_password: password ? password : null,
@@ -894,29 +908,65 @@ const CarrierForm = (props) => {
onChange={e => setE164(e.target.checked)}
/>
-
+
+ {accountSid && (
+ <>
+
+
+ >
+ )}
+
{
diff --git a/src/components/forms/PhoneNumberForm.js b/src/components/forms/PhoneNumberForm.js
index 9376492..2dc92a5 100644
--- a/src/components/forms/PhoneNumberForm.js
+++ b/src/components/forms/PhoneNumberForm.js
@@ -2,6 +2,7 @@ import React, { useState, useEffect, useContext, useRef } from 'react';
import { useHistory } from 'react-router-dom';
import axios from 'axios';
import { NotificationDispatchContext } from '../../contexts/NotificationContext';
+import { ServiceProviderValueContext } from '../../contexts/ServiceProviderContext';
import Form from '../elements/Form';
import Input from '../elements/Input';
import Label from '../elements/Label';
@@ -16,6 +17,7 @@ const PhoneNumberForm = props => {
let history = useHistory();
const dispatch = useContext(NotificationDispatchContext);
+ const currentServiceProvider = useContext(ServiceProviderValueContext);
// Refs
const refPhoneNumber = useRef(null);
@@ -358,7 +360,10 @@ const PhoneNumberForm = props => {
name="account"
id="account"
value={account}
- onChange={e => setAccount(e.target.value)}
+ onChange={(e) => {
+ setAccount(e.target.value);
+ setApplication('');
+ }}
invalid={invalidAccount}
ref={refAccount}
>
@@ -368,7 +373,7 @@ const PhoneNumberForm = props => {
) && (
)}
- {accountValues.map(a => (
+ {accountValues.filter(a => a.service_provider_sid === currentServiceProvider).map(a => (
- {applicationValues.map(a => (
+ {applicationValues.filter((a) => {
+ // Map an application to a service provider through it's account_sid
+ const acct = accountValues.find(ac => a.account_sid === ac.account_sid);
+
+ if (account) {
+ return a.account_sid === account;
+ }
+
+ return acct.service_provider_sid === currentServiceProvider;
+ }).map(a => (