/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once #include "base/type_traits.h" #include "base/observer.h" #include "base/call_delayed.h" #include "mtproto/mtproto_proxy_data.h" class History; namespace Main { class Session; } // namespace Main namespace Window { class SessionController; } // namespace Window namespace App { template [[nodiscard]] inline auto LambdaDelayed(int duration, Guard &&object, Lambda &&lambda) { auto guarded = crl::guard( std::forward(object), std::forward(lambda)); return [saved = std::move(guarded), duration] { auto copy = saved; base::call_delayed(duration, std::move(copy)); }; } bool insertBotCommand(const QString &cmd); void activateBotCommand( Window::SessionController *sessionController, not_null msg, int row, int column); } // namespace App namespace Ui { // Legacy global methods. void showPeerProfile(not_null peer); void showPeerProfile(not_null history); void showPeerHistory(not_null peer, MsgId msgId); void showPeerHistory(not_null history, MsgId msgId); void showChatsList(not_null session); PeerData *getPeerForMouseAction(); bool skipPaintEvent(QWidget *widget, QPaintEvent *event); } // namespace Ui enum ClipStopperType { ClipStopperMediaview, ClipStopperSavedGifsPanel, }; namespace Notify { bool switchInlineBotButtonReceived( not_null session, const QString &query, UserData *samePeerBot = nullptr, MsgId samePeerReplyTo = 0); } // namespace Notify