From 7d74d3da3a1c491643c0038552eb45a52e741ad3 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Tue, 21 Jan 2025 14:26:20 +0400
Subject: [PATCH] Remove dnd/focus query code on macOS.

---
 .../platform/mac/notifications_manager_mac.mm | 79 -------------------
 1 file changed, 79 deletions(-)

diff --git a/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm b/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm
index d88ab4a1b..ad115143f 100644
--- a/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm
+++ b/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm
@@ -218,8 +218,6 @@ public:
 	void clearFromSession(not_null<Main::Session*> session);
 	void updateDelegate();
 
-	void invokeIfNotFocused(Fn<void()> callback);
-
 	~Private();
 
 private:
@@ -227,7 +225,6 @@ private:
 	void putClearTask(Task task);
 
 	void clearingThreadLoop();
-	void checkFocusState();
 
 	[[nodiscard]] QString cacheSound(const Media::Audio::LocalSound &sound);
 
@@ -265,14 +262,8 @@ private:
 		ClearFinish>;
 	std::vector<ClearTask> _clearingTasks;
 
-	QProcess _dnd;
-	QProcess _focus;
 	std::vector<Fn<void()>> _focusedCallbacks;
 	base::flat_map<DocumentId, QString> _cachedSounds;
-	bool _waitingDnd = false;
-	bool _waitingFocus = false;
-	bool _focused = false;
-	bool _processesInited = false;
 
 	rpl::lifetime _lifetime;
 
@@ -513,77 +504,7 @@ void Manager::Private::updateDelegate() {
 	[center setDelegate:_delegate];
 }
 
-void Manager::Private::invokeIfNotFocused(Fn<void()> callback) {
-	if (!Platform::IsMac11_0OrGreater()) {
-		queryDoNotDisturbState();
-		if (!DoNotDisturbEnabled) {
-			callback();
-		}
-	} else if (Platform::IsMacStoreBuild() || LibraryPath().isEmpty()) {
-		callback();
-	} else if (!_focusedCallbacks.empty()) {
-		_focusedCallbacks.push_back(std::move(callback));
-	} else if (!ShouldQuerySettings()) {
-		if (!_focused) {
-			callback();
-		}
-	} else {
-		if (!_processesInited) {
-			_processesInited = true;
-			QObject::connect(&_dnd, &QProcess::finished, [=] {
-				_waitingDnd = false;
-				checkFocusState();
-			});
-			QObject::connect(&_focus, &QProcess::finished, [=] {
-				_waitingFocus = false;
-				checkFocusState();
-			});
-		}
-		const auto start = [](QProcess &process, QString keys) {
-			auto arguments = QStringList()
-				<< "-extract"
-				<< keys
-				<< "raw"
-				<< "-o"
-				<< "-"
-				<< "--"
-				<< (LibraryPath() + "/Preferences/com.apple.controlcenter.plist");
-			DEBUG_LOG(("Focus Check: Started %1.").arg(u"plutil"_q + arguments.join(' ')));
-			process.start(u"plutil"_q, arguments);
-		};
-		_focusedCallbacks.push_back(std::move(callback));
-		_waitingFocus = _waitingDnd = true;
-		start(_focus, u"NSStatusItem Visible FocusModes"_q);
-		start(_dnd, u"NSStatusItem Visible DoNotDisturb"_q);
-	}
-}
-
-void Manager::Private::checkFocusState() {
-	if (_waitingFocus || _waitingDnd) {
-		return;
-	}
-	const auto istrue = [](QProcess &process) {
-		const auto output = process.readAllStandardOutput();
-		DEBUG_LOG(("Focus Check: %1").arg(output));
-		const auto result = (output.trimmed() == u"true"_q);
-		return result;
-	};
-	_focused = istrue(_focus) || istrue(_dnd);
-	auto callbacks = base::take(_focusedCallbacks);
-	if (!_focused) {
-		for (const auto &callback : callbacks) {
-			callback();
-		}
-	}
-}
-
 Manager::Private::~Private() {
-	if (_waitingDnd) {
-		_dnd.kill();
-	}
-	if (_waitingFocus) {
-		_focus.kill();
-	}
 	if (_clearingThread.joinable()) {
 		putClearTask(ClearFinish());
 		_clearingThread.join();