[gnome-software/1248-flatpaks-should-be-updated-daily: 13/13] gs-update-monitor: Automatically install application updates
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/1248-flatpaks-should-be-updated-daily: 13/13] gs-update-monitor: Automatically install application updates
- Date: Thu, 27 May 2021 06:10:52 +0000 (UTC)
commit 125026dcdb9cfb9b02ae94ea84d7f6ba448b2812
Author: Milan Crha <mcrha redhat com>
Date: Tue May 11 11:13:52 2021 +0200
gs-update-monitor: Automatically install application updates
The application updates, so called online updates, should be installed immediately
when found, when the user has enabled automatic updates.
Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1248
src/gs-update-monitor.c | 47 +++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 45 insertions(+), 2 deletions(-)
---
diff --git a/src/gs-update-monitor.c b/src/gs-update-monitor.c
index 384d28eb2..8083acab0 100644
--- a/src/gs-update-monitor.c
+++ b/src/gs-update-monitor.c
@@ -482,6 +482,7 @@ get_updates_finished_cb (GObject *object, GAsyncResult *res, gpointer data)
guint64 security_timestamp_old = 0;
g_autoptr(GError) error = NULL;
g_autoptr(GsAppList) apps = NULL;
+ gboolean should_download;
/* get result */
apps = gs_plugin_loader_job_process_finish (GS_PLUGIN_LOADER (object), res, &error);
@@ -516,7 +517,9 @@ get_updates_finished_cb (GObject *object, GAsyncResult *res, gpointer data)
g_debug ("got %u updates", gs_app_list_length (apps));
- if (should_download_updates (monitor) &&
+ should_download = should_download_updates (monitor);
+
+ if (should_download &&
(security_timestamp_old != security_timestamp ||
no_notification_for_days (monitor, 14))) {
g_autoptr(GsPluginJob) plugin_job = NULL;
@@ -535,8 +538,48 @@ get_updates_finished_cb (GObject *object, GAsyncResult *res, gpointer data)
download_finished_cb,
monitor);
} else {
- notify_about_pending_updates (monitor, apps);
+ g_autoptr(GsAppList) update_online = NULL;
+ g_autoptr(GsAppList) update_offline = NULL;
+ GsAppList *notify_list;
+
+ update_online = gs_app_list_new ();
+ update_offline = gs_app_list_new ();
+ for (guint i = 0; i < gs_app_list_length (apps); i++) {
+ GsApp *app = gs_app_list_index (apps, i);
+ if (_should_auto_update (app)) {
+ g_debug ("download for auto-update %s", gs_app_get_unique_id (app));
+ gs_app_list_add (update_online, app);
+ } else {
+ gs_app_list_add (update_offline, app);
+ }
+ }
+
+ g_debug ("Received %u apps to update, %u are online and %u offline updates; will%s download
online updates",
+ gs_app_list_length (apps),
+ gs_app_list_length (update_online),
+ gs_app_list_length (update_offline),
+ should_download ? "" : " not");
+
+ if (should_download && gs_app_list_length (update_online) > 0) {
+ g_autoptr(GsPluginJob) plugin_job = NULL;
+
+ plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_DOWNLOAD,
+ "list", update_online,
+ NULL);
+ g_debug ("Getting %u online updates", gs_app_list_length (update_online));
+ gs_plugin_loader_job_process_async (monitor->plugin_loader,
+ plugin_job,
+ monitor->cancellable,
+ download_finished_cb,
+ monitor);
+ }
+
+ if (should_download)
+ notify_list = update_offline;
+ else
+ notify_list = apps;
+ notify_about_pending_updates (monitor, notify_list);
reset_update_notification_timestamp (monitor);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]