From 70fdfa77090e8d46c407af74fe82261f3124ecf2 Mon Sep 17 00:00:00 2001 From: Markus Koch Date: Fri, 26 Jul 2019 20:47:54 +0200 Subject: [PATCH] Add handler for invalid tags --- client/src/cart_item.c | 14 ++++++++++++-- client/src/cart_item.h | 6 +++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/client/src/cart_item.c b/client/src/cart_item.c index 9fc09b1..ea4f199 100644 --- a/client/src/cart_item.c +++ b/client/src/cart_item.c @@ -16,6 +16,8 @@ typedef struct _YacosCartItemPriv { yacos_tag_id tag_id; + yacos_cart_item_status status; + struct api { gchar *url_base; gchar *token; @@ -101,6 +103,7 @@ void yacos_cart_item_set_id(YacosCartItem *self, yacos_tag_id tag_id) gchar *id_str; gchar *id_str2; + self->priv.status = YACOS_CART_ITEM_STATUS_PENDING; self->priv.tag_id = tag_id; id_str = yacos_tag_id_to_str(tag_id); @@ -117,10 +120,15 @@ static void yacos_cart_item_fetch_meta_cb (SoupSession *session, SoupMessage *ms const char *temp; JsonParser *parser; JsonReader *reader; + const static GdkRGBA color_error = {.red = 1.0, .green = 0.0, .blue = 0.0, .alpha = 1.0}; if (msg->status_code != 200) { - // TODO: Make this somewhat error tolerant - g_error("Received error code %d from server.", msg->status_code); + g_warning("Received error code %d from server.", msg->status_code); + gtk_label_set_text(GTK_LABEL(self->priv.label_title), "Unknown article"); + gtk_widget_override_color(self->priv.label_title, GTK_STATE_FLAG_NORMAL, &color_error); + gtk_label_set_text(GTK_LABEL(self->priv.label_description), "This article will be ignored on checkout."); + gtk_label_set_text(GTK_LABEL(self->priv.label_comment), "If you think this is an error, please contact a member of staff."); + self->priv.status = YACOS_CART_ITEM_STATUS_INVALID; return; } @@ -149,6 +157,8 @@ static void yacos_cart_item_fetch_meta_cb (SoupSession *session, SoupMessage *ms g_object_unref (reader); g_object_unref (parser); + + self->priv.status = YACOS_CART_ITEM_STATUS_VALID; } void yacos_cart_item_fetch_meta(YacosCartItem *self) diff --git a/client/src/cart_item.h b/client/src/cart_item.h index f27275b..ed8ef8a 100644 --- a/client/src/cart_item.h +++ b/client/src/cart_item.h @@ -10,7 +10,11 @@ G_DECLARE_FINAL_TYPE(YacosCartItem, yacos_cart_item, YACOS, CART_ITEM, GtkListBo #define TYPE_YACOS_CART_ITEM (yacos_cart_item_get_type()) - +typedef enum _yacos_cart_item_status { + YACOS_CART_ITEM_STATUS_PENDING = 0, + YACOS_CART_ITEM_STATUS_VALID, + YACOS_CART_ITEM_STATUS_INVALID +} yacos_cart_item_status; GtkWidget *yacos_cart_item_new(void); void yacos_cart_item_set_id(YacosCartItem *self, yacos_tag_id tag_id);