public Task<bool> UpdateSettingsSharedFolder (Share share, List<Identity> usersToShareWith) { return Task.Run (() => { LocalBox box = DataLayer.Instance.GetSelectedOrDefaultBox (); var explorer = new RemoteExplorer (box); List<Identity> inBoth = (from local in share.Identities join remote in usersToShareWith on local.Id equals remote.Id select local).ToList (); var toAdd = usersToShareWith.Where (e => inBoth.All (f => f.Id != e.Id)).ToList (); var toRemove = share.Identities.Where (e => inBoth.All (f => f.Id != e.Id)).ToList (); var messages = AddKeys (share.Item.Path, usersToShareWith, toAdd); RemoveKeys (share.Item.Path, toRemove); var result = explorer.UpdateSettingsSharedFolder (share.Id, usersToShareWith); foreach (var message in messages) { var r = explorer.AddAesKey (share.Item.Path, message); } return result; }); }