private void ShowLibrary(LibraryKind kind, string projectPath = null) { using (new UsingProcessor( () => { if (!_Starting) { transitionManager.StartTransition(layoutControlRoot); } }, () => { if (!_Starting) { transitionManager.EndTransition(); } })) { layoutLookupLibraries.Visibility = (kind == LibraryKind.Library) ? LayoutVisibility.Always : LayoutVisibility.Never; CleanupStorage(); bindingProjects.Clear(); _CurrentLibrary = kind; switch (_CurrentLibrary) { case LibraryKind.Favorites: layoutControlGroupProjects.Text = "Favorite Projects"; _Storage.FavoriteProjects.Sort(new SavedStorageNameComparer()); LoadProjects(_Storage.FavoriteProjects); break; case LibraryKind.Recent: layoutControlGroupProjects.Text = "Recent Projects"; _Storage.RecentProjects.Sort(new SavedStorageLastAccessComparer()); LoadProjects(_Storage.RecentProjects); break; case LibraryKind.Library: layoutControlGroupProjects.Text = "Libraries"; if (!string.IsNullOrWhiteSpace(projectPath) && Directory.Exists(projectPath)) { LoadProjectsFromDirectory(projectPath); } else if (lookupLibraries.EditValue is SavedLibrary library) { LoadProjectsFromDirectory(library.Directory); } break; case LibraryKind.Examples: layoutControlGroupProjects.Text = "Examples"; var folderExamples = Project.FolderExamples; if (Directory.Exists(folderExamples)) { LoadProjectsFromDirectory(folderExamples); } break; default: break; } }
public async Task IndexGenres(LibraryKind libraryKind, string language) { var availableGenres = libraryKind switch { LibraryKind.Film => await _metadataService.FetchFilmGenres(language), LibraryKind.Series => await _metadataService.FetchSeriesGenres(language), _ => throw new ArgumentOutOfRangeException() }; await _metadataService.FetchFilmGenres(language); var newGenreIds = availableGenres.Select(g => g.Id).ToList(); var existingGenres = await _context.Genre.Where(g => newGenreIds.Contains(g.Id)).Select(g => g.Id).ToListAsync(); _context.AddRange(availableGenres.Where(g => !existingGenres.Contains(g.Id))); await _context.SaveChangesAsync(); await _distributedCache.RemoveFromList("overview", "sys", "genre"); }