mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 13:47:05 +02:00
Moved out part of common code for cloud password to td_ui.
This commit is contained in:
parent
2b13fc9a24
commit
2b71625ffe
13 changed files with 247 additions and 192 deletions
|
@ -1409,8 +1409,6 @@ PRIVATE
|
|||
settings/business/settings_recipients_helper.h
|
||||
settings/business/settings_working_hours.cpp
|
||||
settings/business/settings_working_hours.h
|
||||
settings/cloud_password/settings_cloud_password_common.cpp
|
||||
settings/cloud_password/settings_cloud_password_common.h
|
||||
settings/cloud_password/settings_cloud_password_email.cpp
|
||||
settings/cloud_password/settings_cloud_password_email.h
|
||||
settings/cloud_password/settings_cloud_password_email_confirm.cpp
|
||||
|
@ -1423,6 +1421,8 @@ PRIVATE
|
|||
settings/cloud_password/settings_cloud_password_manage.h
|
||||
settings/cloud_password/settings_cloud_password_start.cpp
|
||||
settings/cloud_password/settings_cloud_password_start.h
|
||||
settings/cloud_password/settings_cloud_password_step.cpp
|
||||
settings/cloud_password/settings_cloud_password_step.h
|
||||
settings/settings_active_sessions.cpp
|
||||
settings/settings_active_sessions.h
|
||||
settings/settings_advanced.cpp
|
||||
|
|
|
@ -7,28 +7,16 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
*/
|
||||
#include "settings/cloud_password/settings_cloud_password_common.h"
|
||||
|
||||
#include "apiwrap.h"
|
||||
#include "base/timer.h"
|
||||
#include "core/application.h"
|
||||
#include "lang/lang_keys.h"
|
||||
#include "lottie/lottie_icon.h"
|
||||
#include "main/main_session.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_email.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_email_confirm.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_hint.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_input.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_manage.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_start.h"
|
||||
#include "ui/boxes/confirm_box.h"
|
||||
#include "settings/settings_common.h"
|
||||
#include "ui/vertical_list.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
#include "ui/widgets/fields/input_field.h"
|
||||
#include "ui/widgets/fields/password_input.h"
|
||||
#include "ui/widgets/labels.h"
|
||||
#include "ui/wrap/vertical_layout.h"
|
||||
#include "ui/vertical_list.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "styles/style_boxes.h"
|
||||
#include "styles/style_layers.h"
|
||||
#include "styles/style_settings.h"
|
||||
|
||||
namespace Settings::CloudPassword {
|
||||
|
@ -100,12 +88,15 @@ BottomButton CreateBottomDisableButton(
|
|||
};
|
||||
}
|
||||
|
||||
void SetupAutoCloseTimer(rpl::lifetime &lifetime, Fn<void()> callback) {
|
||||
void SetupAutoCloseTimer(
|
||||
rpl::lifetime &lifetime,
|
||||
Fn<void()> callback,
|
||||
Fn<crl::time()> lastNonIdleTime) {
|
||||
constexpr auto kTimerCheck = crl::time(1000 * 60);
|
||||
constexpr auto kAutoCloseTimeout = crl::time(1000 * 60 * 10);
|
||||
|
||||
const auto timer = lifetime.make_state<base::Timer>([=] {
|
||||
const auto idle = crl::now() - Core::App().lastNonIdleTime();
|
||||
const auto idle = crl::now() - lastNonIdleTime();
|
||||
if (idle >= kAutoCloseTimeout) {
|
||||
callback();
|
||||
}
|
||||
|
@ -269,105 +260,4 @@ void AddSkipInsteadOfError(not_null<Ui::VerticalLayout*> content) {
|
|||
dummy = nullptr;
|
||||
}
|
||||
|
||||
AbstractStep::AbstractStep(
|
||||
QWidget *parent,
|
||||
not_null<Window::SessionController*> controller)
|
||||
: AbstractSection(parent)
|
||||
, _controller(controller) {
|
||||
}
|
||||
|
||||
not_null<Window::SessionController*> AbstractStep::controller() const {
|
||||
return _controller;
|
||||
}
|
||||
|
||||
Api::CloudPassword &AbstractStep::cloudPassword() {
|
||||
return _controller->session().api().cloudPassword();
|
||||
}
|
||||
|
||||
rpl::producer<AbstractStep::Types> AbstractStep::removeTypes() {
|
||||
return rpl::never<Types>();
|
||||
}
|
||||
|
||||
void AbstractStep::showBack() {
|
||||
_showBack.fire({});
|
||||
}
|
||||
|
||||
void AbstractStep::showOther(Type type) {
|
||||
_showOther.fire_copy(type);
|
||||
}
|
||||
|
||||
void AbstractStep::setFocusCallback(Fn<void()> callback) {
|
||||
_setInnerFocusCallback = callback;
|
||||
}
|
||||
|
||||
rpl::producer<> AbstractStep::showFinishes() const {
|
||||
return _showFinished.events();
|
||||
}
|
||||
|
||||
void AbstractStep::showFinished() {
|
||||
_showFinished.fire({});
|
||||
}
|
||||
|
||||
void AbstractStep::setInnerFocus() {
|
||||
if (_setInnerFocusCallback) {
|
||||
_setInnerFocusCallback();
|
||||
}
|
||||
}
|
||||
|
||||
bool AbstractStep::isPasswordInvalidError(const QString &type) {
|
||||
if (type == u"PASSWORD_HASH_INVALID"_q
|
||||
|| type == u"SRP_PASSWORD_CHANGED"_q) {
|
||||
|
||||
// Most likely the cloud password has been changed on another device.
|
||||
// Quit.
|
||||
_quits.fire(AbstractStep::Types{
|
||||
CloudPasswordStartId(),
|
||||
CloudPasswordInputId(),
|
||||
CloudPasswordHintId(),
|
||||
CloudPasswordEmailId(),
|
||||
CloudPasswordEmailConfirmId(),
|
||||
CloudPasswordManageId(),
|
||||
});
|
||||
controller()->show(
|
||||
Ui::MakeInformBox(tr::lng_cloud_password_expired()),
|
||||
Ui::LayerOption::CloseOther);
|
||||
setStepData(StepData());
|
||||
showBack();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
rpl::producer<Type> AbstractStep::sectionShowOther() {
|
||||
return _showOther.events();
|
||||
}
|
||||
|
||||
rpl::producer<> AbstractStep::sectionShowBack() {
|
||||
return _showBack.events();
|
||||
}
|
||||
|
||||
rpl::producer<std::vector<Type>> AbstractStep::removeFromStack() {
|
||||
return rpl::merge(removeTypes(), _quits.events());
|
||||
}
|
||||
|
||||
void AbstractStep::setStepDataReference(std::any &data) {
|
||||
_stepData = &data;
|
||||
}
|
||||
|
||||
StepData AbstractStep::stepData() const {
|
||||
if (!_stepData || !_stepData->has_value()) {
|
||||
StepData();
|
||||
}
|
||||
const auto my = std::any_cast<StepData>(_stepData);
|
||||
return my ? (*my) : StepData();
|
||||
}
|
||||
|
||||
void AbstractStep::setStepData(StepData data) {
|
||||
if (_stepData) {
|
||||
*_stepData = data;
|
||||
}
|
||||
}
|
||||
|
||||
AbstractStep::~AbstractStep() = default;
|
||||
|
||||
} // namespace Settings::CloudPassword
|
||||
|
|
|
@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "settings/settings_common_session.h"
|
||||
#include "ui/text/text_variant.h"
|
||||
#include "ui/widgets/box_content_divider.h"
|
||||
|
||||
namespace Ui {
|
||||
|
@ -43,7 +43,10 @@ struct StepData {
|
|||
ProcessRecover processRecover;
|
||||
};
|
||||
|
||||
void SetupAutoCloseTimer(rpl::lifetime &lifetime, Fn<void()> callback);
|
||||
void SetupAutoCloseTimer(
|
||||
rpl::lifetime &lifetime,
|
||||
Fn<void()> callback,
|
||||
Fn<crl::time()> lastNonIdleTime);
|
||||
|
||||
void SetupHeader(
|
||||
not_null<Ui::VerticalLayout*> content,
|
||||
|
@ -102,73 +105,5 @@ private:
|
|||
|
||||
};
|
||||
|
||||
class AbstractStep : public AbstractSection {
|
||||
public:
|
||||
using Types = std::vector<Type>;
|
||||
AbstractStep(
|
||||
QWidget *parent,
|
||||
not_null<Window::SessionController*> controller);
|
||||
~AbstractStep();
|
||||
|
||||
void showFinished() override final;
|
||||
void setInnerFocus() override final;
|
||||
[[nodiscard]] rpl::producer<Type> sectionShowOther() override final;
|
||||
[[nodiscard]] rpl::producer<> sectionShowBack() override final;
|
||||
|
||||
[[nodiscard]] rpl::producer<Types> removeFromStack() override final;
|
||||
|
||||
void setStepDataReference(std::any &data) override;
|
||||
|
||||
protected:
|
||||
[[nodiscard]] not_null<Window::SessionController*> controller() const;
|
||||
[[nodiscard]] Api::CloudPassword &cloudPassword();
|
||||
|
||||
[[nodiscard]] virtual rpl::producer<Types> removeTypes();
|
||||
|
||||
bool isPasswordInvalidError(const QString &type);
|
||||
|
||||
void showBack();
|
||||
void showOther(Type type);
|
||||
|
||||
void setFocusCallback(Fn<void()> callback);
|
||||
|
||||
[[nodiscard]] rpl::producer<> showFinishes() const;
|
||||
|
||||
StepData stepData() const;
|
||||
void setStepData(StepData data);
|
||||
|
||||
private:
|
||||
const not_null<Window::SessionController*> _controller;
|
||||
|
||||
Fn<void()> _setInnerFocusCallback;
|
||||
|
||||
rpl::event_stream<> _showFinished;
|
||||
rpl::event_stream<Type> _showOther;
|
||||
rpl::event_stream<> _showBack;
|
||||
rpl::event_stream<Types> _quits;
|
||||
|
||||
std::any *_stepData;
|
||||
|
||||
};
|
||||
|
||||
template <typename SectionType>
|
||||
class TypedAbstractStep : public AbstractStep {
|
||||
public:
|
||||
using AbstractStep::AbstractStep;
|
||||
|
||||
void setStepDataReference(std::any &data) override final {
|
||||
AbstractStep::setStepDataReference(data);
|
||||
static_cast<SectionType*>(this)->setupContent();
|
||||
}
|
||||
|
||||
[[nodiscard]] static Type Id() {
|
||||
return SectionFactory<SectionType>::Instance();
|
||||
}
|
||||
[[nodiscard]] Type id() const final override {
|
||||
return Id();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
} // namespace Settings::CloudPassword
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "settings/cloud_password/settings_cloud_password_common.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_email_confirm.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_manage.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_step.h"
|
||||
#include "ui/vertical_list.h"
|
||||
#include "ui/boxes/confirm_box.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
|
|
|
@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "settings/cloud_password/settings_cloud_password_input.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_manage.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_start.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_step.h"
|
||||
#include "ui/vertical_list.h"
|
||||
#include "ui/boxes/confirm_box.h"
|
||||
#include "ui/text/format_values.h"
|
||||
|
|
|
@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "settings/cloud_password/settings_cloud_password_common.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_email.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_manage.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_step.h"
|
||||
#include "ui/vertical_list.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
#include "ui/widgets/fields/input_field.h"
|
||||
|
|
|
@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "settings/cloud_password/settings_cloud_password_email_confirm.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_hint.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_manage.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_step.h"
|
||||
#include "ui/boxes/confirm_box.h"
|
||||
#include "ui/text/format_values.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
|
|
|
@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "settings/cloud_password/settings_cloud_password_manage.h"
|
||||
|
||||
#include "api/api_cloud_password.h"
|
||||
#include "core/application.h"
|
||||
#include "core/core_cloud_password.h"
|
||||
#include "lang/lang_keys.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_common.h"
|
||||
|
@ -16,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "settings/cloud_password/settings_cloud_password_hint.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_input.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_start.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_step.h"
|
||||
#include "ui/vertical_list.h"
|
||||
#include "ui/boxes/confirm_box.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
|
@ -97,7 +99,10 @@ void Manage::setupContent() {
|
|||
showBack();
|
||||
};
|
||||
|
||||
SetupAutoCloseTimer(content->lifetime(), quit);
|
||||
SetupAutoCloseTimer(
|
||||
content->lifetime(),
|
||||
quit,
|
||||
[] { return Core::App().lastNonIdleTime(); });
|
||||
|
||||
const auto state = cloudPassword().stateCurrent();
|
||||
if (!state) {
|
||||
|
|
|
@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "lang/lang_keys.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_common.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_input.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_step.h"
|
||||
#include "ui/vertical_list.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
#include "ui/wrap/vertical_layout.h"
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
/*
|
||||
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
|
||||
*/
|
||||
#include "settings/cloud_password/settings_cloud_password_step.h"
|
||||
|
||||
#include "apiwrap.h"
|
||||
#include "lang/lang_keys.h"
|
||||
#include "main/main_session.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_common.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_email.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_email_confirm.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_hint.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_input.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_manage.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_start.h"
|
||||
#include "ui/boxes/confirm_box.h"
|
||||
#include "window/window_session_controller.h"
|
||||
|
||||
namespace Settings::CloudPassword {
|
||||
|
||||
AbstractStep::AbstractStep(
|
||||
QWidget *parent,
|
||||
not_null<Window::SessionController*> controller)
|
||||
: AbstractSection(parent)
|
||||
, _controller(controller) {
|
||||
}
|
||||
|
||||
not_null<Window::SessionController*> AbstractStep::controller() const {
|
||||
return _controller;
|
||||
}
|
||||
|
||||
Api::CloudPassword &AbstractStep::cloudPassword() {
|
||||
return _controller->session().api().cloudPassword();
|
||||
}
|
||||
|
||||
rpl::producer<AbstractStep::Types> AbstractStep::removeTypes() {
|
||||
return rpl::never<Types>();
|
||||
}
|
||||
|
||||
void AbstractStep::showBack() {
|
||||
_showBack.fire({});
|
||||
}
|
||||
|
||||
void AbstractStep::showOther(Type type) {
|
||||
_showOther.fire_copy(type);
|
||||
}
|
||||
|
||||
void AbstractStep::setFocusCallback(Fn<void()> callback) {
|
||||
_setInnerFocusCallback = callback;
|
||||
}
|
||||
|
||||
rpl::producer<> AbstractStep::showFinishes() const {
|
||||
return _showFinished.events();
|
||||
}
|
||||
|
||||
void AbstractStep::showFinished() {
|
||||
_showFinished.fire({});
|
||||
}
|
||||
|
||||
void AbstractStep::setInnerFocus() {
|
||||
if (_setInnerFocusCallback) {
|
||||
_setInnerFocusCallback();
|
||||
}
|
||||
}
|
||||
|
||||
bool AbstractStep::isPasswordInvalidError(const QString &type) {
|
||||
if (type == u"PASSWORD_HASH_INVALID"_q
|
||||
|| type == u"SRP_PASSWORD_CHANGED"_q) {
|
||||
|
||||
// Most likely the cloud password has been changed on another device.
|
||||
// Quit.
|
||||
_quits.fire(AbstractStep::Types{
|
||||
CloudPasswordStartId(),
|
||||
CloudPasswordInputId(),
|
||||
CloudPasswordHintId(),
|
||||
CloudPasswordEmailId(),
|
||||
CloudPasswordEmailConfirmId(),
|
||||
CloudPasswordManageId(),
|
||||
});
|
||||
controller()->show(
|
||||
Ui::MakeInformBox(tr::lng_cloud_password_expired()),
|
||||
Ui::LayerOption::CloseOther);
|
||||
setStepData(StepData());
|
||||
showBack();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
rpl::producer<Type> AbstractStep::sectionShowOther() {
|
||||
return _showOther.events();
|
||||
}
|
||||
|
||||
rpl::producer<> AbstractStep::sectionShowBack() {
|
||||
return _showBack.events();
|
||||
}
|
||||
|
||||
rpl::producer<std::vector<Type>> AbstractStep::removeFromStack() {
|
||||
return rpl::merge(removeTypes(), _quits.events());
|
||||
}
|
||||
|
||||
void AbstractStep::setStepDataReference(std::any &data) {
|
||||
_stepData = &data;
|
||||
}
|
||||
|
||||
StepData AbstractStep::stepData() const {
|
||||
if (!_stepData || !_stepData->has_value()) {
|
||||
StepData();
|
||||
}
|
||||
const auto my = std::any_cast<StepData>(_stepData);
|
||||
return my ? (*my) : StepData();
|
||||
}
|
||||
|
||||
void AbstractStep::setStepData(StepData data) {
|
||||
if (_stepData) {
|
||||
*_stepData = data;
|
||||
}
|
||||
}
|
||||
|
||||
AbstractStep::~AbstractStep() = default;
|
||||
|
||||
} // namespace Settings::CloudPassword
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
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 "settings/settings_common_session.h"
|
||||
|
||||
namespace Api {
|
||||
class CloudPassword;
|
||||
} // namespace Api
|
||||
|
||||
namespace Settings::CloudPassword {
|
||||
|
||||
struct StepData;
|
||||
|
||||
class AbstractStep : public AbstractSection {
|
||||
public:
|
||||
using Types = std::vector<Type>;
|
||||
AbstractStep(
|
||||
QWidget *parent,
|
||||
not_null<Window::SessionController*> controller);
|
||||
~AbstractStep();
|
||||
|
||||
void showFinished() override final;
|
||||
void setInnerFocus() override final;
|
||||
[[nodiscard]] rpl::producer<Type> sectionShowOther() override final;
|
||||
[[nodiscard]] rpl::producer<> sectionShowBack() override final;
|
||||
|
||||
[[nodiscard]] rpl::producer<Types> removeFromStack() override final;
|
||||
|
||||
void setStepDataReference(std::any &data) override;
|
||||
|
||||
protected:
|
||||
[[nodiscard]] not_null<Window::SessionController*> controller() const;
|
||||
[[nodiscard]] Api::CloudPassword &cloudPassword();
|
||||
|
||||
[[nodiscard]] virtual rpl::producer<Types> removeTypes();
|
||||
|
||||
bool isPasswordInvalidError(const QString &type);
|
||||
|
||||
void showBack();
|
||||
void showOther(Type type);
|
||||
|
||||
void setFocusCallback(Fn<void()> callback);
|
||||
|
||||
[[nodiscard]] rpl::producer<> showFinishes() const;
|
||||
|
||||
StepData stepData() const;
|
||||
void setStepData(StepData data);
|
||||
|
||||
private:
|
||||
const not_null<Window::SessionController*> _controller;
|
||||
|
||||
Fn<void()> _setInnerFocusCallback;
|
||||
|
||||
rpl::event_stream<> _showFinished;
|
||||
rpl::event_stream<Type> _showOther;
|
||||
rpl::event_stream<> _showBack;
|
||||
rpl::event_stream<Types> _quits;
|
||||
|
||||
std::any *_stepData;
|
||||
|
||||
};
|
||||
|
||||
template <typename SectionType>
|
||||
class TypedAbstractStep : public AbstractStep {
|
||||
public:
|
||||
using AbstractStep::AbstractStep;
|
||||
|
||||
void setStepDataReference(std::any &data) override final {
|
||||
AbstractStep::setStepDataReference(data);
|
||||
static_cast<SectionType*>(this)->setupContent();
|
||||
}
|
||||
|
||||
[[nodiscard]] static Type Id() {
|
||||
return SectionFactory<SectionType>::Instance();
|
||||
}
|
||||
[[nodiscard]] Type id() const final override {
|
||||
return Id();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
} // namespace Settings::CloudPassword
|
||||
|
|
@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "main/main_domain.h"
|
||||
#include "main/main_session.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_common.h"
|
||||
#include "settings/cloud_password/settings_cloud_password_step.h"
|
||||
#include "storage/storage_domain.h"
|
||||
#include "ui/vertical_list.h"
|
||||
#include "ui/boxes/confirm_box.h"
|
||||
|
@ -128,7 +129,8 @@ void LocalPasscodeEnter::setupContent() {
|
|||
if (isChange) {
|
||||
CloudPassword::SetupAutoCloseTimer(
|
||||
content->lifetime(),
|
||||
[=] { _showBack.fire({}); });
|
||||
[=] { _showBack.fire({}); },
|
||||
[] { return Core::App().lastNonIdleTime(); });
|
||||
}
|
||||
|
||||
Ui::AddSkip(content);
|
||||
|
@ -448,7 +450,8 @@ void LocalPasscodeManage::setupContent() {
|
|||
|
||||
CloudPassword::SetupAutoCloseTimer(
|
||||
content->lifetime(),
|
||||
[=] { _showBack.fire({}); });
|
||||
[=] { _showBack.fire({}); },
|
||||
[] { return Core::App().lastNonIdleTime(); });
|
||||
|
||||
Ui::AddSkip(content);
|
||||
|
||||
|
|
|
@ -224,6 +224,8 @@ PRIVATE
|
|||
|
||||
settings/settings_common.cpp
|
||||
settings/settings_common.h
|
||||
settings/cloud_password/settings_cloud_password_common.cpp
|
||||
settings/cloud_password/settings_cloud_password_common.h
|
||||
|
||||
statistics/chart_lines_filter_controller.cpp
|
||||
statistics/chart_lines_filter_controller.h
|
||||
|
|
Loading…
Add table
Reference in a new issue