mtcute/packages/client/src/methods/users/get-me.ts
Alina Tumanova f5976a2d74
ESM + end-to-end tests (#11)
* feat: moved tl-runtime to esm and native ArrayBuffers

* feat: migration to esm

* fix(core): web-related fixes

* test: finally, some good fucking e2e

* chore: fixed linters etc

* ci: added e2e to ci

* build(tl): fixed gen-code on node 20

* fix: codegen Uint8Array, not Buffer

never `git reset --hard` kids

* build: only do type-aware linting for `packages/*`

* build: ignore no-unresolved in ci for e2e

* fix: node 16 doesn't have subtle crypto apparently?

* fix(tests): use Uint8Array

for gods sake please can i just merge this already

* ci: don't parallel tasks in ci

because machines are utter garbage and it may just randomly break

* ci: pass secrets to e2e tests

* ci: separate cli command for ci

apparently im retarded

* fix: run codegen in e2e

im actually retarded

* ci: more fixes for e2e

* ci: debugging stuff

* ci: still debugging

* ci: hopefully fix ci???
2023-10-16 19:23:53 +03:00

41 lines
1.3 KiB
TypeScript

import { BaseTelegramClient } from '@mtcute/core'
import { assertTypeIs } from '@mtcute/core/utils.js'
import { User } from '../../types/index.js'
import { getAuthState } from '../auth/_state.js'
/**
* Get currently authorized user's full information
*/
export function getMe(client: BaseTelegramClient): Promise<User> {
return client
.call({
_: 'users.getUsers',
id: [
{
_: 'inputUserSelf',
},
],
})
.then(async ([user]) => {
assertTypeIs('getMe (@ users.getUsers)', user, 'user')
const authState = getAuthState(client)
if (authState.userId !== user.id) {
// there is such possibility, e.g. when
// using a string session without `self`,
// or logging out and re-logging in
// we need to update the fields accordingly,
// and force-save the session
authState.userId = user.id
authState.isBot = Boolean(user.bot)
authState.selfChanged = true
await client.saveStorage()
}
authState.selfUsername = user.username ?? null
return new User(user)
})
}