[gnome-software/wip/rancell/paid: 3/3] snap: Add support for paid snaps
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/rancell/paid: 3/3] snap: Add support for paid snaps
- Date: Tue, 5 Jul 2016 03:23:02 +0000 (UTC)
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, ¤cy, &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]