static gboolean gs_plugin_odrs_refine_reviews (GsPlugin *plugin, GsApp *app, GCancellable *cancellable, GError **error) { GsPluginData *priv = gs_plugin_get_data (plugin); AsReview *review; guint i; g_autoptr(AsProfileTask) ptask = NULL; g_autoptr(GPtrArray) reviews = NULL; /* profile */ ptask = as_profile_start_literal (gs_plugin_get_profile (plugin), "odrs::refine-reviews"); g_assert (ptask != NULL); /* get from server */ reviews = gs_plugin_odrs_fetch_for_app (plugin, app, error); if (reviews == NULL) return FALSE; for (i = 0; i < reviews->len; i++) { review = g_ptr_array_index (reviews, i); /* save this on the application object so we can use it for * submitting a new review */ if (i == 0) { gs_app_set_metadata (app, "ODRS::user_skey", as_review_get_metadata_item (review, "user_skey")); } /* ignore invalid reviews */ if (as_review_get_rating (review) == 0) continue; /* the user_hash matches, so mark this as our own review */ if (g_strcmp0 (as_review_get_reviewer_id (review), priv->user_hash) == 0) { as_review_set_flags (review, AS_REVIEW_FLAG_SELF); } gs_app_add_review (app, review); } return TRUE; }
static void as_review_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { AsReview *review = AS_REVIEW (object); switch (prop_id) { case PROP_ID: as_review_set_id (review, g_value_get_string (value)); break; case PROP_SUMMARY: as_review_set_summary (review, g_value_get_string (value)); break; case PROP_DESCRIPTION: as_review_set_description (review, g_value_get_string (value)); break; case PROP_LOCALE: as_review_set_locale (review, g_value_get_string (value)); break; case PROP_RATING: as_review_set_rating (review, g_value_get_int (value)); break; case PROP_FLAGS: as_review_set_flags (review, g_value_get_uint64 (value)); break; case PROP_VERSION: as_review_set_version (review, g_value_get_string (value)); break; case PROP_REVIEWER_ID: as_review_set_reviewer_id (review, g_value_get_string (value)); break; case PROP_REVIEWER_NAME: as_review_set_reviewer_name (review, g_value_get_string (value)); break; case PROP_DATE: as_review_set_date (review, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }