From 823bb11b838ab31151948d5c7209137827d72ec2 Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Thu, 31 Jul 2025 14:28:36 -0500 Subject: [PATCH] Updated App Added Last Update stamp, for when the last update was in the database, to see if we have newer events to process. Applied settings for enabling/disabling syncers on startup. Updated SyncMonitor() to use new Update check, before iterating through all the syncers and fetching them. Added logging messages for when we are updating settings to reflect what has been changed. --- FreeTubeSyncer/App.axaml.cs | 75 +++++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 8 deletions(-) diff --git a/FreeTubeSyncer/App.axaml.cs b/FreeTubeSyncer/App.axaml.cs index cf3a496..207aee9 100644 --- a/FreeTubeSyncer/App.axaml.cs +++ b/FreeTubeSyncer/App.axaml.cs @@ -32,6 +32,7 @@ public partial class App : Application private string? _oldSettings; private static readonly SemaphoreSlim _semaphoreSlim = new SemaphoreSlim(1, 1); private TimeSpan _checkInterval; + private DateTime _lastUpdated; public event EventHandler? SettingsChanged; @@ -67,10 +68,15 @@ public partial class App : Application _watcher = new DBSyncWatcher(path); _historySyncer = new Syncer(_watcher, Path.Join(path, "history.db"), "history.db", _settings.RestBaseUrl, "/history"); + _historySyncer.SetEnabled(_settings.SyncHistory); _playlistSyncer = new Syncer(_watcher, Path.Join(path, "playlists.db"), "playlists.db", _settings.RestBaseUrl, "/playlist"); + _playlistSyncer.SetEnabled(_settings.SyncPlaylist); _profileSyncer = new Syncer(_watcher, Path.Join(path, "profiles.db"), "profiles.db", _settings.RestBaseUrl, "/profile"); + _profileSyncer.SetEnabled(_settings.SyncProfile); _searchHistorySyncer = new Syncer(_watcher, Path.Join(path, "search-history.db"), "search-history.db", _settings.RestBaseUrl, "/searchHistory"); + _searchHistorySyncer.SetEnabled(_settings.SyncSearchHistory); _settingSyncer = new Syncer(_watcher, Path.Join(path, "settings.db"), "settings.db", _settings.RestBaseUrl, "/settings"); + _settingSyncer.SetEnabled(_settings.SyncSettings); _syncers = [ _historySyncer, @@ -155,6 +161,8 @@ public partial class App : Application await syncer.FetchDatabase(); } + _lastUpdated = await _syncers[0].GetLastUpdated(); + _semaphoreSlim.Release(); break; } @@ -173,8 +181,15 @@ public partial class App : Application var start = DateTime.Now; // TODO: Replace with Logger Console.WriteLine("Checking for updates..."); - foreach (var syncer in _syncers) - await syncer.FetchDatabase(); + var updateCheck = await _syncers[0].GetLastUpdated(); + if (_lastUpdated < updateCheck) + { + // TODO: Replace with Logger + Console.WriteLine($"Update Found, fetching updates..."); + _lastUpdated = updateCheck; + foreach (var syncer in _syncers) + await syncer.FetchDatabase(); + } lastCheck = DateTime.Now; var end = DateTime.Now - start; _semaphoreSlim.Release(); @@ -207,20 +222,64 @@ public partial class App : Application private async void HandleSettingsChanged(object? sender, EventArgs e) { + // TODO: Replace with Logger + Console.WriteLine("Settings have changed. Updating Settings..."); await _semaphoreSlim.WaitAsync(); var old = JsonSerializer.Deserialize(_oldSettings!); if (_settings!.RestBaseUrl != old!.RestBaseUrl) { + // TODO: Replace with Logger + Console.WriteLine($"Updating syncers with new URL: {_settings.RestBaseUrl}."); foreach (var syncer in _syncers!) syncer.UpdateBaseUrl(_settings.RestBaseUrl); } - if (old.CheckInterval != _settings.CheckInterval) _checkInterval = TimeSpan.FromSeconds(_settings.CheckInterval); - if (old.SyncHistory != _settings.SyncHistory) _historySyncer!.SetEnabled(_settings.SyncHistory); - if (old.SyncPlaylist != _settings.SyncPlaylist) _playlistSyncer!.SetEnabled(_settings.SyncPlaylist); - if (old.SyncProfile != _settings.SyncProfile) _profileSyncer!.SetEnabled(_settings.SyncProfile); - if (old.SyncSearchHistory != _settings.SyncSearchHistory) _searchHistorySyncer!.SetEnabled(_settings.SyncSearchHistory); - if (old.SyncSettings != _settings.SyncSettings) _settingSyncer!.SetEnabled(_settings.SyncSettings); + if (old.CheckInterval != _settings.CheckInterval) + { + // TODO: Replace with Logger + Console.WriteLine($"Updating Check Interval to {_settings.CheckInterval}."); + _checkInterval = TimeSpan.FromSeconds(_settings.CheckInterval); + } + + if (old.SyncHistory != _settings.SyncHistory) + { + // TODO: Replace with Logger + Console.WriteLine("History Syncer: " + (_settings.SyncHistory ? "Enabled" : "Disabled")); + _historySyncer!.SetEnabled(_settings.SyncHistory); + await _historySyncer.FetchDatabase(); + } + + if (old.SyncPlaylist != _settings.SyncPlaylist) + { + // TODO: Replace with Logger + Console.WriteLine("Playlist Syncer: " + (_settings.SyncHistory ? "Enabled" : "Disabled")); + _playlistSyncer!.SetEnabled(_settings.SyncPlaylist); + await _playlistSyncer.FetchDatabase(); + } + + if (old.SyncProfile != _settings.SyncProfile) + { + // TODO: Replace with Logger + Console.WriteLine("Profile Syncer: " + (_settings.SyncHistory ? "Enabled" : "Disabled")); + _profileSyncer!.SetEnabled(_settings.SyncProfile); + await _profileSyncer.FetchDatabase(); + } + + if (old.SyncSearchHistory != _settings.SyncSearchHistory) + { + // TODO: Replace with Logger + Console.WriteLine("Search History Syncer: " + (_settings.SyncHistory ? "Enabled" : "Disabled")); + _searchHistorySyncer!.SetEnabled(_settings.SyncSearchHistory); + await _searchHistorySyncer.FetchDatabase(); + } + + if (old.SyncSettings != _settings.SyncSettings) + { + // TODO: Replace with Logger + Console.WriteLine("Settings Syncer: " + (_settings.SyncHistory ? "Enabled" : "Disabled")); + _settingSyncer!.SetEnabled(_settings.SyncSettings); + await _settingSyncer.FetchDatabase(); + } _semaphoreSlim.Release(); }