From: Michael Gruenewald Date: Mon, 12 Feb 2018 15:05:31 +0000 (+0100) Subject: Only consider active members for mentions X-Git-Tag: v0.9~67 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0e9f6a68c564d66bc808d971347b16d40995f5d8;p=pidgin-chime.git Only consider active members for mentions Inactive members are effectively not part of the chat anymore and shouldn't be considered for mentioning. This is especially helpful when a member changed their profile (e.g., mail, domain, whatnot) but not their display name. --- diff --git a/chat.c b/chat.c index ded11de..3015240 100644 --- a/chat.c +++ b/chat.c @@ -98,17 +98,20 @@ static gchar *parse_outbound_mentions(ChimeRoom *room, const gchar *message) replace(&parsed, "@present", "<@present|Present Members>"); while (members) { ChimeRoomMember *member = members->data; - const gchar *id = chime_contact_get_profile_id(member->contact); - const gchar *display_name = chime_contact_get_display_name(member->contact); - - if (strstr(parsed, display_name)) { - gchar *display_name_escaped = g_regex_escape_string(display_name, -1); - gchar *search = g_strdup_printf("(?", id, display_name); - replace(&parsed, search, chime_mention); - g_free(search); - g_free(chime_mention); + + if (member->active) { + const gchar *id = chime_contact_get_profile_id(member->contact); + const gchar *display_name = chime_contact_get_display_name(member->contact); + + if (strstr(parsed, display_name)) { + gchar *display_name_escaped = g_regex_escape_string(display_name, -1); + gchar *search = g_strdup_printf("(?", id, display_name); + replace(&parsed, search, chime_mention); + g_free(search); + g_free(chime_mention); + } } members = g_list_remove(members, member);