chibenwa commented on code in PR #1495:
URL: https://github.com/apache/james-project/pull/1495#discussion_r1142926648
##########
server/data/data-jmap/src/main/java/org/apache/james/jmap/api/change/MailboxChange.java:
##########
@@ -226,7 +226,21 @@ public List<JmapChange>
fromMailboxACLUpdated(MailboxACLUpdated mailboxACLUpdate
.delegated()
.build());
- return Stream.concat(Stream.of(ownerChange), shareeChanges)
+ Stream<MailboxChange> deletionChanges =
mailboxACLUpdated.getAclDiff()
+ .removedEntries()
+ .filter(entry ->
entry.getKey().getNameType().equals(MailboxACL.NameType.user))
+ .filter(entry -> !entry.getKey().isNegative())
+ .map(entry -> MailboxChange.builder()
+ .accountId(AccountId.fromString(entry.getKey().getName()))
+ .state(stateFactory.generate())
+ .date(now)
+ .isCountChange(false)
+
.destroyed(ImmutableList.of(mailboxACLUpdated.getMailboxId()))
Review Comment:
Client will fetch the id to get the changes and get "not found".
If it is re-shared then it will again appear as "updated" and thus will
eventually be synchronised.
With "destroyed" the client will drop the item. If I re-share it it might
appear as still destroyed because we fold changes. So never synchronised.
If you do not believe me, write this test:
```
Given bob mailbox in state A
AND bob revokes ritghts on [email protected] team mailbox -> his
mailboxes are in state B
AND alice re shares [email protected] -> his mailboxes are in state C
WHEN bob requests changes with state A
THEN [email protected] team mailbox appears as updated => synced
```
If it appears as destroyed it would not get synced ;-)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]