From 6d1e6e1690c954ba362cb7db1871fdb672ccd1bc Mon Sep 17 00:00:00 2001 From: ChiaraBm Date: Fri, 13 Mar 2026 08:53:04 +0100 Subject: [PATCH] Cleaned up using in project. Improved prohect structure and refactored page names. Upgraded dependencies --- .../Moonlight.Api.Host.csproj | 2 +- .../Moonlight.Frontend.Host.csproj | 6 +- .../Admin/Users/Users/UserAuthService.cs | 5 +- .../Users/Users/UserDeletionController.cs | 2 + .../Admin/Users/Users/UsersController.cs | 4 + .../Database/DbMigrationService.cs | 2 +- Moonlight.Api/Moonlight.Api.csproj | 14 +- Moonlight.Api/Startup/Startup.Base.cs | 2 +- Moonlight.Frontend/Admin/Setup/Index.razor | 181 ++++++++++++++++++ Moonlight.Frontend/Admin/Setup/Setup.razor | 177 ----------------- .../Sys/ApiKeys/CreateApiKeyDialog.razor | 4 +- .../Admin/Sys/ApiKeys/Index.razor | 1 - .../Sys/ApiKeys/UpdateApiKeyDialog.razor | 2 +- .../Index.razor} | 4 +- .../UpdateInstanceModal.razor | 5 +- Moonlight.Frontend/Admin/Sys/Diagnose.razor | 1 + Moonlight.Frontend/Admin/Sys/Index.razor | 6 +- Moonlight.Frontend/Admin/Sys/Overview.razor | 5 +- .../Settings/{Settings.razor => Index.razor} | 0 .../Sys/Settings/SystemSettingsOptions.cs | 19 +- .../Sys/Settings/WhiteLabelingSetting.razor | 2 +- .../Admin/Sys/Themes/Create.razor | 2 +- .../Admin/Sys/Themes/Index.razor | 16 +- .../Admin/Sys/Themes/ThemeMapper.cs | 2 +- .../Admin/Sys/Themes/Update.razor | 2 +- Moonlight.Frontend/Admin/Users/Index.razor | 6 +- .../Admin/Users/Roles/CreateRoleDialog.razor | 6 +- .../Users/Roles/{Roles.razor => Index.razor} | 1 - .../Users/Roles/ManageRoleMembersDialog.razor | 10 +- .../Admin/Users/Roles/UpdateRoleDialog.razor | 2 +- .../Users/Shared/PermissionSelector.razor | 1 + .../Admin/Users/Users/CreateUserDialog.razor | 8 +- .../Users/Users/{Users.razor => Index.razor} | 1 - .../Admin/Users/Users/UpdateUserDialog.razor | 4 +- .../Services/RemoteAuthProvider.cs | 2 +- Moonlight.Frontend/Moonlight.Frontend.csproj | 8 +- .../Shared/Auth/Authentication.razor | 4 +- 37 files changed, 265 insertions(+), 254 deletions(-) create mode 100644 Moonlight.Frontend/Admin/Setup/Index.razor delete mode 100644 Moonlight.Frontend/Admin/Setup/Setup.razor rename Moonlight.Frontend/Admin/Sys/{HelperContainer/Instance.razor => ContainerHelper/Index.razor} (99%) rename Moonlight.Frontend/Admin/Sys/{HelperContainer => ContainerHelper}/UpdateInstanceModal.razor (99%) rename Moonlight.Frontend/Admin/Sys/Settings/{Settings.razor => Index.razor} (100%) rename Moonlight.Frontend/Admin/Users/Roles/{Roles.razor => Index.razor} (99%) rename Moonlight.Frontend/Admin/Users/Users/{Users.razor => Index.razor} (99%) diff --git a/Hosts/Moonlight.Api.Host/Moonlight.Api.Host.csproj b/Hosts/Moonlight.Api.Host/Moonlight.Api.Host.csproj index d568a21c..50e051ed 100644 --- a/Hosts/Moonlight.Api.Host/Moonlight.Api.Host.csproj +++ b/Hosts/Moonlight.Api.Host/Moonlight.Api.Host.csproj @@ -7,7 +7,7 @@ - + all runtime; build; native; analyzers; buildtransitive diff --git a/Hosts/Moonlight.Frontend.Host/Moonlight.Frontend.Host.csproj b/Hosts/Moonlight.Frontend.Host/Moonlight.Frontend.Host.csproj index 65b67135..92e3ba2a 100644 --- a/Hosts/Moonlight.Frontend.Host/Moonlight.Frontend.Host.csproj +++ b/Hosts/Moonlight.Frontend.Host/Moonlight.Frontend.Host.csproj @@ -12,8 +12,10 @@ - - + + + + diff --git a/Moonlight.Api/Admin/Users/Users/UserAuthService.cs b/Moonlight.Api/Admin/Users/Users/UserAuthService.cs index 55a7883c..97151bd5 100644 --- a/Moonlight.Api/Admin/Users/Users/UserAuthService.cs +++ b/Moonlight.Api/Admin/Users/Users/UserAuthService.cs @@ -12,10 +12,11 @@ namespace Moonlight.Api.Admin.Users.Users; public class UserAuthService { + public const string CacheKeyPattern = $"Moonlight.{nameof(UserAuthService)}.{nameof(ValidateAsync)}-{{0}}"; + private const string UserIdClaim = "UserId"; private const string IssuedAtClaim = "IssuedAt"; - - public const string CacheKeyPattern = $"Moonlight.{nameof(UserAuthService)}.{nameof(ValidateAsync)}-{{0}}"; + private readonly IEnumerable Hooks; private readonly HybridCache HybridCache; private readonly ILogger Logger; diff --git a/Moonlight.Api/Admin/Users/Users/UserDeletionController.cs b/Moonlight.Api/Admin/Users/Users/UserDeletionController.cs index eb30f38f..d4b73ee5 100644 --- a/Moonlight.Api/Admin/Users/Users/UserDeletionController.cs +++ b/Moonlight.Api/Admin/Users/Users/UserDeletionController.cs @@ -34,6 +34,7 @@ public class UserDeletionController : Controller var validationResult = await UserDeletionService.ValidateAsync(id); if (!validationResult.IsValid) + { return ValidationProblem( new ValidationProblemDetails( new Dictionary @@ -45,6 +46,7 @@ public class UserDeletionController : Controller } ) ); + } await UserDeletionService.DeleteAsync(id); return NoContent(); diff --git a/Moonlight.Api/Admin/Users/Users/UsersController.cs b/Moonlight.Api/Admin/Users/Users/UsersController.cs index d14b1fee..03ecd63e 100644 --- a/Moonlight.Api/Admin/Users/Users/UsersController.cs +++ b/Moonlight.Api/Admin/Users/Users/UsersController.cs @@ -43,7 +43,9 @@ public class UsersController : Controller // Filters if (filterOptions != null) + { foreach (var filterOption in filterOptions.Filters) + { query = filterOption.Key switch { nameof(Infrastructure.Database.Entities.User.Email) => @@ -54,6 +56,8 @@ public class UsersController : Controller _ => query }; + } + } // Pagination var data = await query diff --git a/Moonlight.Api/Infrastructure/Database/DbMigrationService.cs b/Moonlight.Api/Infrastructure/Database/DbMigrationService.cs index 631b1bb1..801b8b4c 100644 --- a/Moonlight.Api/Infrastructure/Database/DbMigrationService.cs +++ b/Moonlight.Api/Infrastructure/Database/DbMigrationService.cs @@ -28,7 +28,7 @@ public class DbMigrationService : IHostedLifecycleService if (migrationNames.Length == 0) { - Logger.LogDebug("No pending migrations found"); + Logger.LogTrace("No pending migrations found"); return; } diff --git a/Moonlight.Api/Moonlight.Api.csproj b/Moonlight.Api/Moonlight.Api.csproj index 8ff7dd74..4494d354 100644 --- a/Moonlight.Api/Moonlight.Api.csproj +++ b/Moonlight.Api/Moonlight.Api.csproj @@ -24,13 +24,13 @@ - - - - - - - + + + + + + + diff --git a/Moonlight.Api/Startup/Startup.Base.cs b/Moonlight.Api/Startup/Startup.Base.cs index 588b13f1..3d9e77ea 100644 --- a/Moonlight.Api/Startup/Startup.Base.cs +++ b/Moonlight.Api/Startup/Startup.Base.cs @@ -15,7 +15,7 @@ using Moonlight.Api.Infrastructure.Helpers; using Moonlight.Api.Infrastructure.Hooks; using Moonlight.Api.Infrastructure.Implementations; using Moonlight.Api.Shared.Frontend; -using SerializationContext = Moonlight.Shared.SerializationContext; +using Moonlight.Shared; using VersionService = Moonlight.Api.Admin.Sys.Versions.VersionService; namespace Moonlight.Api.Startup; diff --git a/Moonlight.Frontend/Admin/Setup/Index.razor b/Moonlight.Frontend/Admin/Setup/Index.razor new file mode 100644 index 00000000..99e1703e --- /dev/null +++ b/Moonlight.Frontend/Admin/Setup/Index.razor @@ -0,0 +1,181 @@ +@using LucideBlazor +@using Moonlight.Shared.Admin.Setup +@using ShadcnBlazor.Buttons +@using ShadcnBlazor.Cards +@using ShadcnBlazor.Inputs +@using ShadcnBlazor.Labels +@using ShadcnBlazor.Spinners + +@inject HttpClient HttpClient +@inject NavigationManager Navigation + +
+ + @if (IsLoaded) + { +
+ @switch (CurrentStep) + { + case 0: +
+ Moonlight Logo +
+ +
+

Welcome to Moonlight Panel

+

+ You successfully installed moonlight. Now you are ready to perform some initial steps to + complete your installation +

+
+ break; + + case 1: +
+ +
+ +
+

Admin Account Creation

+

+ To continue please fill in the account details of the user you want to use as the initial + administrator account. + If you use an external OIDC provider, these details need to match with your desired OIDC + account +

+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ break; + + case 2: +
+ +
+ +
+

You are all set!

+

+ You are now ready to finish the initial setup. + The configured options will be applied to the instance. + You will be redirected to the login after changes have been applied successfully +

+
+ break; + } + +
+
+ @for (var step = 0; step < StepCount; step++) + { + if (step == CurrentStep) + { +
+
+ } + else + { +
+
+ } + } +
+
+ @if (CurrentStep > 0) + { + + } + else if (CurrentStep != StepCount - 1) + { + + } + else + { + + } +
+
+
+ } + else + { +
+ +
+ } +
+
+ +@code +{ + private bool IsLoaded; + + private int CurrentStep; + private readonly int StepCount = 3; + + private readonly ApplySetupDto SetupDto = new(); + + private void Navigate(int diff) + { + CurrentStep += diff; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (!firstRender) + return; + + var response = await HttpClient.GetAsync("api/admin/setup"); + + if (!response.IsSuccessStatusCode) + { + Navigation.NavigateTo("/", true); + return; + } + + IsLoaded = true; + await InvokeAsync(StateHasChanged); + } + + private async Task ApplyAsync() + { + await HttpClient.PostAsJsonAsync("api/admin/setup", SetupDto); + Navigation.NavigateTo("/", true); + } +} \ No newline at end of file diff --git a/Moonlight.Frontend/Admin/Setup/Setup.razor b/Moonlight.Frontend/Admin/Setup/Setup.razor deleted file mode 100644 index 87189bf1..00000000 --- a/Moonlight.Frontend/Admin/Setup/Setup.razor +++ /dev/null @@ -1,177 +0,0 @@ -@using LucideBlazor -@using Moonlight.Shared.Admin.Setup -@using ShadcnBlazor.Buttons -@using ShadcnBlazor.Cards -@using ShadcnBlazor.Inputs -@using ShadcnBlazor.Labels -@using ShadcnBlazor.Spinners -@inject HttpClient HttpClient -@inject NavigationManager Navigation - -
- - @if (IsLoaded) - { -
- @if (CurrentStep == 0) - { -
- Moonlight Logo -
- -
-

Welcome to Moonlight Panel

-

- You successfully installed moonlight. Now you are ready to perform some initial steps to - complete your installation -

-
- } - else if (CurrentStep == 1) - { -
- -
- -
-

Admin Account Creation

-

- To continue please fill in the account details of the user you want to use as the initial - administrator account. - If you use an external OIDC provider, these details need to match with your desired OIDC - account -

-
- -
-
- - -
-
- - -
-
- - -
-
- } - else if (CurrentStep == 2) - { -
- -
- -
-

You are all set!

-

- You are now ready to finish the initial setup. - The configured options will be applied to the instance. - You will be redirected to the login after changes have been applied successfully -

-
- } -
-
- @for (var step = 0; step < StepCount; step++) - { - if (step == CurrentStep) - { -
-
- } - else - { -
-
- } - } -
-
- @if (CurrentStep > 0) - { - - } - @if (CurrentStep != StepCount - 1) - { - - } - else - { - - } -
-
-
- } - else - { -
- -
- } -
-
- -@code -{ - private bool IsLoaded; - - private int CurrentStep; - private readonly int StepCount = 3; - - private readonly ApplySetupDto SetupDto = new(); - - private void Navigate(int diff) - { - CurrentStep += diff; - } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (!firstRender) - return; - - var response = await HttpClient.GetAsync("api/admin/setup"); - - if (!response.IsSuccessStatusCode) - { - Navigation.NavigateTo("/", true); - return; - } - - IsLoaded = true; - await InvokeAsync(StateHasChanged); - } - - private async Task ApplyAsync() - { - await HttpClient.PostAsJsonAsync("api/admin/setup", SetupDto); - Navigation.NavigateTo("/", true); - } -} \ No newline at end of file diff --git a/Moonlight.Frontend/Admin/Sys/ApiKeys/CreateApiKeyDialog.razor b/Moonlight.Frontend/Admin/Sys/ApiKeys/CreateApiKeyDialog.razor index e9d9e703..9b54f34d 100644 --- a/Moonlight.Frontend/Admin/Sys/ApiKeys/CreateApiKeyDialog.razor +++ b/Moonlight.Frontend/Admin/Sys/ApiKeys/CreateApiKeyDialog.razor @@ -59,7 +59,7 @@ private CreateApiKeyDto Request; - private readonly List Permissions = new(); + private readonly List Permissions = []; protected override void OnInitialized() { @@ -88,7 +88,7 @@ } await ToastService.SuccessAsync( - "API Key creation", + "API Key Creation", $"Successfully created API key {Request.Name}" ); diff --git a/Moonlight.Frontend/Admin/Sys/ApiKeys/Index.razor b/Moonlight.Frontend/Admin/Sys/ApiKeys/Index.razor index f3f583ea..6501aa84 100644 --- a/Moonlight.Frontend/Admin/Sys/ApiKeys/Index.razor +++ b/Moonlight.Frontend/Admin/Sys/ApiKeys/Index.razor @@ -12,7 +12,6 @@ @using ShadcnBlazor.Extras.Dialogs @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Tabels -@using SerializationContext = Moonlight.Shared.SerializationContext @inject ToastService ToastService @inject DialogService DialogService diff --git a/Moonlight.Frontend/Admin/Sys/ApiKeys/UpdateApiKeyDialog.razor b/Moonlight.Frontend/Admin/Sys/ApiKeys/UpdateApiKeyDialog.razor index a92479ad..d53ad01c 100644 --- a/Moonlight.Frontend/Admin/Sys/ApiKeys/UpdateApiKeyDialog.razor +++ b/Moonlight.Frontend/Admin/Sys/ApiKeys/UpdateApiKeyDialog.razor @@ -84,7 +84,7 @@ } await ToastService.SuccessAsync( - "API Key update", + "API Key Update", $"Successfully updated API key {Request.Name}" ); diff --git a/Moonlight.Frontend/Admin/Sys/HelperContainer/Instance.razor b/Moonlight.Frontend/Admin/Sys/ContainerHelper/Index.razor similarity index 99% rename from Moonlight.Frontend/Admin/Sys/HelperContainer/Instance.razor rename to Moonlight.Frontend/Admin/Sys/ContainerHelper/Index.razor index 9a60c6ce..b572db95 100644 --- a/Moonlight.Frontend/Admin/Sys/HelperContainer/Instance.razor +++ b/Moonlight.Frontend/Admin/Sys/ContainerHelper/Index.razor @@ -122,10 +122,10 @@ @code { - private ContainerHelperStatusDto StatusDto; private string SelectedVersion = "v2.1"; private bool NoBuildCache; - + + private ContainerHelperStatusDto StatusDto; private VersionDto[] Versions; private async Task LoadAsync(LazyLoader _) diff --git a/Moonlight.Frontend/Admin/Sys/HelperContainer/UpdateInstanceModal.razor b/Moonlight.Frontend/Admin/Sys/ContainerHelper/UpdateInstanceModal.razor similarity index 99% rename from Moonlight.Frontend/Admin/Sys/HelperContainer/UpdateInstanceModal.razor rename to Moonlight.Frontend/Admin/Sys/ContainerHelper/UpdateInstanceModal.razor index 892b7181..41c26e55 100644 --- a/Moonlight.Frontend/Admin/Sys/HelperContainer/UpdateInstanceModal.razor +++ b/Moonlight.Frontend/Admin/Sys/ContainerHelper/UpdateInstanceModal.razor @@ -1,15 +1,16 @@ -@inherits ShadcnBlazor.Extras.Dialogs.DialogBase @using System.Text.Json @using LucideBlazor +@using Moonlight.Shared @using Moonlight.Shared.Admin.Sys.ContainerHelper @using ShadcnBlazor.Buttons @using ShadcnBlazor.Dialogs @using ShadcnBlazor.Progresses @using ShadcnBlazor.Spinners -@using SerializationContext = Moonlight.Shared.SerializationContext @inject HttpClient HttpClient +@inherits ShadcnBlazor.Extras.Dialogs.DialogBase + Updating instance to @Version... diff --git a/Moonlight.Frontend/Admin/Sys/Diagnose.razor b/Moonlight.Frontend/Admin/Sys/Diagnose.razor index 29758f04..538c146f 100644 --- a/Moonlight.Frontend/Admin/Sys/Diagnose.razor +++ b/Moonlight.Frontend/Admin/Sys/Diagnose.razor @@ -10,6 +10,7 @@ @using ShadcnBlazor.Emptys @using ShadcnBlazor.Extras.Common @using ShadcnBlazor.Spinners + @inject HttpClient HttpClient @inject IAuthorizationService AuthorizationService diff --git a/Moonlight.Frontend/Admin/Sys/Index.razor b/Moonlight.Frontend/Admin/Sys/Index.razor index 98d1704c..86da0918 100644 --- a/Moonlight.Frontend/Admin/Sys/Index.razor +++ b/Moonlight.Frontend/Admin/Sys/Index.razor @@ -2,8 +2,6 @@ @using LucideBlazor @using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Components.Authorization -@using Moonlight.Frontend.Admin.Sys.HelperContainer -@using Moonlight.Frontend.Admin.Sys.Settings @using Moonlight.Shared @using ShadcnBlazor.Tab @@ -36,7 +34,7 @@ @if (SettingsResult.Succeeded) { - + < } @if (DiagnoseResult.Succeeded) @@ -60,7 +58,7 @@ @if (InstanceResult.Succeeded && VersionsResult.Succeeded) { - + } diff --git a/Moonlight.Frontend/Admin/Sys/Overview.razor b/Moonlight.Frontend/Admin/Sys/Overview.razor index 28c6ada8..a9901188 100644 --- a/Moonlight.Frontend/Admin/Sys/Overview.razor +++ b/Moonlight.Frontend/Admin/Sys/Overview.razor @@ -1,15 +1,14 @@ @page "/admin" + @using LucideBlazor @using Moonlight.Frontend.Infrastructure.Helpers +@using Moonlight.Shared @using Moonlight.Shared.Admin.Sys @using ShadcnBlazor.Buttons @using ShadcnBlazor.Cards -@using ShadcnBlazor.Extras.Dialogs @using ShadcnBlazor.Spinners -@using SerializationContext = Moonlight.Shared.SerializationContext @inject HttpClient HttpClient -@inject DialogService DialogService

Overview

diff --git a/Moonlight.Frontend/Admin/Sys/Settings/Settings.razor b/Moonlight.Frontend/Admin/Sys/Settings/Index.razor similarity index 100% rename from Moonlight.Frontend/Admin/Sys/Settings/Settings.razor rename to Moonlight.Frontend/Admin/Sys/Settings/Index.razor diff --git a/Moonlight.Frontend/Admin/Sys/Settings/SystemSettingsOptions.cs b/Moonlight.Frontend/Admin/Sys/Settings/SystemSettingsOptions.cs index f9d7db72..14e379f1 100644 --- a/Moonlight.Frontend/Admin/Sys/Settings/SystemSettingsOptions.cs +++ b/Moonlight.Frontend/Admin/Sys/Settings/SystemSettingsOptions.cs @@ -5,21 +5,28 @@ namespace Moonlight.Frontend.Admin.Sys.Settings; public class SystemSettingsOptions { - private readonly List InnerComponents = new(); public IReadOnlyList Components => InnerComponents; + + private readonly List InnerComponents = []; public void Add<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TIcon, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string name, string description, - int order) - where TIcon : ComponentBase where TComponent : ComponentBase + int order + ) where TIcon : ComponentBase where TComponent : ComponentBase { Add(name, description, order, typeof(TIcon), typeof(TComponent)); } - public void Add(string name, string description, int order, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type iconComponent, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component) + public void Add( + string name, + string description, + int order, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] + Type iconComponent, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] + Type component + ) { InnerComponents.Add(new SystemSettingsPage(name, description, order, iconComponent, component)); } diff --git a/Moonlight.Frontend/Admin/Sys/Settings/WhiteLabelingSetting.razor b/Moonlight.Frontend/Admin/Sys/Settings/WhiteLabelingSetting.razor index 5da00b3d..38f0020a 100644 --- a/Moonlight.Frontend/Admin/Sys/Settings/WhiteLabelingSetting.razor +++ b/Moonlight.Frontend/Admin/Sys/Settings/WhiteLabelingSetting.razor @@ -1,13 +1,13 @@ @using LucideBlazor @using Moonlight.Frontend.Infrastructure.Helpers @using Moonlight.Frontend.Shared.Frontend +@using Moonlight.Shared @using Moonlight.Shared.Admin.Sys.Settings @using ShadcnBlazor.Extras.Common @using ShadcnBlazor.Extras.Forms @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs -@using SerializationContext = Moonlight.Shared.SerializationContext @inject HttpClient HttpClient @inject ToastService ToastService diff --git a/Moonlight.Frontend/Admin/Sys/Themes/Create.razor b/Moonlight.Frontend/Admin/Sys/Themes/Create.razor index 6a59696f..cb0301df 100644 --- a/Moonlight.Frontend/Admin/Sys/Themes/Create.razor +++ b/Moonlight.Frontend/Admin/Sys/Themes/Create.razor @@ -1,4 +1,5 @@ @page "/admin/system/themes/create" + @using LucideBlazor @using Microsoft.AspNetCore.Authorization @using Moonlight.Frontend.Infrastructure.Helpers @@ -13,7 +14,6 @@ @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs @using ShadcnBlazor.Switches -@using SerializationContext = Moonlight.Shared.SerializationContext @attribute [Authorize(Policy = Permissions.Themes.Create)] diff --git a/Moonlight.Frontend/Admin/Sys/Themes/Index.razor b/Moonlight.Frontend/Admin/Sys/Themes/Index.razor index e132ac64..727ba033 100644 --- a/Moonlight.Frontend/Admin/Sys/Themes/Index.razor +++ b/Moonlight.Frontend/Admin/Sys/Themes/Index.razor @@ -10,7 +10,6 @@ @using ShadcnBlazor.Extras.AlertDialogs @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Tabels -@using SerializationContext = Moonlight.Shared.SerializationContext @inject ToastService ToastService @inject NavigationManager Navigation @@ -142,20 +141,11 @@ return new DataGridResponse(response!.Data, response.TotalLength); } - private void Create() - { - Navigation.NavigateTo("/admin/system/themes/create"); - } + private void Create() => Navigation.NavigateTo("/admin/system/themes/create"); - private void Edit(ThemeDto theme) - { - Navigation.NavigateTo($"/admin/system/themes/{theme.Id}"); - } + private void Edit(ThemeDto theme) => Navigation.NavigateTo($"/admin/system/themes/{theme.Id}"); - private void Download(ThemeDto theme) - { - Navigation.NavigateTo($"api/admin/themes/{theme.Id}/export", true); - } + private void Download(ThemeDto theme) => Navigation.NavigateTo($"api/admin/themes/{theme.Id}/export", true); private async Task DeleteAsync(ThemeDto theme) { diff --git a/Moonlight.Frontend/Admin/Sys/Themes/ThemeMapper.cs b/Moonlight.Frontend/Admin/Sys/Themes/ThemeMapper.cs index 1d7741c8..4dacad70 100644 --- a/Moonlight.Frontend/Admin/Sys/Themes/ThemeMapper.cs +++ b/Moonlight.Frontend/Admin/Sys/Themes/ThemeMapper.cs @@ -7,7 +7,7 @@ namespace Moonlight.Frontend.Admin.Sys.Themes; [Mapper] [SuppressMessage("Mapper", "RMG020:No members are mapped in an object mapping")] [SuppressMessage("Mapper", "RMG012:No members are mapped in an object mapping")] -public partial class ThemeMapper +public static partial class ThemeMapper { public static partial UpdateThemeDto ToUpdate(ThemeDto theme); } \ No newline at end of file diff --git a/Moonlight.Frontend/Admin/Sys/Themes/Update.razor b/Moonlight.Frontend/Admin/Sys/Themes/Update.razor index f0c8e820..9df311e8 100644 --- a/Moonlight.Frontend/Admin/Sys/Themes/Update.razor +++ b/Moonlight.Frontend/Admin/Sys/Themes/Update.razor @@ -1,4 +1,5 @@ @page "/admin/system/themes/{Id:int}" + @using LucideBlazor @using Microsoft.AspNetCore.Authorization @using Moonlight.Frontend.Infrastructure.Helpers @@ -14,7 +15,6 @@ @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs @using ShadcnBlazor.Switches -@using SerializationContext = Moonlight.Shared.SerializationContext @attribute [Authorize(Policy = Permissions.Themes.Edit)] diff --git a/Moonlight.Frontend/Admin/Users/Index.razor b/Moonlight.Frontend/Admin/Users/Index.razor index 9d293b79..e8a507ed 100644 --- a/Moonlight.Frontend/Admin/Users/Index.razor +++ b/Moonlight.Frontend/Admin/Users/Index.razor @@ -22,10 +22,10 @@ - + - + @@ -39,4 +39,4 @@ { Navigation.NavigateTo($"/admin/users?tab={name}"); } -} +} \ No newline at end of file diff --git a/Moonlight.Frontend/Admin/Users/Roles/CreateRoleDialog.razor b/Moonlight.Frontend/Admin/Users/Roles/CreateRoleDialog.razor index 42250ce8..6a8bc2d4 100644 --- a/Moonlight.Frontend/Admin/Users/Roles/CreateRoleDialog.razor +++ b/Moonlight.Frontend/Admin/Users/Roles/CreateRoleDialog.razor @@ -1,12 +1,12 @@ @using Moonlight.Frontend.Admin.Users.Shared @using Moonlight.Frontend.Infrastructure.Helpers +@using Moonlight.Shared @using Moonlight.Shared.Admin.Users.Roles @using ShadcnBlazor.Dialogs @using ShadcnBlazor.Extras.Forms @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs -@using SerializationContext = Moonlight.Shared.SerializationContext @inherits ShadcnBlazor.Extras.Dialogs.DialogBase @@ -67,7 +67,7 @@ Permissions = [] }; - Permissions = new List(); + Permissions = []; } private async Task OnSubmitAsync(EditContext editContext, ValidationMessageStore validationMessageStore) @@ -86,7 +86,7 @@ return false; } - await ToastService.SuccessAsync("Role creation", $"Role {Request.Name} has been successfully created"); + await ToastService.SuccessAsync("Role Creation", $"Role {Request.Name} has been successfully created"); await OnSubmit.Invoke(); await CloseAsync(); diff --git a/Moonlight.Frontend/Admin/Users/Roles/Roles.razor b/Moonlight.Frontend/Admin/Users/Roles/Index.razor similarity index 99% rename from Moonlight.Frontend/Admin/Users/Roles/Roles.razor rename to Moonlight.Frontend/Admin/Users/Roles/Index.razor index bfca8cb4..a6781636 100644 --- a/Moonlight.Frontend/Admin/Users/Roles/Roles.razor +++ b/Moonlight.Frontend/Admin/Users/Roles/Index.razor @@ -11,7 +11,6 @@ @using ShadcnBlazor.Extras.Dialogs @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Tabels -@using SerializationContext = Moonlight.Shared.SerializationContext @inject HttpClient HttpClient @inject DialogService DialogService diff --git a/Moonlight.Frontend/Admin/Users/Roles/ManageRoleMembersDialog.razor b/Moonlight.Frontend/Admin/Users/Roles/ManageRoleMembersDialog.razor index 9287f547..84c42c4c 100644 --- a/Moonlight.Frontend/Admin/Users/Roles/ManageRoleMembersDialog.razor +++ b/Moonlight.Frontend/Admin/Users/Roles/ManageRoleMembersDialog.razor @@ -1,4 +1,5 @@ @using LucideBlazor +@using Moonlight.Shared @using Moonlight.Shared.Admin.Users.Roles @using Moonlight.Shared.Admin.Users.Users @using Moonlight.Shared.Shared @@ -9,10 +10,11 @@ @using ShadcnBlazor.Extras.Common @using ShadcnBlazor.Labels @using ShadcnBlazor.Tabels -@inherits ShadcnBlazor.Extras.Dialogs.DialogBase @inject HttpClient HttpClient +@inherits ShadcnBlazor.Extras.Dialogs.DialogBase + Manage members of @Role.Name @@ -75,7 +77,8 @@ query += $"&searchTerm={request.SearchTerm}"; var response = await HttpClient.GetFromJsonAsync>( - $"api/admin/roles/{Role.Id}/members{query}" + $"api/admin/roles/{Role.Id}/members{query}", + SerializationContext.Default.Options ); return new DataGridResponse(response!.Data, response.TotalLength); @@ -89,7 +92,8 @@ query += $"&searchTerm={searchTerm}"; var response = await HttpClient.GetFromJsonAsync>( - $"api/admin/roles/{Role.Id}/members/available{query}" + $"api/admin/roles/{Role.Id}/members/available{query}", + SerializationContext.Default.Options ); return response!.Data; diff --git a/Moonlight.Frontend/Admin/Users/Roles/UpdateRoleDialog.razor b/Moonlight.Frontend/Admin/Users/Roles/UpdateRoleDialog.razor index f0a0c184..102c83dc 100644 --- a/Moonlight.Frontend/Admin/Users/Roles/UpdateRoleDialog.razor +++ b/Moonlight.Frontend/Admin/Users/Roles/UpdateRoleDialog.razor @@ -1,12 +1,12 @@ @using Moonlight.Frontend.Admin.Users.Shared @using Moonlight.Frontend.Infrastructure.Helpers +@using Moonlight.Shared @using Moonlight.Shared.Admin.Users.Roles @using ShadcnBlazor.Dialogs @using ShadcnBlazor.Extras.Forms @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs -@using SerializationContext = Moonlight.Shared.SerializationContext @inherits ShadcnBlazor.Extras.Dialogs.DialogBase diff --git a/Moonlight.Frontend/Admin/Users/Shared/PermissionSelector.razor b/Moonlight.Frontend/Admin/Users/Shared/PermissionSelector.razor index f4e71ec9..f1a5bea5 100644 --- a/Moonlight.Frontend/Admin/Users/Shared/PermissionSelector.razor +++ b/Moonlight.Frontend/Admin/Users/Shared/PermissionSelector.razor @@ -3,6 +3,7 @@ @using ShadcnBlazor.Checkboxes @using ShadcnBlazor.Extras.Common @using ShadcnBlazor.Labels + @inject IEnumerable Providers diff --git a/Moonlight.Frontend/Admin/Users/Users/CreateUserDialog.razor b/Moonlight.Frontend/Admin/Users/Users/CreateUserDialog.razor index fd42c926..d197931d 100644 --- a/Moonlight.Frontend/Admin/Users/Users/CreateUserDialog.razor +++ b/Moonlight.Frontend/Admin/Users/Users/CreateUserDialog.razor @@ -1,17 +1,17 @@ @using Moonlight.Frontend.Infrastructure.Helpers +@using Moonlight.Shared @using Moonlight.Shared.Admin.Users.Users @using ShadcnBlazor.Dialogs @using ShadcnBlazor.Extras.Forms @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs -@using SerializationContext = Moonlight.Shared.SerializationContext + +@inject ToastService ToastService +@inject HttpClient HttpClient @inherits ShadcnBlazor.Extras.Dialogs.DialogBase -@inject HttpClient HttpClient -@inject ToastService ToastService - Create new user diff --git a/Moonlight.Frontend/Admin/Users/Users/Users.razor b/Moonlight.Frontend/Admin/Users/Users/Index.razor similarity index 99% rename from Moonlight.Frontend/Admin/Users/Users/Users.razor rename to Moonlight.Frontend/Admin/Users/Users/Index.razor index 59ce97b2..1d3d43a7 100644 --- a/Moonlight.Frontend/Admin/Users/Users/Users.razor +++ b/Moonlight.Frontend/Admin/Users/Users/Index.razor @@ -11,7 +11,6 @@ @using ShadcnBlazor.Extras.Dialogs @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Tabels -@using SerializationContext = Moonlight.Shared.SerializationContext @inject HttpClient HttpClient @inject AlertDialogService AlertDialogService diff --git a/Moonlight.Frontend/Admin/Users/Users/UpdateUserDialog.razor b/Moonlight.Frontend/Admin/Users/Users/UpdateUserDialog.razor index dea7f00f..f25dac09 100644 --- a/Moonlight.Frontend/Admin/Users/Users/UpdateUserDialog.razor +++ b/Moonlight.Frontend/Admin/Users/Users/UpdateUserDialog.razor @@ -1,4 +1,5 @@ @using Moonlight.Frontend.Infrastructure.Helpers +@using Moonlight.Shared @using Moonlight.Shared.Admin.Users.Users @using ShadcnBlazor.Dialogs @using ShadcnBlazor.Extras.Forms @@ -62,7 +63,8 @@ { var response = await HttpClient.PatchAsJsonAsync( $"/api/admin/users/{User.Id}", - Request + Request, + SerializationContext.Default.Options ); if (!response.IsSuccessStatusCode) diff --git a/Moonlight.Frontend/Infrastructure/Services/RemoteAuthProvider.cs b/Moonlight.Frontend/Infrastructure/Services/RemoteAuthProvider.cs index 9cc4232c..3e453b87 100644 --- a/Moonlight.Frontend/Infrastructure/Services/RemoteAuthProvider.cs +++ b/Moonlight.Frontend/Infrastructure/Services/RemoteAuthProvider.cs @@ -3,8 +3,8 @@ using System.Net.Http.Json; using System.Security.Claims; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.Extensions.Logging; +using Moonlight.Shared; using Moonlight.Shared.Shared.Auth; -using SerializationContext = Moonlight.Shared.SerializationContext; namespace Moonlight.Frontend.Infrastructure.Services; diff --git a/Moonlight.Frontend/Moonlight.Frontend.csproj b/Moonlight.Frontend/Moonlight.Frontend.csproj index cb87fd8c..63741af5 100644 --- a/Moonlight.Frontend/Moonlight.Frontend.csproj +++ b/Moonlight.Frontend/Moonlight.Frontend.csproj @@ -21,9 +21,9 @@ - - - + + + @@ -54,8 +54,6 @@ - - diff --git a/Moonlight.Frontend/Shared/Auth/Authentication.razor b/Moonlight.Frontend/Shared/Auth/Authentication.razor index 71c2f888..fbfe4635 100644 --- a/Moonlight.Frontend/Shared/Auth/Authentication.razor +++ b/Moonlight.Frontend/Shared/Auth/Authentication.razor @@ -1,8 +1,8 @@ -@using Moonlight.Shared.Shared.Auth +@using Moonlight.Shared +@using Moonlight.Shared.Shared.Auth @using ShadcnBlazor.Buttons @using ShadcnBlazor.Cards @using ShadcnBlazor.Spinners -@using SerializationContext = Moonlight.Shared.SerializationContext @inject HttpClient HttpClient @inject NavigationManager Navigation