diff options
-rw-r--r-- | protocols/skype/skype.c | 34 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-invite-bitlbee.mock | 2 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-invite-skyped.mock | 2 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-invited-bitlbee.mock | 2 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-leave-bitlbee.mock | 2 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-leave-skyped.mock | 10 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-msg-bitlbee.mock | 2 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-msg-skyped.mock | 10 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-topic-bitlbee.mock | 2 |
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 |