using System.Collections.Generic; using System.Linq; using API.Data.Misc; using API.Entities; using API.Helpers; namespace API.Extensions; #nullable enable public static class AppUserExtensions { /// /// Adds a new SideNavStream to the user's SideNavStreams. This user should have these streams already loaded /// /// /// public static void CreateSideNavFromLibrary(this AppUser user, Library library) { user.SideNavStreams ??= new List(); var maxCount = user.SideNavStreams.Select(s => s.Order).DefaultIfEmpty().Max(); if (user.SideNavStreams.FirstOrDefault(s => s.LibraryId == library.Id) != null) return; user.SideNavStreams.Add(new AppUserSideNavStream() { Name = library.Name, Order = maxCount + 1, IsProvided = false, StreamType = SideNavStreamType.Library, LibraryId = library.Id, Visible = true, }); } public static void RemoveSideNavFromLibrary(this AppUser user, Library library) { user.SideNavStreams ??= new List(); // Find the library and remove it var item = user.SideNavStreams.FirstOrDefault(s => s.LibraryId == library.Id); if (item == null) return; user.SideNavStreams.Remove(item); OrderableHelper.ReorderItems(user.SideNavStreams); } public static AgeRestriction GetAgeRestriction(this AppUser user) { return new AgeRestriction() { AgeRating = user.AgeRestriction, IncludeUnknowns = user.AgeRestrictionIncludeUnknowns, }; } }