Hello community,

here is the log from the commit of package purple-rocketchat for 
openSUSE:Leap:15.2 checked in at 2020-06-21 21:58:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/purple-rocketchat (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.purple-rocketchat.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "purple-rocketchat"

Sun Jun 21 21:58:50 2020 rev:5 rq:816171 version:0.0+hg20200403

Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/purple-rocketchat/purple-rocketchat.changes    
2020-01-15 15:45:43.191332885 +0100
+++ 
/work/SRC/openSUSE:Leap:15.2/.purple-rocketchat.new.3606/purple-rocketchat.changes
  2020-06-21 21:58:55.084086057 +0200
@@ -1,0 +2,8 @@
+Thu Apr 16 09:50:34 UTC 2020 - Matej Cepl <[email protected]>
+
+- Update to version 0.0+hg20200403 (changes since 0.0+hg20190218):
+  * 800ef89: Attempt to fetch user statuses at login. Not quite working yet 
though
+  * f723268: Subscribe to status changes to help issue #61
+  * 284839c: Use 'hg' instead of 'git' for PLUGIN_VERSION.
+
+-------------------------------------------------------------------

Old:
----
  purple-rocketchat-0.0+hg20190218.tar.xz

New:
----
  purple-rocketchat-0.0+hg20200403.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ purple-rocketchat.spec ++++++
--- /var/tmp/diff_new_pack.4D8WOv/_old  2020-06-21 21:58:55.372087709 +0200
+++ /var/tmp/diff_new_pack.4D8WOv/_new  2020-06-21 21:58:55.372087709 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package purple-rocketchat
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %define _name   rocketchat
 Name:           purple-rocketchat
-Version:        0.0+hg20190218
+Version:        0.0+hg20200403
 Release:        0
 Summary:        RocketChat protocol plugin for libpurple
 License:        GPL-2.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.4D8WOv/_old  2020-06-21 21:58:55.400087870 +0200
+++ /var/tmp/diff_new_pack.4D8WOv/_new  2020-06-21 21:58:55.400087870 +0200
@@ -4,7 +4,6 @@
     <param name="url">https://bitbucket.org/EionRobb/purple-rocketchat</param>
     <param name="filename">purple-rocketchat</param>
     <param name="versionformat">0.0+hg{date|localdate|shortdate}</param>
-    <param name="revision">cb171c8e78b92d71a738460dbc21ec4555d26f21</param>
   </service>
   <service mode="disabled" name="recompress">
     <param name="file">*.tar</param>

++++++ purple-rocketchat-0.0+hg20190218.tar.xz -> 
purple-rocketchat-0.0+hg20200403.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purple-rocketchat-0.0+hg20190218/Makefile 
new/purple-rocketchat-0.0+hg20200403/Makefile
--- old/purple-rocketchat-0.0+hg20190218/Makefile       2019-02-18 
19:17:59.000000000 +0100
+++ new/purple-rocketchat-0.0+hg20200403/Makefile       2020-04-03 
12:58:52.000000000 +0200
@@ -18,7 +18,7 @@
 endif
 
 ifneq ($(REVISION_ID),)
-PLUGIN_VERSION ?= 0.9.$(BUILD_DATE).git.r$(REVISION_NUMBER).$(REVISION_ID)
+PLUGIN_VERSION ?= 0.9.$(BUILD_DATE).hg.r$(REVISION_NUMBER).$(REVISION_ID)
 else
 PLUGIN_VERSION ?= 0.9.$(BUILD_DATE)
 endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/purple-rocketchat-0.0+hg20190218/librocketchat.c 
new/purple-rocketchat-0.0+hg20200403/librocketchat.c
--- old/purple-rocketchat-0.0+hg20190218/librocketchat.c        2019-02-18 
19:17:59.000000000 +0100
+++ new/purple-rocketchat-0.0+hg20200403/librocketchat.c        2020-04-03 
12:58:52.000000000 +0200
@@ -146,7 +146,7 @@
 #define PURPLE_CONVERSATION_UPDATE_UNSEEN     PURPLE_CONV_UPDATE_UNSEEN
 #define PURPLE_IS_IM_CONVERSATION(conv)       
(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
 #define PURPLE_IS_CHAT_CONVERSATION(conv)     
(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
-#define PURPLE_CONVERSATION(chatorim)         (chatorim == NULL ? NULL : 
chatorim->conv)
+#define PURPLE_CONVERSATION(chatorim)         ((chatorim) == NULL ? NULL : 
(chatorim)->conv)
 #define PURPLE_IM_CONVERSATION(conv)          PURPLE_CONV_IM(conv)
 #define PURPLE_CHAT_CONVERSATION(conv)        PURPLE_CONV_CHAT(conv)
 #define purple_conversation_present_error     purple_conv_present_error
@@ -771,6 +771,12 @@
        purple_http_request_header_set(request, "Accept", "*/*");
        purple_http_request_header_set(request, "User-Agent", 
ROCKETCHAT_USERAGENT);
        purple_http_request_header_set(request, "Cookie", cookies);
+       if (ya->session_token && *ya->session_token) {
+               purple_http_request_header_set(request, "X-Auth-Token", 
ya->session_token);
+       }
+       if (ya->self_user_id && *ya->self_user_id) {
+               purple_http_request_header_set(request, "X-User-Id", 
ya->self_user_id);
+       }
        
        if (postdata) {
                purple_debug_info("rocketchat", "With postdata %s\n", postdata);
@@ -805,6 +811,12 @@
        g_string_append_printf(headers, "Accept: */*\r\n");
        g_string_append_printf(headers, "User-Agent: " ROCKETCHAT_USERAGENT 
"\r\n");
        g_string_append_printf(headers, "Cookie: %s\r\n", cookies);
+       if (ya->session_token && *ya->session_token) {
+               g_string_append_printf(headers, "X-Auth-Token: %s\r\n", 
ya->session_token);
+       }
+       if (ya->self_user_id && *ya->self_user_id) {
+               g_string_append_printf(headers, "X-User-Id: %s\r\n", 
ya->self_user_id);
+       }
 
        if (postdata) {
                purple_debug_info("rocketchat", "With postdata %s\n", postdata);
@@ -845,6 +857,7 @@
 static void rc_mark_room_messages_read(RocketChatAccount *ya, const gchar 
*room_id);
 static void rc_account_connected(RocketChatAccount *ya, JsonNode *node, 
gpointer user_data, JsonObject *error);
 static void rc_login_response(RocketChatAccount *ya, JsonNode *node, gpointer 
user_data, JsonObject *error);
+static void rc_got_users_presence(RocketChatAccount *ya, JsonNode *node, 
gpointer user_data, JsonObject *error);
 
 static void
 rc_set_two_factor_auth_code_cb(gpointer data, const gchar *twofactorcode)
@@ -928,9 +941,15 @@
        response = json_node_get_object(node);
        
        if (json_object_has_member(response, "token")) {
+               g_free(ya->session_token);
                ya->session_token = 
g_strdup(json_object_get_string_member(response, "token"));
        
}//a["{\"msg\":\"result\",\"id\":\"1\",\"result\":{\"id\":\"hZKg86uJavE6jYLya\",\"token\":\"OvG63dE9x79demZnrmBv4vnYYlGMMB-wRKVWFcTxQbv\",\"tokenExpires\":{\"$date\":1485062242977}}}"]
        
//a["{\"msg\":\"result\",\"id\":\"5\",\"error\":{\"error\":403,\"reason\":\"User
 has no password set\",\"message\":\"User has no password set 
[403]\",\"errorType\":\"Meteor.Error\"}}"]
+       
+       // Download all user presence (requires the session_token)
+       gchar *url = g_strconcat("https://";, ya->server, ya->path, 
"/api/v1/users.presence", NULL);
+       rc_fetch_url(ya, url, NULL, rc_got_users_presence, NULL);
+       g_free(url);
 }
 
 static void
@@ -1009,6 +1028,29 @@
 }
 
 static void
+rc_got_users_presence(RocketChatAccount *ya, JsonNode *node, gpointer 
user_data, JsonObject *error)
+{
+       if (node != NULL) {
+               JsonObject *response = json_node_get_object(node);
+               JsonArray *users = json_object_get_array_member(response, 
"users");
+               gint i, len = json_array_get_length(users);
+               
+               //latest are first
+               for (i = 0; i < len; i++) {
+                       JsonObject *user = json_array_get_object_element(users, 
i);
+                       const gchar *username = 
json_object_get_string_member(user, "username");
+                       const gchar *status = 
json_object_get_string_member(user, "status");
+                       const gchar *name = json_object_get_string_member(user, 
"name");
+                       
+                       purple_protocol_got_user_status(ya->account, username, 
status, NULL);
+                       if (name != NULL) {
+                               purple_serv_got_alias(ya->pc, username, name);
+                       }
+               }
+       }
+}
+
+static void
 rc_account_connected(RocketChatAccount *ya, JsonNode *node, gpointer 
user_data, JsonObject *error)
 {
        // Subscribe to user presences
@@ -1072,6 +1114,30 @@
                }
        }
        
+       {
+               const gchar *subs[] = {"user-status", "updateAvatar", 
"roles-change", NULL};
+               guint i;
+               //Subscribe to avatar/status changes
+               for (i = 0; subs[i]; i++) {
+                       data = json_object_new();
+                       params = json_array_new();
+                       
+                       id = g_strdup_printf("%012XFFFF", g_random_int());
+                       json_object_set_string_member(data, "id", id);
+                       g_free(id);
+                       
+                       json_object_set_string_member(data, "msg", "sub");
+                       json_object_set_string_member(data, "name", 
"stream-notify-logged");
+                       
+                       json_array_add_string_element(params, subs[i]);
+                       json_array_add_boolean_element(params, FALSE);
+                       
+                       json_object_set_array_member(data, "params", params);
+                       
+                       rc_socket_write_json(ya, data);
+               }
+       }
+       
        // Listen to all incoming direct messages?
        data = json_object_new();
        params = json_array_new();
@@ -1448,7 +1514,6 @@
                                users = g_list_delete_link(users, users);
                        }
                        
-                       g_list_free(users);
                        g_list_free(flags);
                }
     } else if (purple_strequal(msg, "changed")) {
@@ -1520,6 +1585,7 @@
                                                        if (cb == NULL) {
                                                                // Getting 
notified about a buddy we dont know about yet
                                                                //TODO add buddy
+                                                               
g_strfreev(event_split);
                                                                return;
                                                        }
                                                        cbflags = 
purple_chat_user_get_flags(cb);
@@ -1593,6 +1659,29 @@
                        }
                        g_strfreev(event_split);
                        
+               } else if (purple_strequal(collection, "stream-notify-logged")) 
{
+                       JsonObject *fields = json_object_get_object_member(obj, 
"fields");
+                       const gchar *eventName = 
json_object_get_string_member(fields, "eventName");
+                       JsonArray *args = json_object_get_array_member(fields, 
"args");
+                       
+                       if (purple_strequal(eventName, "user-status")) {
+                               //"args": [["uNqJeFuag2344i62k", "rocket.cat", 
1]]
+                               JsonArray *statusarr = 
json_array_get_array_element(args, 0);
+                               const gchar *username = 
json_array_get_string_element(statusarr, 1);
+                               guint64 status_id = 
json_array_get_int_element(statusarr, 2);
+                               
+                               const gchar *status = "offline";
+                               if (status_id == 1) {
+                                       status = "online";
+                               } else if (status_id == 2) {
+                                       status = "away";
+                               } else if (status_id == 3) {
+                                       status = "busy";
+                               }
+                               
+                               purple_protocol_got_user_status(ya->account, 
username, status, NULL);
+                       }
+                       
                }
        } else if (purple_strequal(msg, "removed")) {
                const gchar *collection = json_object_get_string_member(obj, 
"collection");


Reply via email to