Currently, users in a 1-1 chat can redact the other user's messages which goes against how almost all chat apps out there behave. This could cause a lot of confusion and abuse.
In a 1-1 chat setting, users should only be able to redact own messages, not the other participant's.
Log: not sent
Tested on the Linux desktop app version 0.9.8 and the Android app version 0.6.9.
I can see your reasoning, this is because a 1:1 is really no different to any room, and the initial two members are given admin status (PL100) which means they can do anything to that room
I've tagged this as a minor bug, but really I think it's an awkward side-effect of our permissions model.
As I understand it, there's no way to support the more expected behaviour of DM users' _not_ being able to redact each others' messages as it would require setting the message redaction power level to be higher than 100, which isn't possible.
I can't think of a quick fix to this; it might require a radical review of permissions :\
Short of a permissions overhaul, there's the option of hacking your way through supporting this:
However, that would result in people losing the Admin flag. A special case could be made to show the admin flag for PL99 in 1:1 chats.
This does however make the room harder to maintain if it ends up becoming a group chat.
Other than a permission overhaul, there is the option of treating 1-1 chats different to "rooms", i.e. having a completely different chat "type". Though I'm not sure what kind of new problems that will create.
Here's a radical thought:
How about _if_ we have the right to redact other's messages in the first place, only be allowed to redact messages of those whose power level is lower than ours, at the time the message was posted?
Not sure how viable the last part is as the PL change event can be redacted without undoing the PL change itself so the there's no surefire way of knowing the PL at a given time afaik
If that is possible, that surely must be a bug in the server/protocol. Redacting should only strip state events of any ancillary data, but leave the core state change intact.
maybe during room creation we can ask synapse initial state to have PL(redact) set to 101?
@t3chguy how would users lower it again? I think the PL being taken into account when redacting is really the best option.
This actually bit me today. Someone I had a chat going with decided to redact every event in the room, including all of the room's state. Was really hard to answer their question when the context was completely missing :(
this is going to be weird in general with the purge API... I wonder how other chat apps handle this.
it's worth noting we have three different types of erasure in Matrix atm:
I agree that 1 and 3 are pretty much contradictory to one another, as 1 lets you destroy someone's conversation timeline but 3 doesn't. However, I really do see an argument for users being able to self-redact when they copy-paste something embarassing into a 1:1.
tl;dr: unsure what the right solution is.
Users should absolutely be able to redact their own messages. I brought this up again because someone redacted my messages in a 1:1, including my join event. It's not very fun when it happens :(
tl;dr: unsure what the right solution is.
having it configurable at room-create time at the very least (and probably the only way to do it without changing proto)
redact: 101 would mean people can only redact their own
events: {"m.room.redaction": 101} would mean no one can redact
I'd assume both can be inserted at room creation time
Most helpful comment
Users should absolutely be able to redact their own messages. I brought this up again because someone redacted my messages in a 1:1, including my join event. It's not very fun when it happens :(