@@ -279,29 +279,55 @@ std::string formatMemberNotice(
279279 std::string sender = sentByCurrentUser ? " You" : senderName;
280280 std::string room = isDirectMessage ? " chat" : " room" ;
281281
282+ // Membership change events
282283 if (membership == " join" ) {
283- if (prevMembership == " invite" && !sameUser) {
284- return target + " accepted the invitation" + (reason.empty () ? " " : " : " + reason);
284+ if (prevMembership == " invite" ) {
285+ if (sameUser) return target + " accepted the invitation to this " + room;
286+ return target + " accepted the invitation from " + sender;
287+ }
288+ if (prevMembership == " ban" ) {
289+ return sender + " unbanned " + target;
290+ }
291+ if (prevMembership == " knock" ) {
292+ return target + " was accepted into the " + room;
285293 }
286294 return target + " joined the " + room;
287295 }
288296 if (membership == " invite" ) {
289- if (sameUser) return target + " joined the " + room;
297+ if (sentByCurrentUser) return " You invited " + target + (reason.empty () ? " " : " : " + reason);
298+ if (sameUser) return " You were invited to this " + room + (reason.empty () ? " " : " : " + reason);
290299 return sender + " invited " + target + (reason.empty () ? " " : " : " + reason);
291300 }
292301 if (membership == " ban" ) {
302+ if (sameUser) return target + " was banned from the " + room + (reason.empty () ? " " : " : " + reason);
293303 return sender + " banned " + target + (reason.empty () ? " " : " : " + reason);
294304 }
295305 if (membership == " leave" ) {
306+ if (sentByCurrentUser && sameUser) return " You left the " + room;
296307 if (sameUser) return target + " left the " + room;
297- return sender + " kicked " + target + (reason.empty () ? " " : " : " + reason);
308+ // Kicked by someone else
309+ return target + " was kicked by " + sender + (reason.empty () ? " " : " : " + reason);
298310 }
299311 if (membership == " knock" ) {
300- return target + " requested to join" + (reason.empty () ? " " : " : " + reason);
312+ if (sameUser) return " You requested to join this " + room + (reason.empty () ? " " : " : " + reason);
313+ return target + " requested to join the " + room + (reason.empty () ? " " : " : " + reason);
301314 }
315+
316+ // Profile change events (no membership change)
302317 if (membership == " displayname" ) {
318+ if (prevMembership == " avatar" ) return target + " changed their profile picture and display name to " + senderName;
303319 return target + " changed their display name to " + senderName;
304320 }
321+ if (membership == " avatar" ) {
322+ if (prevMembership == " displayname" ) return target + " changed their display name and profile picture" ;
323+ return target + " changed their profile picture" ;
324+ }
325+
326+ // Third-party invite
327+ if (membership == " third_party_invite" ) {
328+ return sender + " sent an email invitation to join the " + room;
329+ }
330+
305331 return target + " (" + membership + " )" ;
306332}
307333
0 commit comments