[gnome-software] Only handle flatpak actions with the correct scope



commit 057bdaa2de2322f05fe60ee0deb358a7f51f05ef
Author: Richard Hughes <richard hughsie com>
Date:   Thu Dec 1 14:37:13 2016 +0000

    Only handle flatpak actions with the correct scope

 src/plugins/gs-plugin-flatpak.c |   74 +++++++++++++++++++-------------------
 1 files changed, 37 insertions(+), 37 deletions(-)
---
diff --git a/src/plugins/gs-plugin-flatpak.c b/src/plugins/gs-plugin-flatpak.c
index 579d2ea..1c35846 100644
--- a/src/plugins/gs-plugin-flatpak.c
+++ b/src/plugins/gs-plugin-flatpak.c
@@ -260,6 +260,23 @@ gs_plugin_refresh (GsPlugin *plugin,
        return TRUE;
 }
 
+static GsFlatpak *
+gs_plugin_flatpak_get_handler (GsPlugin *plugin, GsApp *app)
+{
+       GsPluginData *priv = gs_plugin_get_data (plugin);
+       for (guint i = 0; i < priv->flatpaks->len; i++) {
+               GsFlatpak *flatpak = g_ptr_array_index (priv->flatpaks, i);
+
+               /* check scope */
+               if (!_as_app_scope_is_compatible (gs_flatpak_get_scope (flatpak),
+                                                 gs_app_get_scope (app))) {
+                       continue;
+               }
+               return flatpak;
+       }
+       return NULL;
+}
+
 gboolean
 gs_plugin_refine_app (GsPlugin *plugin,
                      GsApp *app,
@@ -267,15 +284,10 @@ gs_plugin_refine_app (GsPlugin *plugin,
                      GCancellable *cancellable,
                      GError **error)
 {
-       GsPluginData *priv = gs_plugin_get_data (plugin);
-       for (guint i = 0; i < priv->flatpaks->len; i++) {
-               GsFlatpak *flatpak = g_ptr_array_index (priv->flatpaks, i);
-               if (!gs_flatpak_refine_app (flatpak, app, flags,
-                                           cancellable, error)) {
-                       return FALSE;
-               }
-       }
-       return TRUE;
+       GsFlatpak *flatpak = gs_plugin_flatpak_get_handler (plugin, app);
+       if (flatpak == NULL)
+               return TRUE;
+       return gs_flatpak_refine_app (flatpak, app, flags, cancellable, error);
 }
 
 gboolean
@@ -303,13 +315,10 @@ gs_plugin_launch (GsPlugin *plugin,
                  GCancellable *cancellable,
                  GError **error)
 {
-       GsPluginData *priv = gs_plugin_get_data (plugin);
-       for (guint i = 0; i < priv->flatpaks->len; i++) {
-               GsFlatpak *flatpak = g_ptr_array_index (priv->flatpaks, i);
-               if (!gs_flatpak_launch (flatpak, app, cancellable, error))
-                       return FALSE;
-       }
-       return TRUE;
+       GsFlatpak *flatpak = gs_plugin_flatpak_get_handler (plugin, app);
+       if (flatpak == NULL)
+               return TRUE;
+       return gs_flatpak_launch (flatpak, app, cancellable, error);
 }
 
 gboolean
@@ -318,13 +327,10 @@ gs_plugin_app_remove (GsPlugin *plugin,
                      GCancellable *cancellable,
                      GError **error)
 {
-       GsPluginData *priv = gs_plugin_get_data (plugin);
-       for (guint i = 0; i < priv->flatpaks->len; i++) {
-               GsFlatpak *flatpak = g_ptr_array_index (priv->flatpaks, i);
-               if (!gs_flatpak_app_remove (flatpak, app, cancellable, error))
-                       return FALSE;
-       }
-       return TRUE;
+       GsFlatpak *flatpak = gs_plugin_flatpak_get_handler (plugin, app);
+       if (flatpak == NULL)
+               return TRUE;
+       return gs_flatpak_app_remove (flatpak, app, cancellable, error);
 }
 
 gboolean
@@ -333,13 +339,10 @@ gs_plugin_app_install (GsPlugin *plugin,
                       GCancellable *cancellable,
                       GError **error)
 {
-       GsPluginData *priv = gs_plugin_get_data (plugin);
-       for (guint i = 0; i < priv->flatpaks->len; i++) {
-               GsFlatpak *flatpak = g_ptr_array_index (priv->flatpaks, i);
-               if (!gs_flatpak_app_install (flatpak, app, cancellable, error))
-                       return FALSE;
-       }
-       return TRUE;
+       GsFlatpak *flatpak = gs_plugin_flatpak_get_handler (plugin, app);
+       if (flatpak == NULL)
+               return TRUE;
+       return gs_flatpak_app_install (flatpak, app, cancellable, error);
 }
 
 gboolean
@@ -348,13 +351,10 @@ gs_plugin_update_app (GsPlugin *plugin,
                      GCancellable *cancellable,
                      GError **error)
 {
-       GsPluginData *priv = gs_plugin_get_data (plugin);
-       for (guint i = 0; i < priv->flatpaks->len; i++) {
-               GsFlatpak *flatpak = g_ptr_array_index (priv->flatpaks, i);
-               if (!gs_flatpak_update_app (flatpak, app, cancellable, error))
-                       return FALSE;
-       }
-       return TRUE;
+       GsFlatpak *flatpak = gs_plugin_flatpak_get_handler (plugin, app);
+       if (flatpak == NULL)
+               return TRUE;
+       return gs_flatpak_update_app (flatpak, app, cancellable, error);
 }
 
 gboolean


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