using AuthorBuddy.Web.Data; using LiteDB; namespace AuthorBuddy.Web.Services { public class LocalStorageSyncService : ILocalStorageSyncService { private readonly ILiteCollection _collection; private ISettingsService Settings { get; } public LocalStorageSyncService(ILiteDatabase database, ISettingsService settings) { _collection = database.GetCollection("UserStorageBackup"); Settings = settings; } public async Task SaveStateAsync(Dictionary data) { var user = await Settings.GetCurrentUserAsync(); if (user == null) return; var result = _collection.FindOne(x => x.UserId == user.Id); var insert = false; if (result == null) { result = new UserLocalStorageSync(); result.UserId = user.Id; insert = true; } result.LastSyncedAt = DateTime.Now; result.StorageData = data; if (insert) _collection.Insert(result); else _collection.Update(result); } public async Task?> GetStateAsync() { var user = await Settings.GetCurrentUserAsync(); if (user == null) return new(); var result = _collection.FindOne(x => x.UserId == user.Id); return result?.StorageData; } } }