diff mcabber/src/jabglue.c @ 470:eaa2ad773192

Add "/room nick"
author Mikael Berthe <mikael@lilotux.net>
date Sun, 02 Oct 2005 00:37:16 +0200
parents a926523d2392
children 75442262c082
line wrap: on
line diff
--- a/mcabber/src/jabglue.c	Sat Oct 01 23:17:05 2005 +0200
+++ b/mcabber/src/jabglue.c	Sun Oct 02 00:37:16 2005 +0200
@@ -476,7 +476,6 @@
 {
   xmlnode x, y;
   gchar *roomid, *utf8_nickname;
-  GSList *roster_usr;
 
   if (!online || !room || !nickname) return;
 
@@ -490,11 +489,6 @@
     return;
   }
 
-  // We need to save the nickname for future use
-  roster_usr = roster_add_user(room, NULL, NULL, ROSTER_TYPE_ROOM);
-  if (roster_usr)
-    buddy_setnickname(roster_usr->data, nickname);
-
   // Send the XML request
   x = jutil_presnew(JPACKET__UNKNOWN, 0, 0);
   xmlnode_put_attrib(x, "from", jid_full(jc->user));
@@ -1104,6 +1098,9 @@
               g_free(mbuf);
               if (newname_noutf8) {
                 buddy_resource_setname(room_elt->data, rname, newname_noutf8);
+                m = buddy_getnickname(room_elt->data);
+                if (m && !strcmp(rname, m))
+                  buddy_setnickname(room_elt->data, newname_noutf8);
                 g_free(newname_noutf8);
               }
             }
@@ -1116,7 +1113,13 @@
             g_free(mbuf);
           } else if (buddy_getstatus(room_elt->data, rname) == offline &&
                      ust != offline) {
-            gchar *mbuf = g_strdup_printf("%s has joined", rname);
+            gchar *mbuf;
+            if (buddy_getnickname(room_elt->data) == NULL) {
+              buddy_setnickname(room_elt->data, rname);
+              mbuf = g_strdup_printf("You have joined as \"%s\"", rname);
+            } else {
+              mbuf = g_strdup_printf("%s has joined", rname);
+            }
             scr_WriteIncomingMessage(r, mbuf, 0, HBB_PREFIX_INFO);
             g_free(mbuf);
           }