Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/jabglue.c @ 583:32ae027a3238
MUC: clean up departure message code
A message is now displayed when a buddy is banned/kicked.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Tue, 06 Dec 2005 21:13:03 +0100 |
parents | ad07c868ff43 |
children | 414fbf558f1e |
comparison
equal
deleted
inserted
replaced
582:bd176d6f34af | 583:32ae027a3238 |
---|---|
912 } | 912 } |
913 | 913 |
914 // Check for departure/arrival | 914 // Check for departure/arrival |
915 if (!mbnick && mbrole == role_none) { | 915 if (!mbnick && mbrole == role_none) { |
916 gchar *mbuf; | 916 gchar *mbuf; |
917 enum { leave=0, kick, ban } how; | |
918 bool we_left = FALSE; | |
919 | |
920 if (statuscode == 307) | |
921 how = kick; | |
922 else if (statuscode == 301) | |
923 how = ban; | |
917 | 924 |
918 // If this is a leave, check if it is ourself | 925 // If this is a leave, check if it is ourself |
919 m = buddy_getnickname(room_elt->data); | 926 m = buddy_getnickname(room_elt->data); |
927 | |
920 if (m && !strcmp(rname, m)) { | 928 if (m && !strcmp(rname, m)) { |
921 // _We_ have left! (kicked, banned, etc.) | 929 we_left = TRUE; // _We_ have left! (kicked, banned, etc.) |
922 gchar *mbuf; | |
923 | |
924 buddy_setnickname(room_elt->data, NULL); | 930 buddy_setnickname(room_elt->data, NULL); |
925 buddy_del_all_resources(room_elt->data); | 931 buddy_del_all_resources(room_elt->data); |
926 | 932 update_roster = TRUE; |
927 if (statuscode == 307) { | 933 } |
928 if (actorjid) | 934 |
929 mbuf = g_strdup_printf("You have been kicked from %s by <%s>." | 935 // The message depends on _who_ left, and _how_ |
930 "\nReason: %s", roomjid, actorjid, reason); | 936 if (how) { |
937 gchar *mbuf_end; | |
938 // Forced leave | |
939 if (actorjid) { | |
940 mbuf_end = g_strdup_printf("%s from %s by <%s>.\nReason: %s", | |
941 (how == ban ? "banned" : "kicked"), | |
942 roomjid, actorjid, | |
943 (reason ? reason : "None given")); | |
944 } else { | |
945 mbuf_end = g_strdup_printf("%s from %s.", | |
946 (how == ban ? "banned" : "kicked"), | |
947 roomjid); | |
948 } | |
949 if (we_left) | |
950 mbuf = g_strdup_printf("You have been %s", mbuf_end); | |
951 else | |
952 mbuf = g_strdup_printf("%s has been %s", rname, mbuf_end); | |
953 | |
954 g_free(mbuf_end); | |
955 } else { | |
956 // Natural leave | |
957 if (we_left) { | |
958 mbuf = g_strdup_printf("You have left %s", roomjid); | |
959 } else { | |
960 if (ustmsg) | |
961 mbuf = g_strdup_printf("%s has left: %s", rname, ustmsg); | |
931 else | 962 else |
932 mbuf = g_strdup_printf("You have been kicked from %s.", roomjid); | 963 mbuf = g_strdup_printf("%s has left", rname); |
933 } else if (statuscode == 301) { | |
934 if (actorjid) | |
935 mbuf = g_strdup_printf("You have been banned from %s by <%s>." | |
936 "\nReason: %s", roomjid, actorjid, reason); | |
937 else | |
938 mbuf = g_strdup_printf("You have been banned from %s.", roomjid); | |
939 } else { | |
940 mbuf = g_strdup_printf("You have left %s", roomjid); | |
941 } | 964 } |
965 } | |
966 | |
967 scr_WriteIncomingMessage(roomjid, mbuf, 0, | |
968 HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG); | |
969 | |
970 if (log_muc_conf) hlog_write_message(roomjid, 0, FALSE, mbuf); | |
971 | |
972 if (we_left) { | |
942 scr_LogPrint(LPRINT_LOGNORM, "%s", mbuf); | 973 scr_LogPrint(LPRINT_LOGNORM, "%s", mbuf); |
943 scr_WriteIncomingMessage(roomjid, mbuf, 0, | |
944 HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG); | |
945 g_free(mbuf); | 974 g_free(mbuf); |
946 update_roster = TRUE; | |
947 return; | 975 return; |
948 } | 976 } |
949 | |
950 if (ustmsg) mbuf = g_strdup_printf("%s has left: %s", rname, ustmsg); | |
951 else mbuf = g_strdup_printf("%s has left", rname); | |
952 scr_WriteIncomingMessage(roomjid, mbuf, 0, | |
953 HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG); | |
954 if (log_muc_conf) hlog_write_message(roomjid, 0, FALSE, mbuf); | |
955 g_free(mbuf); | 977 g_free(mbuf); |
956 } else if (buddy_getstatus(room_elt->data, rname) == offline && | 978 } else if (buddy_getstatus(room_elt->data, rname) == offline && |
957 ust != offline) { | 979 ust != offline) { |
958 gchar *mbuf; | 980 gchar *mbuf; |
959 if (buddy_getnickname(room_elt->data) == NULL) { | 981 if (buddy_getnickname(room_elt->data) == NULL) { |