diff --git a/ts/components/StandaloneRegistration.tsx b/ts/components/StandaloneRegistration.tsx index 7b342514e..9beb027c2 100644 --- a/ts/components/StandaloneRegistration.tsx +++ b/ts/components/StandaloneRegistration.tsx @@ -184,7 +184,7 @@ export const StandaloneRegistration = ({ return; } - strictAssert(number && code, 'Missing number or code'); + strictAssert(number != null && code.length > 0, 'Missing number or code'); try { await registerSingleDevice(number, code); diff --git a/ts/services/profiles.ts b/ts/services/profiles.ts index a46ceee88..d0a14cc95 100644 --- a/ts/services/profiles.ts +++ b/ts/services/profiles.ts @@ -242,7 +242,7 @@ async function doGetProfile(c: ConversationModel): Promise { let accessKey = c.get('accessKey'); if (profileKey) { strictAssert( - profileKeyVersion && accessKey, + profileKeyVersion != null && accessKey != null, 'profileKeyVersion and accessKey are derived from profileKey' ); diff --git a/ts/test-node/updater/differential_test.ts b/ts/test-node/updater/differential_test.ts index b594ae89a..ffd0d127d 100644 --- a/ts/test-node/updater/differential_test.ts +++ b/ts/test-node/updater/differential_test.ts @@ -163,7 +163,7 @@ describe('updater/differential', () => { server.listen(0, () => { const addr = server.address(); - strictAssert(typeof addr === 'object' && addr, 'node.js apis'); + strictAssert(typeof addr === 'object' && addr != null, 'node.js apis'); baseUrl = `http://127.0.0.1:${addr.port}`; callback(); diff --git a/ts/textsecure/MessageReceiver.ts b/ts/textsecure/MessageReceiver.ts index 637baa968..299044f41 100644 --- a/ts/textsecure/MessageReceiver.ts +++ b/ts/textsecure/MessageReceiver.ts @@ -2108,7 +2108,7 @@ export default class MessageReceiver if (msg.flags && msg.flags & Proto.DataMessage.Flags.PROFILE_KEY_UPDATE) { strictAssert( - msg.profileKey && msg.profileKey.length > 0, + msg.profileKey != null && msg.profileKey.length > 0, 'PROFILE_KEY_UPDATE without profileKey' ); diff --git a/ts/util/assert.ts b/ts/util/assert.ts index dcc125d25..0c1046ba8 100644 --- a/ts/util/assert.ts +++ b/ts/util/assert.ts @@ -38,11 +38,28 @@ export function assert(condition: unknown, message: string): asserts condition { /** * Throws an error if the condition is falsy, regardless of environment. */ -export function strictAssert( - condition: unknown, + +/** + * Asserts an expression is true. + * + * @param value - An expression to assert is true. + * @param message - An optional message for the assertion error thrown. + */ +export function strictAssert(value: boolean, message: string): asserts value; + +/** + * Asserts a nullable value is non-null. + * + * @param value - A nullable value to assert is non-null. + * @param message - An optional message for the assertion error thrown. + */ +export function strictAssert( + value: T | null | undefined, message: string -): asserts condition { - if (!condition) { +): asserts value is T; + +export function strictAssert(condition: unknown, message: string): void { + if (condition === false || condition == null) { throw new Error(message); } }