From e5361e5780b7ada2e6bde0a10647988ef95fd245 Mon Sep 17 00:00:00 2001 From: "Maureen E. Zitouni" Date: Wed, 18 Sep 2024 22:26:14 -0400 Subject: [PATCH 1/2] Revert "update phone number button names" This reverts commit 86c31bd46910ea65785c982a2cf2e3a193165928. --- src/containers/AdminPhoneNumberInventory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/AdminPhoneNumberInventory.js b/src/containers/AdminPhoneNumberInventory.js index eb5a5d13d..f196eac2c 100644 --- a/src/containers/AdminPhoneNumberInventory.js +++ b/src/containers/AdminPhoneNumberInventory.js @@ -407,7 +407,7 @@ class AdminPhoneNumberInventory extends React.Component { {this.props.params.ownerPerms ? ( - ) : null} - {this.props.params.ownerPerms ? ( - - ) : null} - -

- {this.state.queriedShortcodes ? ( - `This service has ${this.numShortcodes} shortcodes.` - ) : null} -

+ {this.props.params.ownerPerms ? ( + + + + ) : null} () => ({ - mutation: gql` - mutation getShortCodes( - $organizationId: ID! - ) { - getShortCodes( - organizationId: $organizationId - ) { - id - } - } - `, - variables: { - organizationId: ownProps.params.organizationId, - }, - refetchQueries: () => ["getOrganizationData"] - }), buyPhoneNumbers: ownProps => (areaCode, limit) => ({ mutation: gql` mutation buyPhoneNumbers( diff --git a/src/extensions/service-managers/per-campaign-messageservices/index.js b/src/extensions/service-managers/per-campaign-messageservices/index.js index 35aa6a365..9ce681840 100644 --- a/src/extensions/service-managers/per-campaign-messageservices/index.js +++ b/src/extensions/service-managers/per-campaign-messageservices/index.js @@ -245,14 +245,6 @@ export async function onBuyPhoneNumbers({ organization, serviceName, opts }) { }; } -export async function onGetShortcodes({ organization, serviceName, opts }) { - return { - opts: { - skipOrgMessageService: true - } - }; -} - export async function onVendorServiceFullyConfigured({ organization, serviceName diff --git a/src/extensions/service-managers/test-fake-example/index.js b/src/extensions/service-managers/test-fake-example/index.js index 5452c0cf5..bd5fff4e2 100644 --- a/src/extensions/service-managers/test-fake-example/index.js +++ b/src/extensions/service-managers/test-fake-example/index.js @@ -130,13 +130,6 @@ export async function onBuyPhoneNumbers({ opts }) {} -export async function onGetShortcodes({ - organization, - user, - serviceName, - opts -}) {} - export async function onOrganizationServiceVendorSetup({ organization, user, diff --git a/src/extensions/service-vendors/twilio/index.js b/src/extensions/service-vendors/twilio/index.js index 9630d059a..1f6a90d12 100644 --- a/src/extensions/service-vendors/twilio/index.js +++ b/src/extensions/service-vendors/twilio/index.js @@ -772,54 +772,6 @@ async function getPhoneNumbersForService(organization, messagingServiceSid) { .phoneNumbers.list({ limit: 400 }); } -/** - * Figure out if Twilio account has a shortcode and if so, add it - * to the owned_phone_numbers table - * - * TO DO: what happens if you've already added that phone number to the table? - * TO DO: what should we do with allocation fields - */ -export async function getShortCode( - organization, - opts = {}, -) { - - // var for count of short codes - let shortCodeCount = 0; - - // getting the shortcode list from twilio - const twilioInstance = await exports.getTwilio(organization); - const response = await twilioInstance.shortCodes.list(); - - // throw error if we get a bad response - if (response.error) { - throw new Error(`Error collecting ShortCode: ${response.error}`); - } - - // add each shortcode to the table - async function addShortCodeToPhoneNumberTable(shortcode){ - return await r.knex("owned_phone_number").insert({ - organization_id: organization.id, - phone_number: shortcode.shortCode, - service: "twilio", - service_id: shortcode.sid, - area_code: "Shortcode" - //...allocationFields - }); - - } - - // for each response, add it to the table - const shortcodeResponse = response.map(shortcode => { - addShortCodeToPhoneNumberTable(shortcode); - shortCodeCount++; - }); - - // return the count of short codes - return shortCodeCount; - -} - /** * Add bought phone number to a Messaging Service */ @@ -1269,7 +1221,6 @@ export default { getTwilio, getServiceConfig, getMessageServiceSid, - getShortCode, messageServiceLink, updateConfig, getMetadata, diff --git a/src/server/api/mutations/getShortCodes.js b/src/server/api/mutations/getShortCodes.js deleted file mode 100644 index 0f5c829ae..000000000 --- a/src/server/api/mutations/getShortCodes.js +++ /dev/null @@ -1,89 +0,0 @@ -import serviceMap from "../../../extensions/service-vendors"; -import { accessRequired } from "../errors"; -import { getConfig } from "../lib/config"; -import { cacheableData } from "../../models"; -import { processServiceManagers } from "../../../extensions/service-managers"; -import { - getServiceFromOrganization, - getServiceNameFromOrganization -} from "../../../extensions/service-vendors"; -import { jobRunner } from "../../../extensions/job-runners"; -import { Jobs } from "../../../workers/job-processes"; - -export const getShortCodes = async ( - _, - { organizationId }, - { user } -) => { - await accessRequired(user, organizationId, "ADMIN"); - const organization = await cacheableData.organization.load(organizationId); - if ( - !getConfig("EXPERIMENTAL_PHONE_INVENTORY", organization, { - truthy: true - }) && - !getConfig("PHONE_INVENTORY", organization, { truthy: true }) - ) { - throw new Error("Phone inventory management is not enabled"); - } - const serviceName = getServiceNameFromOrganization(organization); - const service = getServiceFromOrganization(organization); - if (!service || !service.hasOwnProperty("getShortCode")) { - throw new Error( - `Service ${serviceName} does not support checking for Short Codes` - ); - } - const opts = {}; - const serviceManagerResult = await processServiceManagers( - "onGetShortcodes", - organization, - { - user, - serviceName, - opts - } - ); - - return await jobRunner.dispatchJob({ - queue_name: `${organizationId}:get_short_codes`, - organization_id: organizationId, - job_type: Jobs.GET_SHORT_CODES, - locks_queue: false, - payload: JSON.stringify({ - opts: serviceManagerResult.opts || opts - }) - }); -}; - -export const deletePhoneNumbers = async ( - _, - { organizationId, areaCode }, - { user } -) => { - await accessRequired(user, organizationId, "OWNER"); - const organization = await cacheableData.organization.load(organizationId); - if ( - !getConfig("EXPERIMENTAL_PHONE_INVENTORY", organization, { - truthy: true - }) && - !getConfig("PHONE_INVENTORY", organization, { truthy: true }) - ) { - throw new Error("Phone inventory management is not enabled"); - } - const serviceName = getServiceNameFromOrganization(organization); - const service = getServiceFromOrganization(organization); - if (!service || !service.hasOwnProperty("buyNumbersInAreaCode")) { - throw new Error( - `Service ${serviceName} does not support phone number buying` - ); - } - - return await jobRunner.dispatchJob({ - queue_name: `${organizationId}:delete_phone_numbers`, - organization_id: organizationId, - job_type: Jobs.DELETE_PHONE_NUMBERS, - locks_queue: false, - payload: JSON.stringify({ - areaCode - }) - }); -}; \ No newline at end of file diff --git a/src/server/api/mutations/index.js b/src/server/api/mutations/index.js index 26a666a46..eb596c0ad 100644 --- a/src/server/api/mutations/index.js +++ b/src/server/api/mutations/index.js @@ -1,7 +1,6 @@ export { bulkSendMessages } from "./bulkSendMessages"; export { bulkUpdateScript } from "./bulkUpdateScript"; export { buyPhoneNumbers, deletePhoneNumbers } from "./buyPhoneNumbers"; -export { getShortCodes} from "./getShortCodes"; export { editOrganization } from "./editOrganization"; export { findNewCampaignContact } from "./findNewCampaignContact"; export { getOptOutMessage } from "./getOptOutMessage"; diff --git a/src/server/api/schema.js b/src/server/api/schema.js index a5bca916c..86730b90a 100644 --- a/src/server/api/schema.js +++ b/src/server/api/schema.js @@ -60,7 +60,6 @@ import { bulkUpdateScript, buyPhoneNumbers, deletePhoneNumbers, - getShortCodes, findNewCampaignContact, getOptOutMessage, joinOrganization, @@ -498,7 +497,6 @@ const rootMutations = { bulkSendMessages, bulkUpdateScript, buyPhoneNumbers, - getShortCodes, deletePhoneNumbers, editOrganization, findNewCampaignContact, diff --git a/src/styles/theme.js b/src/styles/theme.js index b193be663..854fb09d8 100644 --- a/src/styles/theme.js +++ b/src/styles/theme.js @@ -65,30 +65,17 @@ const layouts = { marginLeft: "auto", marginRight: "auto", textAlign: "center" - }, - buttons: { - display: "flex", - justifyContent: "space-evenly", - marginTop: 20 } }; const components = { - buyPhoneNumberButton: { + floatingButton: { margin: 0, top: "auto", right: 20, bottom: 20, left: "auto", - position: "inherit" - }, - checkShortCodesButton: { - marginLeft: 0, - top: "auto", - right: 20, - bottom: 20, - left: "auto", - position: "inherit" + position: "fixed" }, logoDiv: { margin: "50 auto", diff --git a/src/workers/job-processes.js b/src/workers/job-processes.js index e4f1c4817..2102dac13 100644 --- a/src/workers/job-processes.js +++ b/src/workers/job-processes.js @@ -16,7 +16,6 @@ import { clearOldJobs, importScript, buyPhoneNumbers, - getShortCodes, deletePhoneNumbers, startCampaign, extensionJob @@ -45,8 +44,7 @@ export const Jobs = Object.freeze({ BUY_PHONE_NUMBERS: "buy_phone_numbers", DELETE_PHONE_NUMBERS: "delete_phone_numbers", START_CAMPAIGN: "start_campaign", - EXTENSION_JOB: "extension_job", - GET_SHORT_CODES: "get_short_codes" + EXTENSION_JOB: "extension_job" }); const jobMap = Object.freeze({ @@ -54,7 +52,6 @@ const jobMap = Object.freeze({ [Jobs.ASSIGN_TEXTERS]: assignTexters, [Jobs.IMPORT_SCRIPT]: importScript, [Jobs.BUY_PHONE_NUMBERS]: buyPhoneNumbers, - [Jobs.GET_SHORT_CODES]: getShortCodes, [Jobs.DELETE_PHONE_NUMBERS]: deletePhoneNumbers, [Jobs.START_CAMPAIGN]: startCampaign, [Jobs.EXTENSION_JOB]: extensionJob diff --git a/src/workers/jobs.js b/src/workers/jobs.js index 9ef6a3039..9dcb55ab3 100644 --- a/src/workers/jobs.js +++ b/src/workers/jobs.js @@ -1391,40 +1391,6 @@ export async function clearOldJobs(event) { .delete(); } -/* - * This function grabs shortcodes from the serviceVendor - * by hitting the relevant Shortcodes endpoint and adds them to the - * database. It logs to the user how many short codes were identified - * given the credentials provided. -*/ -export async function getShortCodes(job) { - try { - if (!job.organization_id) { - throw Error("organization_id is required"); - } - const payload = JSON.parse(job.payload); - const { opts } = payload; - const organization = await cacheableData.organization.load( - job.organization_id - ); - const serviceClient = getServiceFromOrganization(organization); - const totalPurchased = await serviceClient.getShortCode( - organization, - opts - ); - log.info(`Collected ${totalPurchased} shortcode(s)`, { - status: "COMPLETE", - totalPurchased, - organization_id: job.organization_id - }); - } catch (err) { - log.error(`JOB ${job.id} FAILED: ${err.message}`, err); - console.log("full job error", err); - } finally { - await defensivelyDeleteJob(job); - } -} - export async function buyPhoneNumbers(job) { try { if (!job.organization_id) {