github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/docs/diagrams/sharing-revisions.mmdc (about) 1 sequenceDiagram 2 %% https://mermaidjs.github.io/ 3 participant B as Bob 4 participant A as Alice 5 participant C as Charlie 6 7 Note over B,C: io.cozy.todos/todo1<br /> revs: 1-a 8 9 A-->>A: Update todo1<br />rev: 2-a 10 A-->>A: Update todo1<br />rev: 3-a 11 12 C-->>C: Update todo1<br />rev: 2-c 13 14 15 A-->>A: Update io.cozy.shared 16 note right of A: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a 17 18 C-->>C: Update io.cozy.shared 19 note right of C: io.cozy.todos/todo1<br /> revs: 1-a --> 2-c 20 21 par Replicate to Bob 22 A-->>B: replication: [todo1: revs: [2-a, 3-a]] 23 B-->>B: Apply changes 24 B-->>B: Update todo1<br />rev: 3-a 25 B-->>B: Update io.cozy.shared 26 note right of B: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a 27 and Replicate to Charlie 28 A-->>C: replication: [todo1: revs: [2-a, 3-a]] 29 C-->>C: Apply changes 30 C-->>C: Detect conflict for todo1: 2-a vs 2-c<br/>2-a wins 31 C-->>C: Update todo1<br/>rev: 3-a<br/> 32 C-->>C: Update io.cozy.shared 33 note right of C: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a<br />1-a --> 2-c 34 end 35 36 C-->>A: replication: [todo1: revs: [2-c, 3-a]] 37 A-->>A: Apply changes 38 A-->>A: Detect conflict for todo1: 2-a vs 2-c<br/>2-a wins 39 A-->>A: Update todo1<br/>rev: 3-a<br/> 40 A-->>A: Update io.cozy.shared 41 note right of A: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a<br />1-a --> 2-c 42 43 A-->>B: replication: [todo1: revs: [2-c, 3-a]] 44 B-->>B: Apply same treatment... 45 46 Note over B,C: io.cozy.todos/todo1<br /> revs: 1-a --> 2-a --> 3-a<br />1-a --> 2-c