36 lines
891 B
TypeScript
36 lines
891 B
TypeScript
// 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;
|
|
}
|