1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-09-22 19:45:54 -04:00

statusbar: check if roster exists

We destory the roster in ev_disconnect_cleanup().
Adding a function to test if the roster has been destroyed and testing
for it in the statusbar.

So now when the connection is lost 'Lost connection' is printed in all
open windows.
We can then reconnect with `/connect accountname`.

Should fix https://github.com/profanity-im/profanity/issues/1083
This commit is contained in:
Michael Vetter 2019-06-04 16:02:56 +02:00
parent 2d00444702
commit b210fb3603
3 changed files with 13 additions and 2 deletions

View File

@ -187,7 +187,10 @@ _create_tab(const int win, win_type_t wintype, char *identifier, gboolean highli
tab->display_name = NULL;
if (tab->window_type == WIN_CHAT) {
PContact contact = roster_get_contact(tab->identifier);
PContact contact = NULL;
if (roster_exists()) {
contact = roster_get_contact(tab->identifier);
}
if (contact && p_contact_name(contact)) {
tab->display_name = strdup(p_contact_name(contact));
} else {
@ -601,5 +604,4 @@ _display_name(StatusBarTab *tab)
g_free(trimmed);
return trimmedname;
}

View File

@ -707,3 +707,11 @@ roster_process_pending_presence(void)
g_slist_free(roster_pending_presence);
roster_pending_presence = NULL;
}
gboolean
roster_exists(void) {
if (roster != NULL) {
return TRUE;
}
return FALSE;
}

View File

@ -73,5 +73,6 @@ char* roster_get_msg_display_name(const char *const barejid, const char *const r
gint roster_compare_name(PContact a, PContact b);
gint roster_compare_presence(PContact a, PContact b);
void roster_process_pending_presence(void);
gboolean roster_exists(void);
#endif