From b29883116bb9c25004be47361e5daacd2d7c2620 Mon Sep 17 00:00:00 2001 From: teidesu Date: Sun, 16 May 2021 02:09:51 +0300 Subject: [PATCH] refactor(client): moved handling of inline messages to a separate method --- packages/client/src/client.ts | 8 ++--- .../methods/messages/edit-inline-message.ts | 30 ++-------------- .../src/methods/messages/normalize-inline.ts | 36 +++++++++++++++++++ 3 files changed, 43 insertions(+), 31 deletions(-) create mode 100644 packages/client/src/methods/messages/normalize-inline.ts diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index ea73fbfe..6894d28d 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -86,6 +86,7 @@ import { getHistory } from './methods/messages/get-history' import { getMessageGroup } from './methods/messages/get-message-group' import { getMessages } from './methods/messages/get-messages' import { iterHistory } from './methods/messages/iter-history' +import { _normalizeInline } from './methods/messages/normalize-inline' import { _parseEntities } from './methods/messages/parse-entities' import { pinMessage } from './methods/messages/pin-message' import { readHistory } from './methods/messages/read-history' @@ -1546,13 +1547,13 @@ export interface TelegramClient extends BaseTelegramClient { /** * Edit sent inline message text, media and reply markup. * - * @param id + * @param messageId * Inline message ID, either as a TL object, or as a * TDLib and Bot API compatible string * @param params */ editInlineMessage( - id: tl.TypeInputBotInlineMessageID | string, + messageId: tl.TypeInputBotInlineMessageID | string, params: { /** * New message text @@ -2052,7 +2053,6 @@ export interface TelegramClient extends BaseTelegramClient { * @param fromChatId Target chat ID * @param message Message ID to forward * @param params - */ sendCopy( toChatId: InputPeerLike, @@ -2244,7 +2244,6 @@ export interface TelegramClient extends BaseTelegramClient { * @param chatId ID of the chat, its username, phone or `"me"` or `"self"` * @param text Text of the message * @param params Additional sending parameters - */ sendText( chatId: InputPeerLike, @@ -2949,6 +2948,7 @@ export class TelegramClient extends BaseTelegramClient { getMessageGroup = getMessageGroup getMessages = getMessages iterHistory = iterHistory + protected _normalizeInline = _normalizeInline protected _parseEntities = _parseEntities pinMessage = pinMessage readHistory = readHistory diff --git a/packages/client/src/methods/messages/edit-inline-message.ts b/packages/client/src/methods/messages/edit-inline-message.ts index 090e3de2..a71b1032 100644 --- a/packages/client/src/methods/messages/edit-inline-message.ts +++ b/packages/client/src/methods/messages/edit-inline-message.ts @@ -1,23 +1,11 @@ import { TelegramClient } from '../../client' import { BotKeyboard, InputMediaLike, ReplyMarkup } from '../../types' import { tl } from '@mtcute/tl' -import { parseInlineMessageId } from '../../utils/inline-utils' -import { TelegramConnection } from '@mtcute/core' - -// @extension -interface EditInlineExtension { - _connectionsForInline: Record -} - -// @initialize -function _initializeEditInline(this: TelegramClient) { - this._connectionsForInline = {} -} /** * Edit sent inline message text, media and reply markup. * - * @param id + * @param messageId * Inline message ID, either as a TL object, or as a * TDLib and Bot API compatible string * @param params @@ -25,7 +13,7 @@ function _initializeEditInline(this: TelegramClient) { */ export async function editInlineMessage( this: TelegramClient, - id: tl.TypeInputBotInlineMessageID | string, + messageId: tl.TypeInputBotInlineMessageID | string, params: { /** * New message text @@ -81,19 +69,7 @@ export async function editInlineMessage( let entities: tl.TypeMessageEntity[] | undefined let media: tl.TypeInputMedia | undefined = undefined - if (typeof id === 'string') { - id = parseInlineMessageId(id) - } - - let connection = this.primaryConnection - if (id.dcId !== connection.params.dc.id) { - if (!(id.dcId in this._connectionsForInline)) { - this._connectionsForInline[ - id.dcId - ] = await this.createAdditionalConnection(id.dcId) - } - connection = this._connectionsForInline[id.dcId] - } + const [id, connection] = await this._normalizeInline(messageId) if (params.media) { media = await this._normalizeInputMedia(params.media, params, true) diff --git a/packages/client/src/methods/messages/normalize-inline.ts b/packages/client/src/methods/messages/normalize-inline.ts new file mode 100644 index 00000000..b8a45d93 --- /dev/null +++ b/packages/client/src/methods/messages/normalize-inline.ts @@ -0,0 +1,36 @@ +import { TelegramClient } from '../../client' +import { tl } from '@mtcute/tl' +import { TelegramConnection } from '@mtcute/core' +import { parseInlineMessageId } from '../../utils/inline-utils' + +// @extension +interface InlineExtension { + _connectionsForInline: Record +} + +// @initialize +function _initializeInline(this: TelegramClient) { + this._connectionsForInline = {} +} + +/** @internal */ +export async function _normalizeInline( + this: TelegramClient, + id: string | tl.TypeInputBotInlineMessageID +): Promise<[tl.TypeInputBotInlineMessageID, TelegramConnection]> { + if (typeof id === 'string') { + id = parseInlineMessageId(id) + } + + let connection = this.primaryConnection + if (id.dcId !== connection.params.dc.id) { + if (!(id.dcId in this._connectionsForInline)) { + this._connectionsForInline[ + id.dcId + ] = await this.createAdditionalConnection(id.dcId) + } + connection = this._connectionsForInline[id.dcId] + } + + return [id, connection] +}