Convert libphonenumber utilities to TypeScript, removing unused ones

This commit is contained in:
Evan Hahn 2022-06-01 17:48:16 +00:00 committed by GitHub
parent 9c8fd2a714
commit ab9a50357b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 83 additions and 340 deletions

View file

@ -0,0 +1,51 @@
// Copyright 2014-2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import {
instance as libphonenumber,
PhoneNumberFormat,
} from './libphonenumberInstance';
const FALLBACK_REGION_CODE = 'ZZ';
export function getRegionCodeForNumber(number: string): string {
try {
const parsedNumber = libphonenumber.parse(number);
return (
libphonenumber.getRegionCodeForNumber(parsedNumber) ||
FALLBACK_REGION_CODE
);
} catch (e) {
return FALLBACK_REGION_CODE;
}
}
export function parseNumber(
number: string,
defaultRegionCode?: string
):
| { isValidNumber: false; error: unknown }
| {
isValidNumber: true;
regionCode: undefined | string;
countryCode: undefined | string;
e164: string;
} {
try {
const parsedNumber = libphonenumber.parse(number, defaultRegionCode);
const isValidNumber = libphonenumber.isValidNumber(parsedNumber);
if (!isValidNumber) {
return { error: new Error('Invalid phone number'), isValidNumber: false };
}
return {
isValidNumber: true,
regionCode: libphonenumber.getRegionCodeForNumber(parsedNumber),
countryCode: parsedNumber.getCountryCode()?.toString(),
e164: libphonenumber.format(parsedNumber, PhoneNumberFormat.E164),
};
} catch (error) {
return { error, isValidNumber: false };
}
}

View file

@ -1,4 +1,4 @@
// Copyright 2021 Signal Messenger, LLC
// Copyright 2021-2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import loadImage from 'blueimp-load-image';
@ -7,6 +7,7 @@ import type { MIMEType } from '../types/MIME';
import { IMAGE_JPEG } from '../types/MIME';
import { canvasToBlob } from './canvasToBlob';
import { getValue } from '../RemoteConfig';
import { parseNumber } from './libphonenumberUtil';
enum MediaQualityLevels {
One = 1,
@ -67,18 +68,22 @@ function getMediaQualityLevel(): MediaQualityLevels {
if (!values) {
return DEFAULT_LEVEL;
}
const countryValues = parseCountryValues(values);
const e164 = window.textsecure.storage.user.getNumber();
if (!e164) {
return DEFAULT_LEVEL;
}
const parsedPhoneNumber = window.libphonenumber.util.parseNumber(e164);
const parsedPhoneNumber = parseNumber(e164);
if (!parsedPhoneNumber.isValidNumber) {
return DEFAULT_LEVEL;
}
const level = countryValues.get(parsedPhoneNumber.countryCode);
const countryValues = parseCountryValues(values);
const level = parsedPhoneNumber.countryCode
? countryValues.get(parsedPhoneNumber.countryCode)
: undefined;
if (level) {
return level;
}