mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-15 19:50:30 +00:00
docs: channel multi-owner overview: deleting the chat after a leave stopped before step 5 sends DEL for any owner
R3-1: the creator's through its link connection, a promoted owner's with its credentials, matching the destroy paragraph and the implementation plan.
This commit is contained in:
@@ -240,7 +240,7 @@ It cannot see, verify or promote a silent subscriber who joined earlier (§11).
|
||||
- every leaver erases its member private key. A later load of the group generates an unrelated key, so the erased one is gone.
|
||||
|
||||
**Repeating a leave.** A crash or a failed step leaves the leave half done. What happens next depends on where it stopped:
|
||||
- **Before step 5.** The membership stays current, because applying `revokedOwners` never changes this device's own membership (below). The app keeps offering Leave. A repeated leave that finds its memberId already in `revokedOwners` continues at step 4, and an `AUTH` error at step 4 counts as done. Until then, the device keeps its key, and devices that have not read the link data since still treat it as owner. Deleting the chat in this state is still a current owner's destroy: it sends `x.grp.del` and, for the creator, `DEL` on the link queue.
|
||||
- **Before step 5.** The membership stays current, because applying `revokedOwners` never changes this device's own membership (below). The app keeps offering Leave. A repeated leave that finds its memberId already in `revokedOwners` continues at step 4, and an `AUTH` error at step 4 counts as done. Until then, the device keeps its key, and devices that have not read the link data since still treat it as owner. Deleting the chat in this state is still a current owner's destroy: it sends `x.grp.del` and `DEL` on the link queue, the creator's through its link connection, a promoted owner's with its credentials (below).
|
||||
- **After step 5.** The chat is left. Deleting it completes step 6's link deletion locally, never with `DEL` (below).
|
||||
|
||||
**Why no `DEL`.** Today `APILeaveGroup` deletes the link connection with `DEL` on the shared queue (`deleteGroupLinkIfExists`, `Commands.hs:3246`, `Internal.hs:1739-1748`). After step 4 the creator's key is normally no longer authorised, but a concurrent `RKEY` by another owner can authorise it again (§3), so the deletion is local.
|
||||
|
||||
Reference in New Issue
Block a user