diff options
Diffstat (limited to 'protocols')
| -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 | 
