From 5ca4e2045d69a42a9325fc0b17c15f922f4da7c6 Mon Sep 17 00:00:00 2001 From: Aviv Ben Shahar Date: Fri, 7 Jun 2024 18:12:54 +0300 Subject: [PATCH] feat: support mail option, better display of contacts info --- 0B935763-800C-48CC-9AC6-938A999A89A8.png | Bin 0 -> 11602 bytes info.plist | 69 +++++++++++++++++++ src/main/contacts.ts | 10 ++- src/main/engage-contact.ts | 7 +- src/models/platform.model.ts | 2 +- src/services/platform-url-builder.service.ts | 33 +++++++-- 6 files changed, 107 insertions(+), 14 deletions(-) create mode 100644 0B935763-800C-48CC-9AC6-938A999A89A8.png diff --git a/0B935763-800C-48CC-9AC6-938A999A89A8.png b/0B935763-800C-48CC-9AC6-938A999A89A8.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8c2d0df720ab87466c3dca19cd292462beed3f GIT binary patch literal 11602 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 F{{WfHXX*d| literal 0 HcmV?d00001 diff --git a/info.plist b/info.plist index 5350fb3..f949cf8 100644 --- a/info.plist +++ b/info.plist @@ -8,6 +8,19 @@ Tools connections + 0B935763-800C-48CC-9AC6-938A999A89A8 + + + destinationuid + EA32942B-CBBB-4905-936E-5DE495CCC2A0 + modifiers + 0 + modifiersubtext + + vitoclose + + + 0D0645C0-EC0C-45FA-823E-FCC07F34732B @@ -243,6 +256,55 @@ version 2 + + config + + alfredfiltersresults + + alfredfiltersresultsmatchmode + 0 + argumenttreatemptyqueryasnil + + argumenttrimmode + 0 + argumenttype + 0 + escaping + 102 + keyword + ecm + queuedelaycustom + 3 + queuedelayimmediatelyinitially + + queuedelaymode + 0 + queuemode + 1 + runningsubtext + Searching... + script + ./build/Release/run-node.sh build/contacts.js "$1" "mail" + scriptargtype + 1 + scriptfile + + subtext + Send an email + title + Search for Contacts... + type + 5 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + 0B935763-800C-48CC-9AC6-938A999A89A8 + version + 3 + config @@ -300,6 +362,13 @@ See the workflow codebase in here: https://github.com/Avivbens/alfred-engage-contact uidata + 0B935763-800C-48CC-9AC6-938A999A89A8 + + xpos + 75 + ypos + 475 + 0D0645C0-EC0C-45FA-823E-FCC07F34732B xpos diff --git a/src/main/contacts.ts b/src/main/contacts.ts index d9aff23..09ec136 100644 --- a/src/main/contacts.ts +++ b/src/main/contacts.ts @@ -44,12 +44,10 @@ import { searchContacts } from '@services/search.service.js' platform: platform as SupportedPlatform, } - const subtitle = - phoneNumbers.length > 0 - ? `Phone: ${phoneNumbers[0]}` - : emailAddresses.length > 0 - ? `Email: ${emailAddresses[0]}` - : '' + const emailSubtitle = emailAddresses.length ? `Email: ${emailAddresses[0]}` : '' + const phoneSubtitle = phoneNumbers.length ? `Phone: ${phoneNumbers[0]}` : '' + + const subtitle = [phoneSubtitle, emailSubtitle].filter(Boolean).join(' | ') return { title: `${firstName} ${lastName}`, diff --git a/src/main/engage-contact.ts b/src/main/engage-contact.ts index 50a7b31..5709a9e 100644 --- a/src/main/engage-contact.ts +++ b/src/main/engage-contact.ts @@ -15,7 +15,12 @@ import { buildOpenUrl } from '@services/platform-url-builder.service.js' const { number }: PhoneNumber = parsePhoneNumber(inputPhoneNumber, inputCountryCode) - const openUrl = buildOpenUrl(platform, number) + const parsedInput = { + ...input, + phoneNumber: number, + } + + const openUrl = buildOpenUrl(platform, parsedInput) await execPromise(`open ${openUrl}`) } catch (error) { diff --git a/src/models/platform.model.ts b/src/models/platform.model.ts index 2a2d187..fe7220e 100644 --- a/src/models/platform.model.ts +++ b/src/models/platform.model.ts @@ -1,2 +1,2 @@ -export const SUPPORTED_PLATFORMS = ['whatsapp', 'sms', 'call'] as const +export const SUPPORTED_PLATFORMS = ['whatsapp', 'sms', 'call', 'mail'] as const export type SupportedPlatform = (typeof SUPPORTED_PLATFORMS)[number] diff --git a/src/services/platform-url-builder.service.ts b/src/services/platform-url-builder.service.ts index 9a46fde..e2aa6ce 100644 --- a/src/services/platform-url-builder.service.ts +++ b/src/services/platform-url-builder.service.ts @@ -1,18 +1,39 @@ +import type { ContactPayload } from '@models/contact-payload.model.js' import type { SupportedPlatform } from '@models/platform.model.js' -const PLATFORMS_URLS: Record string> = { - whatsapp: (phoneNumber: string) => `whatsapp://send?phone=${phoneNumber}`, - sms: (phoneNumber: string) => `sms:${phoneNumber}`, - call: (phoneNumber: string) => `tel:${phoneNumber}`, +const PLATFORMS_URLS: Record string> = { + whatsapp: (referrer: string) => `whatsapp://send?phone=${referrer}`, + sms: (referrer: string) => `sms:${referrer}`, + call: (referrer: string) => `tel:${referrer}`, + mail: (referrer: string) => `mailto:${referrer}`, } -export function buildOpenUrl(platform: SupportedPlatform, phoneNumber: string): string { +const EXTRACT_REFERRER: Record = { + call: 'phoneNumber', + mail: 'emailAddress', + sms: 'phoneNumber', + whatsapp: 'phoneNumber', +} + +export function buildOpenUrl(platform: SupportedPlatform, payload: ContactPayload): string { const urlBuilder = PLATFORMS_URLS[platform] if (!urlBuilder) { throw new Error(`Unsupported platform: ${platform}`) } - const res = urlBuilder(phoneNumber) + const referrerKey = EXTRACT_REFERRER[platform] + + if (!referrerKey) { + throw new Error(`Unsupported platform: ${platform}`) + } + + const referrer = payload[referrerKey] + + if (!referrer) { + throw new Error(`Referrer is empty: ${referrerKey}`) + } + + const res = urlBuilder(referrer) return res }