aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--protocols/skype/skype.c34
-rw-r--r--protocols/skype/t/groupchat-invite-bitlbee.mock2
-rw-r--r--protocols/skype/t/groupchat-invite-skyped.mock2
-rw-r--r--protocols/skype/t/groupchat-invited-bitlbee.mock2
-rw-r--r--protocols/skype/t/groupchat-leave-bitlbee.mock2
-rw-r--r--protocols/skype/t/groupchat-leave-skyped.mock10
-rw-r--r--protocols/skype/t/groupchat-msg-bitlbee.mock2
-rw-r--r--protocols/skype/t/groupchat-msg-skyped.mock10
-rw-r--r--protocols/skype/t/groupchat-topic-bitlbee.mock2
9 files changed, 32 insertions, 34 deletions
diff --git a/protocols/skype/skype.c b/protocols/skype/skype.c
index ade5b8c6..a21af8ef 100644
--- a/protocols/skype/skype.c
+++ b/protocols/skype/skype.c
@@ -322,6 +322,24 @@ static struct skype_group *skype_group_by_name(struct im_connection *ic, char *n
return NULL;
}
+static struct groupchat *skype_chat_get_or_create(struct im_connection *ic, char *id)
+{
+ struct skype_data *sd = ic->proto_data;
+ struct groupchat *gc = bee_chat_by_title(ic->bee, ic, id);
+
+ if (!gc) {
+ gc = imcb_chat_new(ic, id);
+ imcb_chat_name_hint(gc, id);
+ imcb_chat_add_buddy(gc, sd->username);
+
+ skype_printf(ic, "GET CHAT %s ADDER\n", id);
+ skype_printf(ic, "GET CHAT %s TOPIC\n", id);
+ skype_printf(ic, "GET CHAT %s ACTIVEMEMBERS\n", id);
+ }
+
+ return gc;
+}
+
static void skype_parse_users(struct im_connection *ic, char *line)
{
char **i, **nicks;
@@ -686,7 +704,7 @@ static void skype_parse_chatmessage(struct im_connection *ic, char *line)
} else if (!strncmp(info, "CHATNAME ", 9)) {
info += 9;
if (sd->handle && sd->body && sd->type) {
- struct groupchat *gc = bee_chat_by_title(ic->bee, ic, info);
+ struct groupchat *gc = skype_chat_get_or_create(ic, info);
int i;
for (i = 0; i < g_list_length(sd->body); i++) {
char *body = g_list_nth_data(sd->body, i);
@@ -1024,16 +1042,9 @@ static void skype_parse_chat(struct im_connection *ic, char *line)
imcb_chat_free(gc);
}
if (!strcmp(info, "STATUS MULTI_SUBSCRIBED")) {
- gc = bee_chat_by_title(ic->bee, ic, id);
- if (!gc) {
- gc = imcb_chat_new(ic, id);
- imcb_chat_name_hint(gc, id);
- }
- skype_printf(ic, "GET CHAT %s ADDER\n", id);
- skype_printf(ic, "GET CHAT %s TOPIC\n", id);
+ skype_chat_get_or_create(ic, id);
} else if (!strcmp(info, "STATUS DIALOG") && sd->groupchat_with) {
- gc = imcb_chat_new(ic, id);
- imcb_chat_name_hint(gc, id);
+ gc = skype_chat_get_or_create(ic, id);
/* According to the docs this
* is necessary. However it
* does not seem the situation
@@ -1044,11 +1055,8 @@ static void skype_parse_chat(struct im_connection *ic, char *line)
g_snprintf(buf, IRC_LINE_SIZE, "%s@skype.com",
sd->groupchat_with);
imcb_chat_add_buddy(gc, buf);
- imcb_chat_add_buddy(gc, sd->username);
g_free(sd->groupchat_with);
sd->groupchat_with = NULL;
- skype_printf(ic, "GET CHAT %s ADDER\n", id);
- skype_printf(ic, "GET CHAT %s TOPIC\n", id);
} else if (!strcmp(info, "STATUS UNSUBSCRIBED")) {
gc = bee_chat_by_title(ic->bee, ic, id);
if (gc) {
diff --git a/protocols/skype/t/groupchat-invite-bitlbee.mock b/protocols/skype/t/groupchat-invite-bitlbee.mock
index bee689f1..b79a8faa 100644
--- a/protocols/skype/t/groupchat-invite-bitlbee.mock
+++ b/protocols/skype/t/groupchat-invite-bitlbee.mock
@@ -6,6 +6,6 @@
<< PRIVMSG &bitlbee :account skype on
>> :bob!bob@skype.com JOIN :&bitlbee
<< PRIVMSG &bitlbee :chat with bob
->> 353 alice = ##alice/$bob;a7ab206ec78 :@alice bob @root
+>> 353 alice = ##alice/$bob;a7ab206ec78 :@alice @root
<< INVITE cecil ##alice/$bob;a7ab206ec78
>> cecil@skype.com JOIN :##alice/$bob;a7ab206ec78
diff --git a/protocols/skype/t/groupchat-invite-skyped.mock b/protocols/skype/t/groupchat-invite-skyped.mock
index 214ebec0..472c6801 100644
--- a/protocols/skype/t/groupchat-invite-skyped.mock
+++ b/protocols/skype/t/groupchat-invite-skyped.mock
@@ -25,6 +25,8 @@
<< CHAT #alice/$bob;a7ab206ec78060f1 NAME #alice/$bob;a7ab206ec78060f1
>> GET CHAT #alice/$bob;a7ab206ec78060f1 TOPIC
<< CHAT #alice/$bob;a7ab206ec78060f1 TOPIC
+>> GET CHAT #alice/$bob;a7ab206ec78060f1 ACTIVEMEMBERS
+<< CHAT #alice/$bob;a7ab206ec78060f1 ACTIVEMEMBERS
<< CHATMESSAGE 206 STATUS SENDING
<< CHAT #alice/$bob;a7ab206ec78060f1 STATUS DIALOG
<< CHATMEMBER 204 ROLE USER
diff --git a/protocols/skype/t/groupchat-invited-bitlbee.mock b/protocols/skype/t/groupchat-invited-bitlbee.mock
index bf950774..344d5f71 100644
--- a/protocols/skype/t/groupchat-invited-bitlbee.mock
+++ b/protocols/skype/t/groupchat-invited-bitlbee.mock
@@ -5,4 +5,4 @@
<< PRIVMSG &bitlbee :account add skype alice foo
<< PRIVMSG &bitlbee :account skype on
>> JOIN :##cecil/$bob;4d8cc996579
->> 353 alice = ##cecil/$bob;4d8cc996579 :@alice bob cecil @root
+>> 353 alice = ##cecil/$bob;4d8cc996579 :@alice @root
diff --git a/protocols/skype/t/groupchat-leave-bitlbee.mock b/protocols/skype/t/groupchat-leave-bitlbee.mock
index fefe54c0..0a1c02df 100644
--- a/protocols/skype/t/groupchat-leave-bitlbee.mock
+++ b/protocols/skype/t/groupchat-leave-bitlbee.mock
@@ -6,6 +6,6 @@
<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true
<< PRIVMSG &bitlbee :account skype on
>> JOIN :##cecil/$bob;4d8cc996579
->> 353 alice = ##cecil/$bob;4d8cc996579 :@alice bob cecil @root
+>> 353 alice = ##cecil/$bob;4d8cc996579 :@alice @root
<< PART ##cecil/$bob;4d8cc996579
>> PRIVMSG &bitlbee :alice: CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS UNSUBSCRIBED
diff --git a/protocols/skype/t/groupchat-leave-skyped.mock b/protocols/skype/t/groupchat-leave-skyped.mock
index 86150d1c..49601c28 100644
--- a/protocols/skype/t/groupchat-leave-skyped.mock
+++ b/protocols/skype/t/groupchat-leave-skyped.mock
@@ -35,14 +35,8 @@
<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS
>> GET CHATMESSAGE 188 FROM_HANDLE
<< CHATMESSAGE 188 FROM_HANDLE bob
>> GET CHATMESSAGE 188 BODY
diff --git a/protocols/skype/t/groupchat-msg-bitlbee.mock b/protocols/skype/t/groupchat-msg-bitlbee.mock
index eae6d6e9..114084ba 100644
--- a/protocols/skype/t/groupchat-msg-bitlbee.mock
+++ b/protocols/skype/t/groupchat-msg-bitlbee.mock
@@ -6,6 +6,6 @@
<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true
<< PRIVMSG &bitlbee :account skype on
>> JOIN :##cecil/$bob;4d8cc996579
->> 353 alice = ##cecil/$bob;4d8cc996579 :@alice bob cecil @root
+>> 353 alice = ##cecil/$bob;4d8cc996579 :@alice @root
<< PRIVMSG ##cecil/$bob;4d8cc996579 :hello
>> PRIVMSG &bitlbee :alice: CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVITY_TIMESTAMP
diff --git a/protocols/skype/t/groupchat-msg-skyped.mock b/protocols/skype/t/groupchat-msg-skyped.mock
index e939585c..c49604a2 100644
--- a/protocols/skype/t/groupchat-msg-skyped.mock
+++ b/protocols/skype/t/groupchat-msg-skyped.mock
@@ -35,14 +35,8 @@
<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice
>> GET CHATMESSAGE 188 FROM_HANDLE
<< CHATMESSAGE 188 FROM_HANDLE bob
>> GET CHATMESSAGE 188 BODY
diff --git a/protocols/skype/t/groupchat-topic-bitlbee.mock b/protocols/skype/t/groupchat-topic-bitlbee.mock
index 431493c9..fe995448 100644
--- a/protocols/skype/t/groupchat-topic-bitlbee.mock
+++ b/protocols/skype/t/groupchat-topic-bitlbee.mock
@@ -5,6 +5,6 @@
<< PRIVMSG &bitlbee :account add skype alice foo
<< PRIVMSG &bitlbee :account skype on
>> JOIN :##cecil/$bob;4d8cc996579
->> 353 alice = ##cecil/$bob;4d8cc996579 :@alice bob cecil @root
+>> 353 alice = ##cecil/$bob;4d8cc996579 :@alice @root
<< TOPIC ##cecil/$bob;4d8cc996579 :topic
>> TOPIC ##cecil/$bob;4d8cc996579 :topic