diff --git a/src/KeyKeeper/Services/RecentFilesService.cs b/src/KeyKeeper/Services/RecentFilesService.cs index ea12e0d..5b253db 100644 --- a/src/KeyKeeper/Services/RecentFilesService.cs +++ b/src/KeyKeeper/Services/RecentFilesService.cs @@ -1,7 +1,9 @@ using System; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; +using System.Text.Json; using KeyKeeper.Models; namespace KeyKeeper.Services; @@ -24,6 +26,33 @@ internal class RecentFilesService : IRecentFilesService recentFilesPath = Path.Combine(appDataDirectory, RecentFilesFilename); } + public void Load() + { + RecentFiles.Clear(); + + if (!File.Exists(recentFilesPath)) + { + return; + } + + try + { + var content = File.ReadAllText(recentFilesPath); + var loadedFiles = JsonSerializer.Deserialize>(content) ?? new List(); + + foreach (var recentFile in loadedFiles + .OrderByDescending(file => file.LastOpened) + .Take(maxEntries)) + { + RecentFiles.Add(recentFile); + } + } + catch + { + // ignore broken data and continue with empty recent files + } + } + public void Remember(string filename) { RemoveIfExists(filename);