mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Rejoin private rooms after reconnecting
This commit is contained in:
parent
4384a1f468
commit
c7b3ff02ff
20
src/muc.c
20
src/muc.c
@ -297,6 +297,26 @@ muc_get_room_nick(const char * const room)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Return password for the specified room
|
||||
* The password is owned by the chat room and should not be modified or freed
|
||||
*/
|
||||
char *
|
||||
muc_get_room_password(const char * const room)
|
||||
{
|
||||
if (rooms != NULL) {
|
||||
ChatRoom *chat_room = g_hash_table_lookup(rooms, room);
|
||||
|
||||
if (chat_room != NULL) {
|
||||
return chat_room->password;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns TRUE if the specified nick exists in the room's roster
|
||||
*/
|
||||
|
@ -37,7 +37,8 @@ void muc_leave_room(const char * const room);
|
||||
gboolean muc_room_is_active(const char * const room);
|
||||
gboolean muc_room_is_autojoin(const char * const room);
|
||||
GList* muc_get_active_room_list(void);
|
||||
char * muc_get_room_nick(const char * const room);
|
||||
char* muc_get_room_nick(const char * const room);
|
||||
char* muc_get_room_password(const char * const room);
|
||||
|
||||
void muc_set_room_pending_nick_change(const char * const room, const char * const new_nick);
|
||||
gboolean muc_is_room_pending_nick_change(const char * const room);
|
||||
|
@ -94,6 +94,18 @@ handle_login_account_success(char *account_name)
|
||||
|
||||
ui_handle_login_account_success(account);
|
||||
|
||||
// attempt to rejoin rooms with passwords
|
||||
GList *curr = muc_get_active_room_list();
|
||||
while (curr != NULL) {
|
||||
char *password = muc_get_room_password(curr->data);
|
||||
if (password != NULL) {
|
||||
char *nick = muc_get_room_nick(curr->data);
|
||||
presence_join_room(curr->data, nick, password);
|
||||
}
|
||||
curr = g_list_next(curr);
|
||||
}
|
||||
g_list_free(curr);
|
||||
|
||||
log_info("%s logged in successfully", account->jid);
|
||||
account_free(account);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user