* Do not call dub if API key isn't present * Add `WorkflowOptOutContact` table * Add `sendTo` column to `WorkflowReminder` * Add `workflowOptOutContactRepository` * Add `WorkflowReminderRepository` * Write `sendTo` number when scheduling SMS messages * Add `p-limit` package * Add `determineOptOutType` to `TwilioProvider` * Add `deleteMultipleScheduledSMS` * Create `WorkflowOptOutService` * Add endpoint handler for Twilio SMS responses * Add `isOptedOut` method to `workflowOptOutContactRepository` * Verify phone number is not opted out before scheduling SMS * Use `smsReminderNumber` instead of `sendTo` * Type fix * Add .env variable if opt out is available * Add opt out message to SMS * Import `pLimit` directly in method * Address select comment * Guard against undefined phone number from form * Add early return to `deleteWorkflowReminders` * Add request validation from Twilio * Add fallback message as i18N string * Only delete SMS attendee scheduled reminders
28 lines
787 B
TypeScript
28 lines
787 B
TypeScript
import { dub } from "@calcom/features/auth/lib/dub";
|
|
|
|
export const bulkShortenLinks = async (links: string[]) => {
|
|
if (!process.env.DUB_API_KEY) {
|
|
return links.map((link) => ({ shortLink: link }));
|
|
}
|
|
|
|
const linksToShorten = links.filter((link) => link);
|
|
const results = await dub.links.createMany(
|
|
linksToShorten.map((link) => ({
|
|
domain: "sms.cal.com",
|
|
url: link,
|
|
folderId: "fold_wx3NZDKQYbLDbncSubeMu0ss",
|
|
}))
|
|
);
|
|
return links.map((link) => {
|
|
const createdLink = results.find(
|
|
(result): result is Extract<typeof result, { url: string }> =>
|
|
!("error" in result) && result.url === link
|
|
);
|
|
if (createdLink) {
|
|
return { shortLink: createdLink.shortLink };
|
|
} else {
|
|
return { shortLink: link };
|
|
}
|
|
});
|
|
};
|