mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Fix room notification reminders
This commit is contained in:
parent
abc2f0de39
commit
62b0cdd8fd
@ -277,6 +277,42 @@ prefs_do_room_notify(gboolean current_win, const char *const roomjid, const char
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
prefs_do_room_notify_mention(const char *const roomjid, int unread, gboolean mention, gboolean trigger)
|
||||
{
|
||||
gboolean notify_room = FALSE;
|
||||
if (g_key_file_has_key(prefs, roomjid, "notify", NULL)) {
|
||||
notify_room = g_key_file_get_boolean(prefs, roomjid, "notify", NULL);
|
||||
} else {
|
||||
notify_room = prefs_get_boolean(PREF_NOTIFY_ROOM);
|
||||
}
|
||||
if (notify_room && unread > 0) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean notify_mention = FALSE;
|
||||
if (g_key_file_has_key(prefs, roomjid, "notify.mention", NULL)) {
|
||||
notify_mention = g_key_file_get_boolean(prefs, roomjid, "notify.mention", NULL);
|
||||
} else {
|
||||
notify_mention = prefs_get_boolean(PREF_NOTIFY_ROOM_MENTION);
|
||||
}
|
||||
if (notify_mention && mention) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gboolean notify_trigger = FALSE;
|
||||
if (g_key_file_has_key(prefs, roomjid, "notify.trigger", NULL)) {
|
||||
notify_trigger = g_key_file_get_boolean(prefs, roomjid, "notify.trigger", NULL);
|
||||
} else {
|
||||
notify_trigger = prefs_get_boolean(PREF_NOTIFY_ROOM_TRIGGER);
|
||||
}
|
||||
if (notify_trigger && trigger) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
prefs_set_room_notify(const char *const roomjid, gboolean value)
|
||||
{
|
||||
|
@ -235,6 +235,7 @@ void prefs_set_string(preference_t pref, char *value);
|
||||
gboolean prefs_do_chat_notify(gboolean current_win);
|
||||
gboolean prefs_do_room_notify(gboolean current_win, const char *const roomjid, const char *const mynick,
|
||||
const char *const theirnick, const char *const message, gboolean mention, gboolean trigger_found);
|
||||
gboolean prefs_do_room_notify_mention(const char *const roomjid, int unread, gboolean mention, gboolean trigger);
|
||||
GList* prefs_message_get_triggers(const char *const message);
|
||||
|
||||
void prefs_set_room_notify(const char *const roomjid, gboolean value);
|
||||
|
@ -345,7 +345,7 @@ ProfWin* win_create_muc_config(const char *const title, DataForm *form);
|
||||
ProfWin* win_create_private(const char *const fulljid);
|
||||
void win_update_virtual(ProfWin *window);
|
||||
void win_free(ProfWin *window);
|
||||
gboolean win_notify(ProfWin *window);
|
||||
gboolean win_notify_remind(ProfWin *window);
|
||||
int win_unread(ProfWin *window);
|
||||
void win_resize(ProfWin *window);
|
||||
void win_hide_subwin(ProfWin *window);
|
||||
|
@ -1308,7 +1308,7 @@ win_has_active_subwin(ProfWin *window)
|
||||
}
|
||||
|
||||
gboolean
|
||||
win_notify(ProfWin *window)
|
||||
win_notify_remind(ProfWin *window)
|
||||
{
|
||||
switch (window->type) {
|
||||
case WIN_CHAT:
|
||||
@ -1327,15 +1327,7 @@ win_notify(ProfWin *window)
|
||||
ProfMucWin *mucwin = (ProfMucWin*) window;
|
||||
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
|
||||
|
||||
if (prefs_get_room_notify(mucwin->roomjid) && mucwin->unread > 0) {
|
||||
return TRUE;
|
||||
} else if (prefs_get_room_notify_mention(mucwin->roomjid) && mucwin->unread_mentions) {
|
||||
return TRUE;
|
||||
} else if (prefs_get_room_notify_trigger(mucwin->roomjid) && mucwin->unread_triggers) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
return prefs_do_room_notify_mention(mucwin->roomjid, mucwin->unread, mucwin->unread_mentions, mucwin->unread_triggers);
|
||||
}
|
||||
case WIN_PRIVATE:
|
||||
{
|
||||
|
@ -622,7 +622,7 @@ wins_do_notify_remind(void)
|
||||
|
||||
while (curr) {
|
||||
ProfWin *window = curr->data;
|
||||
if (win_notify(window)) {
|
||||
if (win_notify_remind(window)) {
|
||||
g_list_free(values);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -497,7 +497,7 @@ ProfWin* win_create_private(const char * const fulljid)
|
||||
|
||||
void win_update_virtual(ProfWin *window) {}
|
||||
void win_free(ProfWin *window) {}
|
||||
gboolean win_notify(ProfWin *window)
|
||||
gboolean win_notify_remind(ProfWin *window)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user