2021-05-27 15:57:05 +03:00
|
|
|
import { MaybeDynamic, Message, MtCuteError } from '../types'
|
2021-04-08 12:19:38 +03:00
|
|
|
import { BigInteger } from 'big-integer'
|
2021-06-06 19:23:43 +03:00
|
|
|
import { randomBytes, bufferToBigInt } from '@mtcute/core'
|
2021-04-08 12:19:38 +03:00
|
|
|
import { tl } from '@mtcute/tl'
|
|
|
|
|
|
|
|
export const EMPTY_BUFFER = Buffer.alloc(0)
|
|
|
|
|
|
|
|
export function normalizePhoneNumber(phone: string): string {
|
|
|
|
phone = phone.trim().replace(/[+()\s-]/g, '')
|
|
|
|
if (!phone.match(/^\d+$/)) throw new MtCuteError('Invalid phone number')
|
|
|
|
|
|
|
|
return phone
|
|
|
|
}
|
|
|
|
|
|
|
|
export async function resolveMaybeDynamic<T>(val: MaybeDynamic<T>): Promise<T> {
|
|
|
|
return val instanceof Function ? await val() : await val
|
|
|
|
}
|
|
|
|
|
|
|
|
export function randomUlong(): BigInteger {
|
|
|
|
return bufferToBigInt(randomBytes(8))
|
|
|
|
}
|
|
|
|
|
|
|
|
export function extractChannelIdFromUpdate(
|
|
|
|
upd: tl.TypeUpdate
|
|
|
|
): number | undefined {
|
|
|
|
// holy shit
|
2021-05-27 15:57:05 +03:00
|
|
|
const res =
|
|
|
|
'channelId' in upd
|
|
|
|
? upd.channelId
|
|
|
|
: 'message' in upd &&
|
|
|
|
typeof upd.message !== 'string' &&
|
|
|
|
'peerId' in upd.message &&
|
|
|
|
upd.message.peerId &&
|
|
|
|
'channelId' in upd.message.peerId
|
|
|
|
? upd.message.peerId.channelId
|
|
|
|
: undefined
|
2021-05-10 14:27:57 +03:00
|
|
|
if (res === 0) return undefined
|
|
|
|
return res
|
2021-04-08 12:19:38 +03:00
|
|
|
}
|
2021-04-08 16:17:59 +03:00
|
|
|
|
|
|
|
export function normalizeDate(
|
|
|
|
date: Date | number | undefined
|
|
|
|
): number | undefined {
|
|
|
|
return date
|
|
|
|
? ~~((typeof date === 'number' ? date : date.getTime()) / 1000)
|
|
|
|
: undefined
|
|
|
|
}
|
2021-05-27 15:57:05 +03:00
|
|
|
|
|
|
|
export function normalizeMessageId(
|
|
|
|
msg: Message | number | undefined
|
|
|
|
): number | undefined {
|
|
|
|
return msg ? (typeof msg === 'number' ? msg : msg.id) : undefined
|
|
|
|
}
|