Smart Filters & Dashboard Customization (#2282)

Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
This commit is contained in:
Joe Milazzo 2023-09-12 11:24:47 -07:00 committed by GitHub
parent 3d501c9532
commit 84f85b4f24
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
92 changed files with 7149 additions and 555 deletions

View file

@ -67,6 +67,15 @@ public class AppUser : IdentityUser<int>, IHasConcurrencyToken
/// A list of Series the user doesn't want scrobbling for
/// </summary>
public ICollection<ScrobbleHold> ScrobbleHolds { get; set; } = null!;
/// <summary>
/// A collection of user Smart Filters for their account
/// </summary>
public ICollection<AppUserSmartFilter> SmartFilters { get; set; } = null!;
/// <summary>
/// An ordered list of Streams (pre-configured) or Smart Filters that makes up the User's Dashboard
/// </summary>
public IList<AppUserDashboardStream> DashboardStreams { get; set; } = null!;
/// <inheritdoc />

View file

@ -0,0 +1,29 @@
using API.Entities.Enums;
namespace API.Entities;
public class AppUserDashboardStream
{
public int Id { get; set; }
public required string Name { get; set; }
/// <summary>
/// Is System Provided
/// </summary>
public bool IsProvided { get; set; }
/// <summary>
/// Sort Order on the Dashboard
/// </summary>
public int Order { get; set; }
/// <summary>
/// For system provided
/// </summary>
public DashboardStreamType StreamType { get; set; }
public bool Visible { get; set; }
/// <summary>
/// If Not IsProvided, the appropriate smart filter
/// </summary>
public AppUserSmartFilter? SmartFilter { get; set; }
public int AppUserId { get; set; }
public AppUser AppUser { get; set; }
}

View file

@ -0,0 +1,19 @@
using API.DTOs.Filtering.v2;
namespace API.Entities;
/// <summary>
/// Represents a Saved user Filter
/// </summary>
public class AppUserSmartFilter
{
public int Id { get; set; }
public required string Name { get; set; }
/// <summary>
/// This is the Filter url encoded. It is decoded and reconstructed into a <see cref="FilterV2Dto"/>
/// </summary>
public required string Filter { get; set; }
public int AppUserId { get; set; }
public AppUser AppUser { get; set; }
}

View file

@ -0,0 +1,14 @@
namespace API.Entities.Enums;
public enum DashboardStreamType
{
OnDeck = 1,
RecentlyUpdated = 2,
NewlyAdded = 3,
SmartFilter = 4,
/// <summary>
/// More In Genre
/// </summary>
MoreInGenre = 5
}