signal-desktop/ts/util/ringrtc/normalizeGroupCallTimestamp.ts

37 lines
891 B
TypeScript
Raw Normal View History

// Copyright 2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
/**
* Normalizes group call timestamps (`addedTime` and `speakerTime`) into numbers. We
* expect RingRTC to send a string, but it sends a malformed number as of this writing,
* RingRTC 2.8.3.
*
* We could probably safely do `Number(fromRingRtc)` and be done, but this is extra-
* careful.
*/
export function normalizeGroupCallTimestamp(
fromRingRtc: unknown
): undefined | number {
let asNumber: number;
switch (typeof fromRingRtc) {
case 'number':
asNumber = fromRingRtc;
break;
case 'string':
asNumber = parseInt(fromRingRtc.slice(0, 15), 10);
break;
case 'bigint':
asNumber = Number(fromRingRtc);
break;
default:
return undefined;
}
if (Number.isNaN(asNumber) || asNumber <= 0) {
return undefined;
}
return asNumber;
}