From 63069ae5737e239b0dbff039b15a60831db19178 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Sun, 11 Aug 2024 10:18:55 +0500 Subject: [PATCH] sync: more stable deserializer for syncitem model --- Notesnook.API/Models/SyncItem.cs | 88 +++++++++++++++----------------- 1 file changed, 40 insertions(+), 48 deletions(-) diff --git a/Notesnook.API/Models/SyncItem.cs b/Notesnook.API/Models/SyncItem.cs index 899e61c..dbfc3aa 100644 --- a/Notesnook.API/Models/SyncItem.cs +++ b/Notesnook.API/Models/SyncItem.cs @@ -156,58 +156,50 @@ namespace Notesnook.API.Models public override SyncItem Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) { + var syncItem = new SyncItem(); var bsonReader = context.Reader; bsonReader.ReadStartDocument(); - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var id = bsonReader.ReadObjectId(); - - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var dateSynced = bsonReader.ReadInt64(); - - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var userId = bsonReader.ReadString(); - - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var iv = bsonReader.ReadString(); - - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var cipher = bsonReader.ReadString(); - - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var itemId = bsonReader.ReadString(); - - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var length = bsonReader.ReadInt64(); - - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var version = bsonReader.ReadDouble(); - - bsonReader.ReadBsonType(); - bsonReader.SkipName(); - var algorithm = bsonReader.ReadString(); - - bsonReader.ReadEndDocument(); - return new SyncItem + while (bsonReader.ReadBsonType() != BsonType.EndOfDocument) { - Id = id, - DateSynced = dateSynced, - UserId = userId, - IV = iv, - Cipher = cipher, - ItemId = itemId, - Length = length, - Version = version, - Algorithm = algorithm - }; + var fieldName = bsonReader.ReadName(); + + switch (fieldName) + { + case "DateSynced": + syncItem.DateSynced = bsonReader.ReadInt64(); + break; + case "UserId": + syncItem.UserId = bsonReader.ReadString(); + break; + case "IV": + syncItem.IV = bsonReader.ReadString(); + break; + case "Cipher": + syncItem.Cipher = bsonReader.ReadString(); + break; + case "ItemId": + syncItem.ItemId = bsonReader.ReadString(); + break; + case "_id": + syncItem.Id = bsonReader.ReadObjectId(); + break; + case "Length": + syncItem.Length = bsonReader.ReadInt64(); + break; + case "Version": + syncItem.Version = bsonReader.ReadDouble(); + break; + case "Algorithm": + syncItem.Algorithm = bsonReader.ReadString(); + break; + default: + bsonReader.SkipValue(); + break; + } + } + bsonReader.ReadEndDocument(); + return syncItem; } } }