[gnome-software] Only handle flatpak actions with the correct scope
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Only handle flatpak actions with the correct scope
- Date: Thu, 1 Dec 2016 15:10:09 +0000 (UTC)
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]