// 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; }