diff --git a/Notesnook.API/Hubs/SyncV2Hub.cs b/Notesnook.API/Hubs/SyncV2Hub.cs index 97d739e..42ac5c4 100644 --- a/Notesnook.API/Hubs/SyncV2Hub.cs +++ b/Notesnook.API/Hubs/SyncV2Hub.cs @@ -260,9 +260,15 @@ namespace Notesnook.API.Hubs var isSyncingMonographsForFirstTime = !device.HasInitialMonographsSync; var unsyncedMonographs = ids.Where((id) => id.EndsWith(":monograph")).ToHashSet(); var unsyncedMonographIds = unsyncedMonographs.Select((id) => id.Split(":")[0]).ToArray(); - Expression> filter = isResetSync || isSyncingMonographsForFirstTime - ? (m => m.UserId == userId) - : (m => m.UserId == userId && unsyncedMonographIds.Contains(m.ItemId)); + FilterDefinition filter = isResetSync || isSyncingMonographsForFirstTime + ? Builders.Filter.Eq("UserId", userId) + : Builders.Filter.And( + Builders.Filter.Eq("UserId", userId), + Builders.Filter.Or( + Builders.Filter.In("ItemId", unsyncedMonographIds), + Builders.Filter.In("_id", unsyncedMonographIds) + ) + ); var userMonographs = await Repositories.Monographs.Collection.Find(filter).Project((m) => new MonographMetadata { DatePublished = m.DatePublished, @@ -270,7 +276,7 @@ namespace Notesnook.API.Hubs Password = m.Password, SelfDestruct = m.SelfDestruct, Title = m.Title, - ItemId = m.ItemId, + ItemId = m.ItemId ?? m.Id.ToString(), }).ToListAsync(); if (userMonographs.Count > 0 && !await Clients.Caller.SendMonographs(userMonographs).WaitAsync(TimeSpan.FromMinutes(10)))