[gnome-software/1645-disabling-a-flatpak-remote-from-software-repositories-returns-an-error] flatpak: Update 'no-interaction' property on installation before using it



commit 44408c3a3fc378a56b21591233d129fe4204c488
Author: Milan Crha <mcrha redhat com>
Date:   Tue Feb 22 17:33:01 2022 +0100

    flatpak: Update 'no-interaction' property on installation before using it
    
    Update the FlatpakInstallation::no-interaction property before using it,
    to make sure the state reflects the GsPlugin operation setting.
    
    Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1645

 plugins/flatpak/gs-flatpak.c        |  9 +++++++++
 plugins/flatpak/gs-flatpak.h        |  2 ++
 plugins/flatpak/gs-plugin-flatpak.c | 19 +++++++++++++++++++
 3 files changed, 30 insertions(+)
---
diff --git a/plugins/flatpak/gs-flatpak.c b/plugins/flatpak/gs-flatpak.c
index 7b9fdd2d6..b9f0014a9 100644
--- a/plugins/flatpak/gs-flatpak.c
+++ b/plugins/flatpak/gs-flatpak.c
@@ -4134,3 +4134,12 @@ gs_flatpak_get_busy (GsFlatpak *self)
        g_return_val_if_fail (GS_IS_FLATPAK (self), FALSE);
        return g_atomic_int_get (&self->busy) > 0;
 }
+
+void
+gs_flatpak_set_interactive (GsFlatpak *self,
+                           gboolean interactive)
+{
+       g_return_if_fail (GS_IS_FLATPAK (self));
+
+       flatpak_installation_set_no_interaction (self->installation, !interactive);
+}
diff --git a/plugins/flatpak/gs-flatpak.h b/plugins/flatpak/gs-flatpak.h
index 4eb9ce7b6..f8908caec 100644
--- a/plugins/flatpak/gs-flatpak.h
+++ b/plugins/flatpak/gs-flatpak.h
@@ -140,5 +140,7 @@ gboolean    gs_flatpak_url_to_app           (GsFlatpak              *self,
 void           gs_flatpak_set_busy             (GsFlatpak              *self,
                                                 gboolean                busy);
 gboolean       gs_flatpak_get_busy             (GsFlatpak              *self);
+void           gs_flatpak_set_interactive      (GsFlatpak              *self,
+                                                gboolean                interactive);
 
 G_END_DECLS
diff --git a/plugins/flatpak/gs-plugin-flatpak.c b/plugins/flatpak/gs-plugin-flatpak.c
index d8c5bb6d3..59643ec10 100644
--- a/plugins/flatpak/gs-plugin-flatpak.c
+++ b/plugins/flatpak/gs-plugin-flatpak.c
@@ -389,6 +389,8 @@ list_installed_apps_thread_cb (GTask        *task,
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
 
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (GS_PLUGIN (self), 
GS_PLUGIN_FLAGS_INTERACTIVE));
+
                if (!gs_flatpak_add_installed (flatpak, list, cancellable, &local_error)) {
                        g_task_return_error (task, g_steal_pointer (&local_error));
                        return;
@@ -416,6 +418,7 @@ gs_plugin_add_sources (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_add_sources (flatpak, list, cancellable, error))
                        return FALSE;
        }
@@ -432,6 +435,7 @@ gs_plugin_add_updates (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_add_updates (flatpak, list, cancellable, error))
                        return FALSE;
        }
@@ -528,6 +532,7 @@ gs_plugin_flatpak_refine_app (GsPluginFlatpak      *self,
        }
        if (flatpak == NULL)
                return TRUE;
+       gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (GS_PLUGIN (self), 
GS_PLUGIN_FLAGS_INTERACTIVE));
        return gs_flatpak_refine_app (flatpak, app, flags, cancellable, error);
 }
 
@@ -627,6 +632,7 @@ refine_thread_cb (GTask        *task,
                for (guint i = 0; i < self->installations->len; i++) {
                        GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
 
+                       gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (GS_PLUGIN (self), 
GS_PLUGIN_FLAGS_INTERACTIVE));
                        if (!gs_flatpak_refine_wildcard (flatpak, app, list, flags,
                                                         cancellable, &local_error)) {
                                g_task_return_error (task, g_steal_pointer (&local_error));
@@ -655,6 +661,7 @@ gs_plugin_launch (GsPlugin *plugin,
        GsFlatpak *flatpak = gs_plugin_flatpak_get_handler (GS_PLUGIN_FLATPAK (plugin), app);
        if (flatpak == NULL)
                return TRUE;
+       gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
        return gs_flatpak_launch (flatpak, app, cancellable, error);
 }
 
@@ -1708,6 +1715,7 @@ gs_plugin_flatpak_do_search (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_search (flatpak, (const gchar * const *) values, list,
                                        cancellable, error)) {
                        return FALSE;
@@ -1747,6 +1755,7 @@ gs_plugin_add_categories (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_add_categories (flatpak, list, cancellable, error))
                        return FALSE;
        }
@@ -1764,6 +1773,7 @@ gs_plugin_add_category_apps (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_add_category_apps (flatpak,
                                                   category,
                                                   list,
@@ -1785,6 +1795,7 @@ gs_plugin_add_popular (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_add_popular (flatpak, list, cancellable, error))
                        return FALSE;
        }
@@ -1802,6 +1813,7 @@ gs_plugin_add_alternates (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_add_alternates (flatpak, app, list, cancellable, error))
                        return FALSE;
        }
@@ -1818,6 +1830,7 @@ gs_plugin_add_featured (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_add_featured (flatpak, list, cancellable, error))
                        return FALSE;
        }
@@ -1835,6 +1848,7 @@ gs_plugin_add_recent (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_add_recent (flatpak, list, age, cancellable, error))
                        return FALSE;
        }
@@ -1852,6 +1866,7 @@ gs_plugin_url_to_app (GsPlugin *plugin,
 
        for (guint i = 0; i < self->installations->len; i++) {
                GsFlatpak *flatpak = g_ptr_array_index (self->installations, i);
+               gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, 
GS_PLUGIN_FLAGS_INTERACTIVE));
                if (!gs_flatpak_url_to_app (flatpak, list, url, cancellable, error))
                        return FALSE;
        }
@@ -1883,6 +1898,7 @@ gs_plugin_install_repo (GsPlugin *plugin,
        /* is a source */
        g_return_val_if_fail (gs_app_get_kind (repo) == AS_COMPONENT_KIND_REPOSITORY, FALSE);
 
+       gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
        return gs_flatpak_app_install_source (flatpak, repo, TRUE, cancellable, error);
 }
 
@@ -1902,6 +1918,7 @@ gs_plugin_remove_repo (GsPlugin *plugin,
        /* is a source */
        g_return_val_if_fail (gs_app_get_kind (repo) == AS_COMPONENT_KIND_REPOSITORY, FALSE);
 
+       gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
        return gs_flatpak_app_remove_source (flatpak, repo, TRUE, cancellable, error);
 }
 
@@ -1921,6 +1938,7 @@ gs_plugin_enable_repo (GsPlugin *plugin,
        /* is a source */
        g_return_val_if_fail (gs_app_get_kind (repo) == AS_COMPONENT_KIND_REPOSITORY, FALSE);
 
+       gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
        return gs_flatpak_app_install_source (flatpak, repo, FALSE, cancellable, error);
 }
 
@@ -1940,6 +1958,7 @@ gs_plugin_disable_repo (GsPlugin *plugin,
        /* is a source */
        g_return_val_if_fail (gs_app_get_kind (repo) == AS_COMPONENT_KIND_REPOSITORY, FALSE);
 
+       gs_flatpak_set_interactive (flatpak, gs_plugin_has_flags (plugin, GS_PLUGIN_FLAGS_INTERACTIVE));
        return gs_flatpak_app_remove_source (flatpak, repo, FALSE, cancellable, error);
 }
 


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