url_auth_box.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. #include "ui/layers/box_content.h"
  9. class HistoryItem;
  10. struct HistoryMessageMarkupButton;
  11. namespace Main {
  12. class Session;
  13. } // namespace Main
  14. class UrlAuthBox : public Ui::BoxContent {
  15. public:
  16. static void Activate(
  17. not_null<const HistoryItem*> message,
  18. int row,
  19. int column);
  20. static void Activate(
  21. not_null<Main::Session*> session,
  22. const QString &url,
  23. QVariant context);
  24. protected:
  25. void prepare() override;
  26. private:
  27. static void Request(
  28. const MTPDurlAuthResultRequest &request,
  29. not_null<const HistoryItem*> message,
  30. int row,
  31. int column);
  32. static void Request(
  33. const MTPDurlAuthResultRequest &request,
  34. not_null<Main::Session*> session,
  35. const QString &url,
  36. QVariant context);
  37. enum class Result {
  38. None,
  39. Auth,
  40. AuthAndAllowWrite,
  41. };
  42. public:
  43. UrlAuthBox(
  44. QWidget*,
  45. not_null<Main::Session*> session,
  46. const QString &url,
  47. const QString &domain,
  48. UserData *bot,
  49. Fn<void(Result)> callback);
  50. private:
  51. not_null<Ui::RpWidget*> setupContent(
  52. not_null<Main::Session*> session,
  53. const QString &url,
  54. const QString &domain,
  55. UserData *bot,
  56. Fn<void(Result)> callback);
  57. Fn<void()> _callback;
  58. not_null<Ui::RpWidget*> _content;
  59. };