refactor(client): isSelfPeer method
This commit is contained in:
parent
712c1e8348
commit
886858d9de
5 changed files with 42 additions and 8 deletions
|
@ -15,7 +15,7 @@ import {
|
||||||
import { MemoryStorage } from '@mtcute/core/src/storage/memory.js'
|
import { MemoryStorage } from '@mtcute/core/src/storage/memory.js'
|
||||||
import { tdFileId } from '@mtcute/file-id'
|
import { tdFileId } from '@mtcute/file-id'
|
||||||
|
|
||||||
import { AuthState, getAuthState } from './methods/auth/_state.js'
|
import { AuthState, getAuthState, isSelfPeer } from './methods/auth/_state.js'
|
||||||
import { checkPassword } from './methods/auth/check-password.js'
|
import { checkPassword } from './methods/auth/check-password.js'
|
||||||
import { getPasswordHint } from './methods/auth/get-password-hint.js'
|
import { getPasswordHint } from './methods/auth/get-password-hint.js'
|
||||||
import { logOut } from './methods/auth/log-out.js'
|
import { logOut } from './methods/auth/log-out.js'
|
||||||
|
@ -508,6 +508,12 @@ export interface TelegramClient extends BaseTelegramClient {
|
||||||
on(name: string, handler: (...args: any[]) => void): this
|
on(name: string, handler: (...args: any[]) => void): this
|
||||||
|
|
||||||
getAuthState(): AuthState
|
getAuthState(): AuthState
|
||||||
|
/**
|
||||||
|
* Check if the given peer/input peer is referring to the current user
|
||||||
|
* **Available**: ✅ both users and bots
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
isSelfPeer(peer: tl.TypeInputPeer | tl.TypePeer | tl.TypeInputUser): boolean
|
||||||
/**
|
/**
|
||||||
* Check your Two-Step verification password and log in
|
* Check your Two-Step verification password and log in
|
||||||
*
|
*
|
||||||
|
@ -5237,6 +5243,10 @@ TelegramClient.prototype.getAuthState = function (...args) {
|
||||||
return getAuthState(this, ...args)
|
return getAuthState(this, ...args)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TelegramClient.prototype.isSelfPeer = function (...args) {
|
||||||
|
return isSelfPeer(this, ...args)
|
||||||
|
}
|
||||||
|
|
||||||
TelegramClient.prototype.checkPassword = function (...args) {
|
TelegramClient.prototype.checkPassword = function (...args) {
|
||||||
return checkPassword(this, ...args)
|
return checkPassword(this, ...args)
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,3 +98,27 @@ export async function _onAuthorization(
|
||||||
|
|
||||||
return new User(auth.user)
|
return new User(auth.user)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given peer/input peer is referring to the current user
|
||||||
|
*/
|
||||||
|
export function isSelfPeer(
|
||||||
|
client: BaseTelegramClient,
|
||||||
|
peer: tl.TypeInputPeer | tl.TypePeer | tl.TypeInputUser,
|
||||||
|
): boolean {
|
||||||
|
const state = getAuthState(client)
|
||||||
|
|
||||||
|
switch (peer._) {
|
||||||
|
case 'inputPeerSelf':
|
||||||
|
case 'inputUserSelf':
|
||||||
|
return true
|
||||||
|
case 'inputPeerUser':
|
||||||
|
case 'inputPeerUserFromMessage':
|
||||||
|
case 'inputUser':
|
||||||
|
case 'inputUserFromMessage':
|
||||||
|
case 'peerUser':
|
||||||
|
return peer.userId === state.userId
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { BaseTelegramClient } from '@mtcute/core'
|
||||||
|
|
||||||
import { InputPeerLike } from '../../types/index.js'
|
import { InputPeerLike } from '../../types/index.js'
|
||||||
import { assertTrue, isInputPeerChannel, isInputPeerUser, toInputChannel, toInputUser } from '../../utils/index.js'
|
import { assertTrue, isInputPeerChannel, isInputPeerUser, toInputChannel, toInputUser } from '../../utils/index.js'
|
||||||
import { getAuthState } from '../auth/_state.js'
|
import { isSelfPeer } from '../auth/_state.js'
|
||||||
import { resolvePeer } from '../users/resolve-peer.js'
|
import { resolvePeer } from '../users/resolve-peer.js'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,7 +20,7 @@ export async function reorderUsernames(
|
||||||
if (isInputPeerUser(peer)) {
|
if (isInputPeerUser(peer)) {
|
||||||
// either a bot or self
|
// either a bot or self
|
||||||
|
|
||||||
if (peer._ === 'inputPeerSelf' || peer.userId === getAuthState(client).userId) {
|
if (isSelfPeer(client, peer)) {
|
||||||
// self
|
// self
|
||||||
const r = await client.call({
|
const r = await client.call({
|
||||||
_: 'account.reorderUsernames',
|
_: 'account.reorderUsernames',
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { BaseTelegramClient, MtTypeAssertionError, tl } from '@mtcute/core'
|
||||||
|
|
||||||
import { InputPeerLike, MtInvalidPeerTypeError } from '../../types/index.js'
|
import { InputPeerLike, MtInvalidPeerTypeError } from '../../types/index.js'
|
||||||
import { assertTrue, isInputPeerChannel, isInputPeerUser, toInputChannel } from '../../utils/index.js'
|
import { assertTrue, isInputPeerChannel, isInputPeerUser, toInputChannel } from '../../utils/index.js'
|
||||||
import { getAuthState } from '../auth/_state.js'
|
import { isSelfPeer } from '../auth/_state.js'
|
||||||
import { resolvePeer } from '../users/resolve-peer.js'
|
import { resolvePeer } from '../users/resolve-peer.js'
|
||||||
|
|
||||||
// @available=user
|
// @available=user
|
||||||
|
@ -64,8 +64,8 @@ export async function setChatColor(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isInputPeerUser(peer)) {
|
if (isInputPeerUser(peer)) {
|
||||||
if (peer._ !== 'inputPeerSelf' && peer.userId !== getAuthState(client).userId) {
|
if (!isSelfPeer(client, peer)) {
|
||||||
throw new MtTypeAssertionError('setChatColor', 'inputPeerSelf | inputPeerUser', peer._)
|
throw new MtTypeAssertionError('setChatColor', 'self', peer._)
|
||||||
}
|
}
|
||||||
|
|
||||||
const r = await client.call({
|
const r = await client.call({
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { BaseTelegramClient } from '@mtcute/core'
|
||||||
|
|
||||||
import { InputPeerLike } from '../../types/index.js'
|
import { InputPeerLike } from '../../types/index.js'
|
||||||
import { assertTrue, isInputPeerChannel, isInputPeerUser, toInputChannel, toInputUser } from '../../utils/index.js'
|
import { assertTrue, isInputPeerChannel, isInputPeerUser, toInputChannel, toInputUser } from '../../utils/index.js'
|
||||||
import { getAuthState } from '../auth/_state.js'
|
import { isSelfPeer } from '../auth/_state.js'
|
||||||
import { resolvePeer } from '../users/resolve-peer.js'
|
import { resolvePeer } from '../users/resolve-peer.js'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,7 +35,7 @@ export async function toggleFragmentUsername(
|
||||||
if (isInputPeerUser(peer)) {
|
if (isInputPeerUser(peer)) {
|
||||||
// either a bot or self
|
// either a bot or self
|
||||||
|
|
||||||
if (peer._ === 'inputPeerSelf' || peer.userId === getAuthState(client).userId) {
|
if (isSelfPeer(client, peer)) {
|
||||||
// self
|
// self
|
||||||
const r = await client.call({
|
const r = await client.call({
|
||||||
_: 'account.toggleUsername',
|
_: 'account.toggleUsername',
|
||||||
|
|
Loading…
Reference in a new issue