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
|
* Returns TRUE if the specified nick exists in the room's roster
|
||||||
*/
|
*/
|
||||||
|
@ -38,6 +38,7 @@ gboolean muc_room_is_active(const char * const room);
|
|||||||
gboolean muc_room_is_autojoin(const char * const room);
|
gboolean muc_room_is_autojoin(const char * const room);
|
||||||
GList* muc_get_active_room_list(void);
|
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);
|
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);
|
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);
|
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);
|
log_info("%s logged in successfully", account->jid);
|
||||||
account_free(account);
|
account_free(account);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user