From dc8c4a8332482bf6682dd601ac3b5a02e16c7285 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 1 Jul 2024 21:03:05 +0400 Subject: [PATCH] Version 5.2.1: No auto-enable system password unlock on macOS. --- Telegram/SourceFiles/main/main_domain.cpp | 2 ++ .../settings/settings_local_passcode.cpp | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/main/main_domain.cpp b/Telegram/SourceFiles/main/main_domain.cpp index 9b4b120674..714f7e2919 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 01562905a6..193445caf3 100644 --- a/Telegram/SourceFiles/settings/settings_local_passcode.cpp +++ b/Telegram/SourceFiles/settings/settings_local_passcode.cpp @@ -80,6 +80,7 @@ private: 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({});