]> www.infradead.org Git - pidgin-chime.git/commitdiff
Kill final use of ChimeConnectionPrivate from messages.c
authorDavid Woodhouse <dwmw@amazon.co.uk>
Tue, 22 Aug 2017 14:50:04 +0000 (15:50 +0100)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Tue, 22 Aug 2017 14:50:04 +0000 (15:50 +0100)
chime-connection.c
chime-object.h
messages.c

index e18399a743bcfdabe6d955ca85416151e69c60bf..fbe4dac2d4a3fcf39cf15d4b609d9a485d14f710 100644 (file)
@@ -1133,3 +1133,61 @@ chime_connection_fetch_messages_finish(ChimeConnection *self, GAsyncResult *resu
 
        return g_task_propagate_boolean(G_TASK(result), error);
 }
+
+
+
+static void update_last_read_cb(ChimeConnection *self, SoupMessage *msg,
+                               JsonNode *node, gpointer user_data)
+{
+       GTask *task = G_TASK(user_data);
+
+       /* Nothing to do o nsuccess */
+       if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) {
+               g_task_return_new_error(task, CHIME_ERROR,
+                                       CHIME_ERROR_NETWORK,
+                                       _("Failed to set LastReadMessageID: %d %s"),
+                                       msg->status_code, msg->reason_phrase);
+       } else
+               g_task_return_boolean(task, TRUE);
+
+       g_object_unref(task);
+}
+
+
+void chime_connection_update_last_read_sync (ChimeConnection    *self,
+                                            ChimeObject        *obj,
+                                            const gchar        *msg_id,
+                                            GCancellable       *cancellable,
+                                            GAsyncReadyCallback callback,
+                                            gpointer            user_data)
+{
+       g_return_if_fail(CHIME_IS_CONNECTION(self));
+       ChimeConnectionPrivate *priv = CHIME_CONNECTION_GET_PRIVATE (self);
+
+       GTask *task = g_task_new(self, cancellable, callback, user_data);
+
+       JsonBuilder *jb = json_builder_new();
+       jb = json_builder_begin_object(jb);
+       jb = json_builder_set_member_name(jb, "LastReadMessageId");
+       jb = json_builder_add_string_value(jb, msg_id);
+       jb = json_builder_end_object(jb);
+
+       SoupURI *uri = soup_uri_new_printf(priv->messaging_url,
+                                          "/%ss/%s",
+                                          CHIME_IS_ROOM(obj) ? "room" : "conversation",
+                                          chime_object_get_id(obj));
+       JsonNode *node = json_builder_get_root(jb);
+       chime_connection_queue_http_request(self, node, uri, "POST", update_last_read_cb, task);
+       json_node_unref(node);
+       g_object_unref(jb);
+}
+
+gboolean chime_connection_update_last_read_finish (ChimeConnection  *self,
+                                                  GAsyncResult     *result,
+                                                  GError          **error)
+{
+       g_return_val_if_fail(CHIME_IS_CONNECTION(self), FALSE);
+       g_return_val_if_fail(g_task_is_valid(result, self), FALSE);
+
+       return g_task_propagate_boolean(G_TASK(result), error);
+}
index 42b1e82de38f35900797f7c5b846baf31890e03e..6c13c1acadb908af4c648dc6abd9bbba8ea80fd9 100644 (file)
@@ -85,6 +85,17 @@ void             chime_connection_fetch_messages_async       (ChimeConnection
 gboolean         chime_connection_fetch_messages_finish      (ChimeConnection  *self,
                                                               GAsyncResult     *result,
                                                               GError          **error);
+
+void             chime_connection_update_last_read_sync      (ChimeConnection    *self,
+                                                              ChimeObject        *obj,
+                                                              const gchar        *msg_id,
+                                                              GCancellable       *cancellable,
+                                                              GAsyncReadyCallback callback,
+                                                              gpointer            user_data);
+
+gboolean         chime_connection_update_last_read_finish    (ChimeConnection  *self,
+                                                              GAsyncResult     *result,
+                                                              GError          **error);
 G_END_DECLS
 
 #endif /* __CHIME_OBJECT_H__ */
index fa38ca067cb02d66aef7c0d4ca914066517a2739..7018c636961879dfe6c42a55df6d153908b51a95 100644 (file)
@@ -26,7 +26,6 @@
 #include <debug.h>
 
 #include "chime.h"
-#include "chime-connection-private.h"
 
 static void mark_msg_seen(GQueue *q, const gchar *id)
 {
@@ -240,7 +239,6 @@ void cleanup_msgs(struct chime_msgs *msgs)
 void chime_update_last_msg(ChimeConnection *cxn, ChimeObject *obj,
                           const gchar *msg_time, const gchar *msg_id)
 {
-       ChimeConnectionPrivate *priv = CHIME_CONNECTION_GET_PRIVATE (cxn);
        gchar *key = g_strdup_printf("last-%s-%s",
                                     CHIME_IS_ROOM(obj) ? "room" : "conversation",
                                     chime_object_get_id(obj));
@@ -250,20 +248,7 @@ void chime_update_last_msg(ChimeConnection *cxn, ChimeObject *obj,
        g_free(key);
        g_free(val);
 
-       JsonBuilder *jb = json_builder_new();
-       jb = json_builder_begin_object(jb);
-       jb = json_builder_set_member_name(jb, "LastReadMessageId");
-       jb = json_builder_add_string_value(jb, msg_id);
-       jb = json_builder_end_object(jb);
-
-       SoupURI *uri = soup_uri_new_printf(priv->messaging_url,
-                                          "/%ss/%s",
-                                          CHIME_IS_ROOM(obj) ? "room" : "conversation",
-                                          chime_object_get_id(obj));
-       JsonNode *node = json_builder_get_root(jb);
-       chime_connection_queue_http_request(cxn, node, uri, "POST", NULL, NULL);
-       json_node_unref(node);
-       g_object_unref(jb);
+       chime_connection_update_last_read_sync(cxn, obj, msg_id, NULL, NULL, NULL);
 }
 
 /* WARE! msg_id is allocated, msg_time is const */