mirror of
https://github.com/chatmail/core.git
synced 2026-04-19 14:36:29 +03:00
up to now, Chat-Group-Member-Added and -Removed commands result in a complete recreation of the memberlist by collecting all addresses from the From: and To: headers. this easily results in missed and accidentally removed members, esp. when several people at the same time scan a qr code to join a group. this commit changes the behavior of adding members by not removing members on the Chat-Group-Member-Added command. instead the existing memberlist is conjuncted with the memberlist seen in the message. only adding the member from the Chat-Group-Member-Added seems not to be sufficient - imaging a group of Alice and Bob: - Alice adds Claire - Bob adds Dave _before_ seeing that Alice added Claire - Dave would never get the information that Claire is in the group wrt Chat-Group-Member-Removed: this command does no longer recreate the memberlist but just remove _exactly_ the member mentioned in the header. there are situations, where a just removed member will be readded by out-of-order-messages, however, compared to missed members, this is seems to be acceptable - also as this is more visible and easier to fix (just remove the member again). might be that, in practise, this is not a big issue. while adding members is typically done in masses on bootstraping a group, this is typically not true for removing members.