|  | @@ -314,6 +314,10 @@ namespace MediaBrowser.Server.Implementations.Sync
 | 
	
		
			
				|  |  |              try
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  _fileSystem.DeleteDirectory(path, true);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            catch (DirectoryNotFoundException)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              catch (Exception ex)
 | 
	
		
			
				|  |  |              {
 | 
	
	
		
			
				|  | @@ -664,9 +668,48 @@ namespace MediaBrowser.Server.Implementations.Sync
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              response.ItemIdsToRemove = response.ItemIdsToRemove.Distinct(StringComparer.OrdinalIgnoreCase).ToList();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            var itemsOnDevice = request.LocalItemIds
 | 
	
		
			
				|  |  | +                .Except(response.ItemIdsToRemove)
 | 
	
		
			
				|  |  | +                .ToList();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            SetUserAccess(request, response, itemsOnDevice);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              return response;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        private void SetUserAccess(SyncDataRequest request, SyncDataResponse response, List<string> itemIds)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var users = request.OfflineUserIds
 | 
	
		
			
				|  |  | +                .Select(_userManager.GetUserById)
 | 
	
		
			
				|  |  | +                .Where(i => i != null)
 | 
	
		
			
				|  |  | +                .ToList();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            foreach (var itemId in itemIds)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                var item = _libraryManager.GetItemById(itemId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (item != null)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var usersWithAccess = new List<User>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    foreach (var user in users)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        if (IsUserVisible(item, user))
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            usersWithAccess.Add(user);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    response.ItemUserAccess[itemId] = users.Select(i => i.Id.ToString("N")).ToList();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private bool IsUserVisible(BaseItem item, User user)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            return item.IsVisibleStandalone(user);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          private bool IsLibraryItemAvailable(BaseItem item)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              if (item == null)
 | 
	
	
		
			
				|  | @@ -723,6 +766,10 @@ namespace MediaBrowser.Server.Implementations.Sync
 | 
	
		
			
				|  |  |              try
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  _fileSystem.DeleteDirectory(path, true);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            catch (DirectoryNotFoundException)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              catch (Exception ex)
 | 
	
		
			
				|  |  |              {
 |