From 9d2c54ad33b22762b664a510089454ec272eb852 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Fri, 7 Jun 2024 10:56:17 +0500 Subject: [PATCH] sync: remove legacy sync api --- Notesnook.API/Hubs/SyncHub.cs | 176 ---------------------------------- 1 file changed, 176 deletions(-) diff --git a/Notesnook.API/Hubs/SyncHub.cs b/Notesnook.API/Hubs/SyncHub.cs index dd1e5eb..2ca6c7a 100644 --- a/Notesnook.API/Hubs/SyncHub.cs +++ b/Notesnook.API/Hubs/SyncHub.cs @@ -47,12 +47,9 @@ namespace Notesnook.API.Hubs } public interface ISyncHubClient { - Task SyncItem(SyncTransferItem transferItem); Task PushItems(SyncTransferItemV2 transferItem); Task SendItems(SyncTransferItemV2 transferItem); - Task RemoteSyncCompleted(long lastSynced); Task PushCompleted(long lastSynced); - Task SyncCompleted(); } public class GlobalSync @@ -184,85 +181,6 @@ namespace Notesnook.API.Hubs } } - public async Task SyncItem(BatchedSyncTransferItem transferItem) - { - var userId = Context.User.FindFirstValue("sub"); - if (string.IsNullOrEmpty(userId)) return 0; - - UserSettings userSettings = await this.Repositories.UsersSettings.FindOneAsync((u) => u.UserId == userId); - long dateSynced = Math.Max(transferItem.LastSynced, userSettings.LastSynced); - - GlobalSync.StartPush(userId, Context.ConnectionId, transferItem.Total); - - try - { - var others = Clients.OthersInGroup(userId); - for (int i = 0; i < transferItem.Items.Length; ++i) - { - var data = transferItem.Items[i]; - var type = transferItem.Types[i]; - - // We intentionally don't await here to speed up the sync. Fire and forget - // suits here because we don't really care if the item reaches the other - // devices. - others.SyncItem( - new SyncTransferItem - { - Item = data, - ItemType = type, - LastSynced = dateSynced, - Total = transferItem.Total, - Current = transferItem.Current + i - }); - - switch (type) - { - case "content": - Repositories.Contents.Upsert(JsonSerializer.Deserialize(data), userId, dateSynced); - break; - case "attachment": - Repositories.Attachments.Upsert(JsonSerializer.Deserialize(data), userId, dateSynced); - break; - case "note": - Repositories.Notes.Upsert(JsonSerializer.Deserialize(data), userId, dateSynced); - break; - case "notebook": - Repositories.Notebooks.Upsert(JsonSerializer.Deserialize(data), userId, dateSynced); - break; - case "shortcut": - Repositories.Shortcuts.Upsert(JsonSerializer.Deserialize(data), userId, dateSynced); - break; - case "reminder": - Repositories.Reminders.Upsert(JsonSerializer.Deserialize(data), userId, dateSynced); - break; - case "relation": - Repositories.Relations.Upsert(JsonSerializer.Deserialize(data), userId, dateSynced); - break; - case "settings": - var settings = JsonSerializer.Deserialize(data); - settings.Id = MongoDB.Bson.ObjectId.Parse(userId); - settings.ItemId = userId; - Repositories.LegacySettings.Upsert(settings, userId, dateSynced); - break; - case "vaultKey": - userSettings.VaultKey = JsonSerializer.Deserialize(data); - Repositories.UsersSettings.Upsert(userSettings, (u) => u.UserId == userId); - break; - default: - throw new HubException("Invalid item type."); - } - - } - - return await unit.Commit() ? 1 : 0; - } - catch (Exception ex) - { - GlobalSync.ClearPushOperations(userId, Context.ConnectionId); - throw ex; - } - } - private Action MapTypeToUpsertAction(string type) { return type switch @@ -358,7 +276,6 @@ namespace Notesnook.API.Hubs await this.Repositories.UsersSettings.UpsertAsync(userSettings, (u) => u.UserId == userId); - await Clients.OthersInGroup(userId).RemoteSyncCompleted(lastSynced); await Clients.OthersInGroup(userId).PushCompleted(lastSynced); return true; @@ -478,99 +395,6 @@ namespace Notesnook.API.Hubs LastSynced = userSettings.LastSynced, }; } - - public async IAsyncEnumerable FetchItems(long lastSyncedTimestamp, [EnumeratorCancellation] - CancellationToken cancellationToken) - { - var userId = Context.User.FindFirstValue("sub"); - - if (GlobalSync.IsUserPushing(userId)) - { - throw new HubException("Cannot fetch data while another sync is in progress. Please try again later."); - } - - var userSettings = await Repositories.UsersSettings.FindOneAsync((u) => u.UserId == userId); - if (userSettings.LastSynced > 0 && lastSyncedTimestamp > userSettings.LastSynced) - { - throw new HubException($"Provided timestamp value is too large. Server timestamp: {userSettings.LastSynced} Sent timestamp: {lastSyncedTimestamp}. Please run a Force Sync to fix this issue."); - } - - if (lastSyncedTimestamp > 0 && userSettings.LastSynced == lastSyncedTimestamp) - { - yield return new SyncTransferItem - { - Synced = true, - LastSynced = userSettings.LastSynced - }; - yield break; - } - - var total = (await Task.WhenAll( - Repositories.Attachments.CountItemsSyncedAfterAsync(userId, lastSyncedTimestamp), - Repositories.Notes.CountItemsSyncedAfterAsync(userId, lastSyncedTimestamp), - Repositories.Notebooks.CountItemsSyncedAfterAsync(userId, lastSyncedTimestamp), - Repositories.Contents.CountItemsSyncedAfterAsync(userId, lastSyncedTimestamp), - Repositories.LegacySettings.CountItemsSyncedAfterAsync(userId, lastSyncedTimestamp), - Repositories.Shortcuts.CountItemsSyncedAfterAsync(userId, lastSyncedTimestamp), - Repositories.Reminders.CountItemsSyncedAfterAsync(userId, lastSyncedTimestamp), - Repositories.Relations.CountItemsSyncedAfterAsync(userId, lastSyncedTimestamp) - )).Sum((a) => a); - - if (total == 0) - { - yield return new SyncTransferItem - { - Synced = true, - LastSynced = userSettings.LastSynced - }; - yield break; - } - - var collections = new[] { - Repositories.LegacySettings.FindItemsSyncedAfter, - Repositories.Attachments.FindItemsSyncedAfter, - Repositories.Notes.FindItemsSyncedAfter, - Repositories.Notebooks.FindItemsSyncedAfter, - Repositories.Contents.FindItemsSyncedAfter, - Repositories.Shortcuts.FindItemsSyncedAfter, - Repositories.Reminders.FindItemsSyncedAfter, - Repositories.Relations.FindItemsSyncedAfter, - }; - - for (var i = 0; i < collections.Length; ++i) - { - var key = CollectionKeys[i]; - using var cursor = await collections[i](userId, lastSyncedTimestamp, 1000); - - while (await cursor.MoveNextAsync(cancellationToken)) - { - foreach (var item in cursor.Current) - { - yield return new SyncTransferItem - { - LastSynced = userSettings.LastSynced, - Synced = false, - Item = JsonSerializer.Serialize(item), - ItemType = key, - Total = (int)total, - }; - } - } - } - - if (userSettings.VaultKey != null) - { - yield return new SyncTransferItem - { - LastSynced = userSettings.LastSynced, - Synced = false, - Item = JsonSerializer.Serialize(userSettings.VaultKey), - ItemType = "vaultKey", - Total = (int)total, - }; - } - } - } [MessagePack.MessagePackObject]