/// /// Service to manage favorite movies using local storage /// /// The local storage service class ManageFavorite(Blazored.LocalStorage.ILocalStorageService localStorage) { // Inject the local storage service private readonly Blazored.LocalStorage.ILocalStorageService LocalStorage = localStorage; private readonly List Movies = []; /// /// Load favorite movies from local storage /// Use Immediately after service instantiation otherwise the list will be empty /// /// public async Task LoadFavorites() { var favorites = await LocalStorage.GetItemAsync>("favorite") ?? []; Movies.Clear(); Movies.AddRange(favorites); } /// /// Check if a movie is favorite or not /// /// The movie ID to check /// True if the movie is favorite, otherwise false public bool IsFavorite(string movieID) { return Movies.Any(m => m.IdIMDB == movieID); } /// /// Toggle favorite status of a movie (by ID) /// /// The movie ID to toggle /// The new favorite status public async Task ToggleFavoriteMovie(Movie movie) { if (!IsFavorite(movie.IdIMDB)) { Movies.Add(movie); } else { Movies.RemoveAll(m => m.IdIMDB == movie.IdIMDB); } await LocalStorage.SetItemAsync("favorite", Movies); return IsFavorite(movie.IdIMDB); } /// /// Get the list of favorite movie IDs /// /// The list of favorite movie IDs public List GetFavoriteMovies() { return Movies; } }