[gnome-software/wip/rancell/paid: 3/3] snap: Add support for paid snaps



commit 6678f339cd5c96ecb844846097751c6873be390b
Author: Robert Ancell <robert ancell canonical com>
Date:   Tue Jul 5 15:22:42 2016 +1200

    snap: Add support for paid snaps

 src/plugins/gs-plugin-snap.c |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletions(-)
---
diff --git a/src/plugins/gs-plugin-snap.c b/src/plugins/gs-plugin-snap.c
index 0390b05..c1ef3ac 100644
--- a/src/plugins/gs-plugin-snap.c
+++ b/src/plugins/gs-plugin-snap.c
@@ -159,8 +159,10 @@ refine_app (GsPlugin *plugin, GsApp *app, JsonObject *package, gboolean from_sea
                                gs_app_set_state (app, AS_APP_STATE_UNKNOWN);
                        gs_app_set_state (app, AS_APP_STATE_INSTALLED);
                }
-       } else if (g_strcmp0 (status, "not installed") == 0 || g_strcmp0 (status, "available") == 0) {
+       } else if (g_strcmp0 (status, "available") == 0) {
                gs_app_set_state (app, AS_APP_STATE_AVAILABLE);
+       } else if (g_strcmp0 (status, "priced") == 0) {
+               gs_app_set_state (app, AS_APP_STATE_PURCHASABLE);
        }
        gs_app_set_name (app, GS_APP_QUALITY_HIGHEST,
                         json_object_get_string_member (package, "summary"));
@@ -177,6 +179,18 @@ refine_app (GsPlugin *plugin, GsApp *app, JsonObject *package, gboolean from_sea
                if (size > 0)
                        gs_app_set_size_download (app, size);
        }
+       if (json_object_has_member (package, "prices")) {
+               JsonObject *prices;
+               JsonObjectIter iter;
+               const gchar *currency;
+               JsonNode *amount;
+
+               prices = json_object_get_object_member (package, "prices");
+               json_object_iter_init (&iter, prices);
+               while (json_object_iter_next (&iter, &currency, &amount)) {
+                       gs_app_add_price (app, json_node_get_double (amount), currency);
+               }
+       }
        gs_app_add_quirk (app, AS_APP_QUIRK_PROVENANCE);
        icon_url = json_object_get_string_member (package, "icon");
        if (g_str_has_prefix (icon_url, "/")) {
@@ -583,6 +597,22 @@ send_package_action (GsPlugin *plugin,
 }
 
 gboolean
+gs_plugin_app_purchase (GsPlugin *plugin,
+                       GsApp *app,
+                       GsPrice *price,
+                       GCancellable *cancellable,
+                       GError **error)
+{
+       /* We can only buy apps we know of */
+       if (g_strcmp0 (gs_app_get_management_plugin (app), "snap") != 0)
+               return TRUE;
+
+       gs_app_set_state (app, AS_APP_STATE_PURCHASING);
+       gs_app_set_state (app, AS_APP_STATE_AVAILABLE);
+       return TRUE;
+}
+
+gboolean
 gs_plugin_app_install (GsPlugin *plugin,
                       GsApp *app,
                       GCancellable *cancellable,


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