diff --git a/package.json b/package.json index cce5c276fb..5a6bb45919 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "fs-extra": "5.0.0", "fuse.js": "6.5.3", "glob": "7.1.6", - "google-libphonenumber": "3.2.27", + "google-libphonenumber": "3.2.34", "got": "11.8.5", "heic-convert": "1.2.4", "humanize-duration": "3.27.1", @@ -228,7 +228,7 @@ "@types/direction": "1.0.0", "@types/filesize": "3.6.0", "@types/fs-extra": "5.0.5", - "@types/google-libphonenumber": "7.4.23", + "@types/google-libphonenumber": "7.4.30", "@types/history": "4.7.2", "@types/humanize-duration": "3.18.1", "@types/intl-tel-input": "17.0.4", diff --git a/ts/state/ducks/conversations.ts b/ts/state/ducks/conversations.ts index 8f4e14caf2..01ca37ca05 100644 --- a/ts/state/ducks/conversations.ts +++ b/ts/state/ducks/conversations.ts @@ -12,6 +12,7 @@ import { values, without, } from 'lodash'; +import type { PhoneNumber } from 'google-libphonenumber'; import { clipboard } from 'electron'; import type { ReadonlyDeep } from 'type-fest'; @@ -27,6 +28,7 @@ import type { DurationInSeconds } from '../../util/durations'; import * as universalExpireTimer from '../../util/universalExpireTimer'; import * as Attachment from '../../types/Attachment'; import { isFileDangerous } from '../../util/isFileDangerous'; +import { instance as libphonenumberInstance } from '../../util/libphonenumberInstance'; import type { ShowSendAnywayDialogActionType, ShowErrorModalActionType, @@ -6035,13 +6037,46 @@ export function reducer( return state; } - return { + const { searchTerm } = action.payload; + + // Basic state that we return if we can't parse the term. + const withUpdatedSearchTerm = { ...state, composer: { ...composer, - searchTerm: action.payload.searchTerm, + searchTerm, }, }; + + if (composer.step === ComposerStep.FindByPhoneNumber) { + const { selectedRegion } = composer; + let result: PhoneNumber; + try { + result = libphonenumberInstance.parse(searchTerm, selectedRegion); + } catch { + return withUpdatedSearchTerm; + } + + const region = libphonenumberInstance.getRegionCodeForNumber(result); + if (!result.hasCountryCode() || !region || region === selectedRegion) { + return withUpdatedSearchTerm; + } + + result.clearCountryCode(); + const withoutCountryCode = + libphonenumberInstance.formatInOriginalFormat(result); + + return { + ...state, + composer: { + ...composer, + selectedRegion: region, + searchTerm: withoutCountryCode, + }, + }; + } + + return withUpdatedSearchTerm; } if (action.type === 'SET_COMPOSE_SELECTED_REGION') { diff --git a/yarn.lock b/yarn.lock index 5b003c170d..cc0bfe4759 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5247,10 +5247,10 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/google-libphonenumber@7.4.23": - version "7.4.23" - resolved "https://registry.yarnpkg.com/@types/google-libphonenumber/-/google-libphonenumber-7.4.23.tgz#c44c9125d45f042943694d605fd8d8d796cafc3b" - integrity sha512-C3ydakLTQa8HxtYf9ge4q6uT9krDX8smSIxmmW3oACFi5g5vv6T068PRExF7UyWbWpuYiDG8Nm24q2X5XhcZWw== +"@types/google-libphonenumber@7.4.30": + version "7.4.30" + resolved "https://registry.yarnpkg.com/@types/google-libphonenumber/-/google-libphonenumber-7.4.30.tgz#a47ed8f1f237bd43edbd1c8aff24400b0fd9b2fe" + integrity sha512-Td1X1ayRxePEm6/jPHUBs2tT6TzW1lrVB6ZX7ViPGellyzO/0xMNi+wx5nH6jEitjznq276VGIqjK5qAju0XVw== "@types/graceful-fs@^4.1.3": version "4.1.7" @@ -11072,10 +11072,10 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== -google-libphonenumber@3.2.27: - version "3.2.27" - resolved "https://registry.yarnpkg.com/google-libphonenumber/-/google-libphonenumber-3.2.27.tgz#06a0c1d42be712a6fd4189e2e3b07fc36cacee01" - integrity sha512-et3QlrfWemNPhyUfXZmJG8TfzitfAN71ygNI15+B35zNge/7vyZxkpDsc13oninkf8RAtN2kNEzvMr4L1n3vfQ== +google-libphonenumber@3.2.34: + version "3.2.34" + resolved "https://registry.yarnpkg.com/google-libphonenumber/-/google-libphonenumber-3.2.34.tgz#ef29b53be0f9fb517aaa53d26a541150f86ec921" + integrity sha512-CLwkp0lZvMywh6dCh0T3Fm8XsfJhLAupc8AECwYkJNQBPW8wQPrv/tV0oFKCs8FMw+pTQyNPZoycgBzYjqtTZQ== gopd@^1.0.1: version "1.0.1"