| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /*
- 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 "boxes/peer_list_controllers.h"
- #include "data/data_chat_participant_status.h"
- class AddBotToGroupBoxController
- : public ChatsListBoxController
- , public base::has_weak_ptr {
- public:
- enum class Scope {
- None,
- GroupAdmin,
- ChannelAdmin,
- All,
- };
- static void Start(
- not_null<Window::SessionController*> controller,
- not_null<UserData*> bot,
- Scope scope = Scope::All,
- const QString &token = QString(),
- ChatAdminRights requestedRights = {});
- AddBotToGroupBoxController(
- not_null<Window::SessionController*> controller,
- not_null<UserData*> bot,
- Scope scope,
- const QString &token,
- ChatAdminRights requestedRights);
- Main::Session &session() const override;
- void rowClicked(not_null<PeerListRow*> row) override;
- protected:
- std::unique_ptr<Row> createRow(not_null<History*> history) override;
- void prepareViewHook() override;
- QString emptyBoxText() const override;
- private:
- [[nodiscard]] object_ptr<Ui::RpWidget> prepareAdminnedChats();
- [[nodiscard]] bool onlyAdminToGroup() const;
- [[nodiscard]] bool onlyAdminToChannel() const;
- bool needToCreateRow(not_null<PeerData*> peer) const;
- QString noResultsText() const;
- void updateLabels();
- void addBotToGroup(not_null<PeerData*> chat);
- void requestExistingRights(not_null<ChannelData*> channel);
- const not_null<Window::SessionController*> _controller;
- const not_null<UserData*> _bot;
- const Scope _scope = Scope::None;
- const QString _token;
- const ChatAdminRights _requestedRights;
- ChannelData *_existingRightsChannel = nullptr;
- mtpRequestId _existingRightsRequestId = 0;
- std::optional<ChatAdminRights> _existingRights;
- QString _existingRank;
- TimeId _promotedSince = 0;
- UserId _promotedBy = 0;
- rpl::event_stream<not_null<PeerData*>> _groups;
- rpl::event_stream<not_null<PeerData*>> _channels;
- bool _adminToGroup = false;
- bool _adminToChannel = false;
- bool _memberToGroup = false;
- };
- void AddBotToGroup(
- std::shared_ptr<Ui::Show> show,
- not_null<UserData*> bot,
- not_null<PeerData*> chat,
- const QString &startToken);
|