Handle occupant nick change in private wins

This commit is contained in:
James Booth
2016-02-02 23:25:26 +00:00
parent 3ddef99dfe
commit 292c9cf454
3 changed files with 27 additions and 0 deletions

View File

@@ -197,6 +197,30 @@ wins_get_private_chats(const char *const roomjid)
return result;
}
void
wins_private_nick_change(const char *const roomjid, const char *const oldnick, const char *const newnick)
{
Jid *oldjid = jid_create_from_bare_and_resource(roomjid, oldnick);
ProfPrivateWin *privwin = wins_get_private(oldjid->fulljid);
if (privwin) {
free(privwin->fulljid);
Jid *newjid = jid_create_from_bare_and_resource(roomjid, newnick);
privwin->fulljid = strdup(newjid->fulljid);
win_vprint((ProfWin*)privwin, '!', 0, NULL, 0, THEME_THEM, NULL, "** %s is now known as %s.", oldjid->resourcepart, newjid->resourcepart);
autocomplete_remove(wins_ac, oldjid->fulljid);
autocomplete_remove(wins_close_ac, oldjid->fulljid);
autocomplete_add(wins_ac, newjid->fulljid);
autocomplete_add(wins_close_ac, newjid->fulljid);
jid_destroy(newjid);
}
jid_destroy(oldjid);
}
ProfWin*
wins_get_current(void)
{