diff --git a/Telegram/SourceFiles/main/main_domain.cpp b/Telegram/SourceFiles/main/main_domain.cpp index 9b4b120674d86..714f7e29196ea 100644 --- a/Telegram/SourceFiles/main/main_domain.cpp +++ b/Telegram/SourceFiles/main/main_domain.cpp @@ -403,6 +403,8 @@ bool Domain::removePasscodeIfEmpty() { return false; } _local->setPasscode(QByteArray()); + Core::App().settings().setSystemUnlockEnabled(false); + Core::App().saveSettingsDelayed(); return true; } diff --git a/Telegram/SourceFiles/settings/settings_local_passcode.cpp b/Telegram/SourceFiles/settings/settings_local_passcode.cpp index 01562905a6eed..193445caf3dff 100644 --- a/Telegram/SourceFiles/settings/settings_local_passcode.cpp +++ b/Telegram/SourceFiles/settings/settings_local_passcode.cpp @@ -80,6 +80,7 @@ class LocalPasscodeEnter : public AbstractSection { rpl::event_stream<> _setInnerFocus; rpl::event_stream _showOther; rpl::event_stream<> _showBack; + bool _systemUnlockWithBiometric = false; }; @@ -97,6 +98,13 @@ rpl::producer LocalPasscodeEnter::title() { void LocalPasscodeEnter::setupContent() { const auto content = Ui::CreateChild(this); + base::SystemUnlockStatus( + true + ) | rpl::start_with_next([=](base::SystemUnlockAvailability status) { + _systemUnlockWithBiometric = status.available + && status.withBiometrics; + }, lifetime()); + const auto isCreate = (enterType() == EnterType::Create); const auto isCheck = (enterType() == EnterType::Check); [[maybe_unused]] const auto isChange = (enterType() == EnterType::Change); @@ -242,8 +250,10 @@ void LocalPasscodeEnter::setupContent() { } SetPasscode(_controller, newText); if (isCreate) { - Core::App().settings().setSystemUnlockEnabled(true); - Core::App().saveSettingsDelayed(); + if (Platform::IsWindows() || _systemUnlockWithBiometric) { + Core::App().settings().setSystemUnlockEnabled(true); + Core::App().saveSettingsDelayed(); + } _showOther.fire(LocalPasscodeManageId()); } else if (isChange) { _showBack.fire({}); @@ -601,6 +611,8 @@ QPointer LocalPasscodeManage::createPinnedToBottom( .text = tr::lng_settings_passcode_disable_sure(), .confirmed = [=](Fn &&close) { SetPasscode(_controller, QString()); + Core::App().settings().setSystemUnlockEnabled(false); + Core::App().saveSettingsDelayed(); close(); _showBack.fire({});