[gnome-software/wip/ubuntu-master: 57/60] snap: Only feature snaps



commit d043d3197d775b2a40f7dc1ff28a92d30d5c0e58
Author: Robert Ancell <robert ancell canonical com>
Date:   Wed Aug 9 15:43:02 2017 +1200

    snap: Only feature snaps
    
    Run after the other plugins that populate featured/popular apps and remove
    them when we set ours.

 plugins/snap/gs-plugin-snap.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)
---
diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c
index fce680c..6a80290 100644
--- a/plugins/snap/gs-plugin-snap.c
+++ b/plugins/snap/gs-plugin-snap.c
@@ -84,11 +84,13 @@ gs_plugin_initialize (GsPlugin *plugin)
 
        gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "desktop-categories");
        gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "ubuntu-reviews");
+       gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "appstream");
        gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_BETTER_THAN, "packagekit");
        gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, "icons");
 
        /* Override hardcoded popular apps */
-       gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, "hardcoded-popular");
+       gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "hardcoded-popular");
+       gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "hardcoded-featured");
 
        /* set plugin flags */
        gs_plugin_add_flags (plugin, GS_PLUGIN_FLAGS_GLOBAL_CACHE);
@@ -419,6 +421,12 @@ is_banner_icon_image (const gchar *filename)
        return g_regex_match_simple ("^banner-icon(?:_[a-zA-Z0-9]{7})?\\.(?:png|jpg)$", filename, 0, 0);
 }
 
+static gboolean
+remove_cb (GsApp *app, gpointer user_data)
+{
+       return FALSE;
+}
+
 gboolean
 gs_plugin_add_featured (GsPlugin *plugin,
                        GsAppList *list,
@@ -487,6 +495,8 @@ gs_plugin_add_featured (GsPlugin *plugin,
                               background_css->str);
        gs_app_set_metadata (app, "GnomeSoftware::FeatureTile-css", css);
 
+       /* replace any other featured apps with our one */
+       gs_app_list_filter (list, remove_cb, NULL);
        gs_app_list_add (list, app);
 
        return TRUE;
@@ -505,6 +515,9 @@ gs_plugin_add_popular (GsPlugin *plugin,
        if (snaps == NULL)
                return FALSE;
 
+       /* replace any other popular apps with our one */
+       gs_app_list_filter (list, remove_cb, NULL);
+
        /* skip first snap - it is used as the featured app */
        for (i = 1; i < snaps->len; i++) {
                g_autoptr(GsApp) app = snap_to_app (plugin, g_ptr_array_index (snaps, i));


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