using System; using System.Collections.Generic; using System.IO; using Newtonsoft.Json; namespace ShadowStream.ObjecktForJason; public class Jason_Writer { private readonly string _folderPath; public Jason_Writer(string folderName = "Temp Data") { _folderPath = Path.Combine(Environment.CurrentDirectory, folderName); if (!Directory.Exists(_folderPath)) Directory.CreateDirectory(_folderPath); } // Save one list of locJason objects to JSON file with given name public async Task SaveList(string listName, List list) { Console.WriteLine($"Saving JSON list '{listName}' with {list.Count} items."); foreach (var item in list) { Console.WriteLine($" - Path: {item.path}, Type: {item.type}, ImageData length: {(item.imageData?.Length ?? 0)}"); } string filePath = Path.Combine(_folderPath, $"{listName}.json"); string jsonString = JsonConvert.SerializeObject(list, Formatting.Indented); await File.WriteAllTextAsync(filePath, jsonString); Console.WriteLine($"Saved JSON to: {filePath}"); } // Load one list of locJason objects from JSON file with given name public async Task> LoadListAsync(string listName) { string filePath = Path.Combine(_folderPath, $"{listName}.json"); if (!File.Exists(filePath)) return new List(); string jsonString = await File.ReadAllTextAsync(filePath); return JsonConvert.DeserializeObject>(jsonString) ?? new List(); } // Check if list file exists public bool ListExists(string listName) { string filePath = Path.Combine(_folderPath, $"{listName}.json"); return File.Exists(filePath); } public async Task SavePlaylistListAsync(string listName, List list) { Console.WriteLine($"Saving playlist list '{listName}' with {list.Count} items."); foreach (var item in list) { Console.WriteLine($" - Name: {item.name}, Path: {item.path}, Type: {item.type}"); } string filePath = Path.Combine(_folderPath, $"{listName}.json"); // keep same naming as original string jsonString = JsonConvert.SerializeObject(list, Formatting.Indented); await File.WriteAllTextAsync(filePath, jsonString); Console.WriteLine($"Saved JSON to: {filePath}"); } public async Task> LoadPlaylistListAsync(string listName) { string filePath = Path.Combine(_folderPath, $"{listName}.json"); if (!File.Exists(filePath)) { Console.WriteLine($"List file '{filePath}' not found. Returning empty list."); return new List(); } string jsonString = await File.ReadAllTextAsync(filePath); var list = JsonConvert.DeserializeObject>(jsonString); return list ?? new List(); } public async Task> GetSavedPlaylistNamesAsync() { string playlistFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Temp Data"); if (!Directory.Exists(playlistFolder)) return new List(); var files = Directory.GetFiles(playlistFolder, "*.json"); var playlistNames = new List(); foreach (var file in files) { string name = Path.GetFileNameWithoutExtension(file); if (IsPlaylistFile(name)) // uses the updated method { playlistNames.Add(name); } } return playlistNames; } private bool IsPlaylistFile(string fileName) { // Exclude main media files and the favorites file var reserved = new[] { "Muvies", "Series", "Photos", "Music", "Favorit" }; return !reserved.Contains(fileName); } }