intro_password_check.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 "intro/intro_step.h"
  9. #include "core/core_cloud_password.h"
  10. #include "mtproto/sender.h"
  11. #include "base/timer.h"
  12. namespace Ui {
  13. class InputField;
  14. class PasswordInput;
  15. class RoundButton;
  16. class LinkButton;
  17. } // namespace Ui
  18. namespace Intro {
  19. namespace details {
  20. class PasswordCheckWidget final : public Step {
  21. public:
  22. PasswordCheckWidget(
  23. QWidget *parent,
  24. not_null<Main::Account*> account,
  25. not_null<Data*> data);
  26. void setInnerFocus() override;
  27. void activate() override;
  28. void cancelled() override;
  29. void submit() override;
  30. rpl::producer<QString> nextButtonText() const override;
  31. bool hasBack() const override {
  32. return true;
  33. }
  34. protected:
  35. void resizeEvent(QResizeEvent *e) override;
  36. private:
  37. void toRecover();
  38. void toPassword();
  39. int errorTop() const override;
  40. void showReset();
  41. void refreshLang();
  42. void updateControlsGeometry();
  43. void pwdSubmitDone(bool recover, const MTPauth_Authorization &result);
  44. void pwdSubmitFail(const MTP::Error &error);
  45. void codeSubmitDone(const QString &code, const MTPBool &result);
  46. void codeSubmitFail(const MTP::Error &error);
  47. void recoverStartFail(const MTP::Error &error);
  48. void recoverStarted(const MTPauth_PasswordRecovery &result);
  49. void updateDescriptionText();
  50. void handleSrpIdInvalid();
  51. void requestPasswordData();
  52. void checkPasswordHash();
  53. void passwordChecked();
  54. void serverError();
  55. Core::CloudPasswordState _passwordState;
  56. crl::time _lastSrpIdInvalidTime = 0;
  57. bytes::vector _passwordHash;
  58. QString _emailPattern;
  59. object_ptr<Ui::PasswordInput> _pwdField;
  60. object_ptr<Ui::FlatLabel> _pwdHint;
  61. object_ptr<Ui::InputField> _codeField;
  62. object_ptr<Ui::LinkButton> _toRecover;
  63. object_ptr<Ui::LinkButton> _toPassword;
  64. mtpRequestId _sentRequest = 0;
  65. };
  66. } // namespace details
  67. } // namespace Intro