diff --git a/src/api/index.ts b/src/api/index.ts index 7f84d9f..33e861d 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -194,10 +194,13 @@ export const getFetch = (url: string) => { }); }; -export const postFetch = (url: string, payload: Payload) => { +export const postFetch = ( + url: string, + payload?: Payload +) => { return fetchTransport(url, { method: "POST", - body: JSON.stringify(payload), + ...(payload && { body: JSON.stringify(payload) }), headers: getAuthHeaders(), }); }; @@ -284,6 +287,15 @@ export const postCarrier = (sid: string, payload: Partial) => { ); }; +export const postPredefinedCarrierTemplate = ( + currentServiceProviderSid: string, + predefinedCarrierSid: string +) => { + return postFetch( + `${API_BASE_URL}/ServiceProviders/${currentServiceProviderSid}/PredefinedCarriers/${predefinedCarrierSid}` + ); +}; + export const postSipGateway = (payload: Partial) => { return postFetch>(API_SIP_GATEWAY, payload); }; diff --git a/src/api/types.ts b/src/api/types.ts index 7e4eaf8..24dbf14 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -299,6 +299,7 @@ export interface Carrier { export interface PredefinedCarrier extends Carrier { requires_static_ip: boolean; + predefined_carrier_sid: string; } export interface Gateway { diff --git a/src/containers/internal/views/carriers/form.tsx b/src/containers/internal/views/carriers/form.tsx index e583ec8..937d413 100644 --- a/src/containers/internal/views/carriers/form.tsx +++ b/src/containers/internal/views/carriers/form.tsx @@ -13,6 +13,7 @@ import { putSmppGateway, useApiData, useServiceProviderData, + postPredefinedCarrierTemplate, } from "src/api"; import { DEFAULT_SIP_GATEWAY, @@ -523,9 +524,22 @@ export const CarrierForm = ({ useEffect(() => { if (predefinedName && hasLength(predefinedCarriers)) { - setCarrierStates( - predefinedCarriers.filter((a) => a.name === predefinedName)[0] - ); + const predefinedCarrierSid = predefinedCarriers.find( + (a) => a.name === predefinedName + )?.predefined_carrier_sid; + + if (currentServiceProvider && predefinedCarrierSid) { + postPredefinedCarrierTemplate( + currentServiceProvider.service_provider_sid, + predefinedCarrierSid + ) + .then(({ json }) => { + navigate(`${ROUTE_INTERNAL_CARRIERS}/${json.sid}/edit`); + }) + .catch((error) => { + toastError(error.msg); + }); + } } }, [predefinedName]);