/* * https://github.com/morethanwords/tweb * Copyright (C) 2019-2021 Eduard Kuzmenko * https://github.com/morethanwords/tweb/blob/master/LICENSE */ import type ChatInput from "./input"; import callbackify from "../../helpers/callbackify"; import AutocompletePeerHelper from "./autocompletePeerHelper"; import { processPeerFullForCommands } from "./commandsHelper"; import { AppManagers } from "../../lib/appManagers/managers"; const CLASS_NAME = 'bot-commands'; export default class ChatBotCommands extends AutocompletePeerHelper { private userId: UserId; constructor( appendTo: HTMLElement, chatInput: ChatInput, private managers: AppManagers ) { super(appendTo, undefined, CLASS_NAME, (target) => { const innerHTML = target.querySelector(`.${AutocompletePeerHelper.BASE_CLASS_LIST_ELEMENT}-name`).innerHTML; return chatInput.getReadyToSend(() => { chatInput.messageInput.innerHTML = innerHTML; chatInput.sendMessage(true); this.toggle(true); }); }); } public setUserId(userId: UserId, middleware: () => boolean) { if(this.userId === userId && this.list?.childElementCount) { this.toggle(false); return; } this.userId = userId; return callbackify(this.managers.appProfileManager.getProfile(userId), (full) => { if(!middleware()) return; const filtered = processPeerFullForCommands(userId.toPeerId(false), full); const PADDING_TOP = 8; // const PADDING_BOTTOM = 8; const PADDING_BOTTOM = 24; const height = filtered.length * 50 + PADDING_TOP + PADDING_BOTTOM; this.container.style.setProperty('--height', height + 'px'); this.render(filtered); // this.container.style.top = }); } }