#pragma once #include #include "slimchat.h" #include "tgclient.h" #include "message.h" class View; class ViewChat; class ViewChatList; class TgTUI { public: TgTUI(); ~TgTUI(); void run(); void stop(); const std::vector& getChats(); private: enum class ViewMode { ChatList = 0, Chat = 1, }; void initDoneCB(); void threadLoop(); void handleNewChat(objptr chat); void handleChatMessages(const std::vector>& msgs); void switchToView(ViewMode vm); TGClient tgclient; ViewMode currentViewMode; View* currentView = nullptr; ViewChatList* viewChatList = nullptr; ViewChat* viewChat = nullptr; std::vector chats; std::vector> messages; bool shouldRun = false; std::thread tuiThread; };