[gnome-software/wip/kalev/shell-extensions-fixes: 6/10] shell extensions: Don't add duplicate system installed extensions



commit 2d7c65665d38a46125cf4f5adc6211b139d6eb97
Author: Kalev Lember <klember redhat com>
Date:   Wed Feb 21 09:00:41 2018 +0100

    shell extensions: Don't add duplicate system installed extensions
    
    System installed packages are already added by the packagekit plugin; if
    we add the same thing again, we'll get double entries in the UI.
    
    An improvement here would be to refine packagekit-managed extensions
    with extra info in this plugin, but that's a separate fix for the
    future.

 plugins/shell-extensions/gs-plugin-shell-extensions.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/plugins/shell-extensions/gs-plugin-shell-extensions.c 
b/plugins/shell-extensions/gs-plugin-shell-extensions.c
index 29053432..8962d2a3 100644
--- a/plugins/shell-extensions/gs-plugin-shell-extensions.c
+++ b/plugins/shell-extensions/gs-plugin-shell-extensions.c
@@ -138,7 +138,6 @@ gs_plugin_shell_extensions_parse_installed (GsPlugin *plugin,
 
        id = as_utils_appstream_id_build (uuid);
        app = gs_app_new (id);
-       gs_app_set_scope (app, AS_APP_SCOPE_USER);
        gs_app_set_metadata (app, "GnomeSoftware::Creator",
                             gs_plugin_get_name (plugin));
        gs_app_set_management_plugin (app, gs_plugin_get_name (plugin));
@@ -175,8 +174,10 @@ gs_plugin_shell_extensions_parse_installed (GsPlugin *plugin,
                        guint val_int = (guint) g_variant_get_double (val);
                        switch (val_int) {
                        case GS_PLUGIN_SHELL_EXTENSION_KIND_SYSTEM:
+                               gs_app_set_scope (app, AS_APP_SCOPE_SYSTEM);
+                               break;
                        case GS_PLUGIN_SHELL_EXTENSION_KIND_PER_USER:
-                               gs_app_set_kind (app, AS_APP_KIND_SHELL_EXTENSION);
+                               gs_app_set_scope (app, AS_APP_SCOPE_USER);
                                break;
                        default:
                                g_warning ("%s unknown type %u", uuid, val_int);
@@ -355,6 +356,10 @@ gs_plugin_add_installed (GsPlugin *plugin,
                if (app == NULL)
                        return FALSE;
 
+               /* ignore system installed */
+               if (gs_app_get_scope (app) == AS_APP_SCOPE_SYSTEM)
+                       continue;
+
                /* save in the cache */
                gs_plugin_cache_add (plugin, ext_uuid, app);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]