From 3517749537ba322b174bc6167b4dea861f1f47d9 Mon Sep 17 00:00:00 2001 From: Joan Torres Date: Wed, 7 Feb 2024 12:59:09 +0100 Subject: [PATCH] loginManager: Add session-removed signal and getSession method These changes will be used by the next commit when displaying a conflicting session dialog. session-removed signal will be used to close the conflicting session dialog if it's not needed anymore. getSession method will be used when a session is opened, to check if there's already a conflicting opened session. Part-of: --- js/misc/loginManager.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js index 6f9564996..fe3719244 100644 --- a/js/misc/loginManager.js +++ b/js/misc/loginManager.js @@ -101,6 +101,8 @@ class LoginManagerSystemd extends Signals.EventEmitter { '/org/freedesktop/login1/user/self'); this._proxy.connectSignal('PrepareForSleep', this._prepareForSleep.bind(this)); + this._proxy.connectSignal('SessionRemoved', + this._sessionRemoved.bind(this)); } async getCurrentSessionProxy() { @@ -189,6 +191,10 @@ class LoginManagerSystemd extends Signals.EventEmitter { } } + getSession(objectPath) { + return new SystemdLoginSession(Gio.DBus.system, 'org.freedesktop.login1', objectPath); + } + suspend() { this._proxy.SuspendAsync(true); } @@ -206,6 +212,10 @@ class LoginManagerSystemd extends Signals.EventEmitter { _prepareForSleep(proxy, sender, [aboutToSuspend]) { this.emit('prepare-for-sleep', aboutToSuspend); } + + _sessionRemoved(proxy, sender, [sessionId]) { + this.emit('session-removed', sessionId); + } } class LoginManagerDummy extends Signals.EventEmitter { @@ -237,6 +247,10 @@ class LoginManagerDummy extends Signals.EventEmitter { return new Promise(resolve => resolve([])); } + getSession(_objectPath) { + return null; + } + suspend() { this.emit('prepare-for-sleep', true); this.emit('prepare-for-sleep', false);