Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/EionRobb/skype4pidgin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEion Robb <eion@robbmob.com>2010-03-02 11:29:15 +0300
committerEion Robb <eion@robbmob.com>2010-03-02 11:29:15 +0300
commit4dcce0441ef14bf90db33d7679b0105ef1589314 (patch)
treeae76fcdec86c7f81e3fb0a81d7315d0dd7c01b7a /libskype.c
parent08d767ade8b3b2ce55bfaf0842e15000d029e956 (diff)
Allow public chat passwords to be given when adding a chat
Diffstat (limited to 'libskype.c')
-rw-r--r--libskype.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/libskype.c b/libskype.c
index 0616dae..bcc8c71 100644
--- a/libskype.c
+++ b/libskype.c
@@ -2247,7 +2247,11 @@ void skype_remove_group(PurpleConnection *gc, PurpleGroup *group)
void
skype_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
- skype_send_message_nowait("SET USER %s BUDDYSTATUS 2 %s", buddy->name, _("Please authorize me so I can add you to my buddy list."));
+ //Check that the buddy isn't already on the buddy list
+ if (!purple_find_buddy(buddy->account, buddy->name))
+ {
+ skype_send_message_nowait("SET USER %s BUDDYSTATUS 2 %s", buddy->name, _("Please authorize me so I can add you to my buddy list."));
+ }
if (buddy->alias == NULL || strlen(buddy->alias) == 0)
skype_update_buddy_alias(buddy);
else
@@ -2615,6 +2619,7 @@ skype_join_chat(PurpleConnection *gc, GHashTable *data)
{
SkypeChat *chat;
PurpleConvChat *convchat;
+ gchar *password;
gchar *chat_id = (gchar *)g_hash_table_lookup(data, "chat_id");
if (chat_id == NULL)
@@ -2623,11 +2628,20 @@ skype_join_chat(PurpleConnection *gc, GHashTable *data)
}
chat = skype_find_chat(chat_id, gc->account);
skype_send_message_nowait("ALTER CHAT %s JOIN", chat_id);
+
+ password = (gchar *)g_hash_table_lookup(data, "password");
+ if (password != NULL)
+ {
+ skype_send_message_nowait("ALTER CHAT %s ENTERPASSWORD %s", chat_id, password);
+ }
+
if (!chat->conv)
{
chat->prpl_chat_id = g_str_hash(chat_id);
chat->conv = serv_got_joined_chat(gc, chat->prpl_chat_id, chat_id);
purple_conversation_set_data(chat->conv, "chat_id", g_strdup(chat_id));
+ if (password != NULL)
+ purple_conversation_set_data(chat->conv, "password", g_strdup(password));
} else {
convchat = purple_conversation_get_chat_data(chat->conv);
convchat->left = FALSE;
@@ -2693,6 +2707,12 @@ skype_join_chat_info(PurpleConnection *gc)
pce->required = TRUE;
m = g_list_append(m, pce);
+ pce = g_new0(struct proto_chat_entry, 1);
+ pce->label = _("Password");
+ pce->identifier = "password";
+ pce->required = FALSE;
+ m = g_list_append(m, pce);
+
return m;
}