menu_antispam_validator.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. template <typename Object>
  9. class object_ptr;
  10. class ChannelData;
  11. class UserData;
  12. namespace Ui {
  13. class PopupMenu;
  14. class RpWidget;
  15. } // namespace Ui
  16. namespace Window {
  17. class SessionController;
  18. } // namespace Window
  19. namespace AntiSpamMenu {
  20. class AntiSpamValidator final {
  21. public:
  22. AntiSpamValidator(
  23. not_null<Window::SessionController*> controller,
  24. not_null<ChannelData*> channel);
  25. [[nodiscard]] object_ptr<Ui::RpWidget> createButton() const;
  26. void resolveUser(Fn<void()> finish) const;
  27. [[nodiscard]] UserData *maybeAppendUser() const;
  28. [[nodiscard]] UserId userId() const;
  29. void addAction(not_null<Ui::PopupMenu*> menu, FullMsgId fakeId) const;
  30. void addEventMsgId(FullMsgId fakeId, MsgId realId);
  31. private:
  32. const not_null<ChannelData*> _channel;
  33. const not_null<Window::SessionController*> _controller;
  34. base::flat_map<FullMsgId, MsgId> _itemEventMsgIds;
  35. };
  36. } // namespace AntiSpamMenu