From 154655838d3f456db50981a0efa24b652c14c3ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 27 Nov 2019 23:01:15 +0100 Subject: [PATCH] weather: Only require auto-location authorization if sandboxed Since commit 87e60ed97843, geoclue no longer pretends that authorization is useful for system-installed apps (as they can easily lie about their ID). Unfortunately this broke our auto-location support in case Weather is installed non-sandboxed, as we are waiting for an authorization that will never happen. Unbreak it by only requiring authorization when installed as Flatpak. https://gitlab.gnome.org/GNOME/gnome-shell/issues/1823 --- js/misc/weather.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/js/misc/weather.js b/js/misc/weather.js index 2c6548770..c0dc80cf8 100644 --- a/js/misc/weather.js +++ b/js/misc/weather.js @@ -32,6 +32,7 @@ var WeatherClient = class { this._gclueStarting = false; this._gclueLocationChangedId = 0; + this._needsAuth = true; this._weatherAuthorized = false; this._permStore = new PermissionStore.PermissionStore((proxy, error) => { if (error) { @@ -142,7 +143,7 @@ var WeatherClient = class { get _useAutoLocation() { return this._autoLocationRequested && this._locationSettings.get_boolean('enabled') && - this._weatherAuthorized; + (!this._needsAuth || this._weatherAuthorized); } _onWeatherProxyReady(o, res) { @@ -175,6 +176,13 @@ var WeatherClient = class { if (hadApp !== haveApp) this.emit('changed'); + + let neededAuth = this._needsAuth; + this._needsAuth = this._weatherApp === null || + this._weatherApp.app_info.has_key('X-Flatpak'); + + if (neededAuth !== this._needsAuth) + this._updateAutoLocation(); } _loadInfo() {