Blame SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch

671c89
From d1a20dc80c3414ba4cb7bf839a25de49d30ab400 Mon Sep 17 00:00:00 2001
671c89
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
671c89
Date: Mon, 21 Sep 2015 20:18:12 +0200
671c89
Subject: [PATCH] extensionSystem: Notify about extension issues on update
671c89
671c89
---
671c89
 js/ui/extensionSystem.js | 34 +++++++++++++++++++++++++++++++++-
671c89
 1 file changed, 33 insertions(+), 1 deletion(-)
671c89
671c89
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
671c89
index 9ffdb4f3d..eb820ba4f 100644
671c89
--- a/js/ui/extensionSystem.js
671c89
+++ b/js/ui/extensionSystem.js
671c89
@@ -1,8 +1,9 @@
671c89
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
671c89
 
671c89
-const { Gio, St } = imports.gi;
671c89
+const { Gio, GLib, St } = imports.gi;
671c89
 const Signals = imports.signals;
671c89
 
671c89
+const Config = imports.misc.config;
671c89
 const ExtensionUtils = imports.misc.extensionUtils;
671c89
 const Main = imports.ui.main;
671c89
 
671c89
@@ -312,6 +313,36 @@ function _onVersionValidationChanged() {
671c89
     }
671c89
 }
671c89
 
671c89
+function _doUpdateCheck() {
671c89
+    let version = Config.PACKAGE_VERSION.split('.');
671c89
+    if (parseInt(version[1]) % 2 == 0)
671c89
+        version.pop();
671c89
+
671c89
+    let pkgCacheDir = GLib.get_user_cache_dir() + '/gnome-shell/';
671c89
+    let updateStamp = Gio.file_new_for_path(pkgCacheDir +
671c89
+                                            'update-check-' + version.join('.'));
671c89
+    if (updateStamp.query_exists(null))
671c89
+        return;
671c89
+
671c89
+    GLib.mkdir_with_parents (pkgCacheDir, 0o755);
671c89
+    updateStamp.create(0, null).close(null);
671c89
+
671c89
+   let nOutdated = enabledExtensions.reduce(function(n, uuid) {
671c89
+       let extension = ExtensionUtils.extensions[uuid];
671c89
+       if (extension && extension.state == ExtensionState.OUT_OF_DATE)
671c89
+           n++;
671c89
+       return n;
671c89
+   }, 0);
671c89
+
671c89
+   if (nOutdated == 0)
671c89
+       return;
671c89
+
671c89
+   Main.notify(ngettext("%d extension is out of date",
671c89
+                        "%d extensions are out of date",
671c89
+                        nOutdated).format(nOutdated),
671c89
+               _("You can visit http://extensions.gnome.org for updates"));
671c89
+}
671c89
+
671c89
 function _loadExtensions() {
671c89
     global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged);
671c89
     global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged);
671c89
@@ -326,6 +357,7 @@ function _loadExtensions() {
671c89
             extension.type = ExtensionUtils.ExtensionType.SESSION_MODE;
671c89
     });
671c89
     finder.scanExtensions();
671c89
+    _doUpdateCheck();
671c89
 }
671c89
 
671c89
 function enableAllExtensions() {
671c89
-- 
671c89
2.21.0
671c89