[gnome-software/1645-disabling-a-flatpak-remote-from-software-repositories-returns-an-error] flatpak: Update 'no-interaction' property on installation before using it
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/1645-disabling-a-flatpak-remote-from-software-repositories-returns-an-error] flatpak: Update 'no-interaction' property on installation before using it
- Date: Tue, 22 Feb 2022 16:35:00 +0000 (UTC)
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]