Added theme saving. Added interfaces for overview pages. Renamed sidebar interface function

This commit is contained in:
2025-02-26 13:09:31 +01:00
parent f4a0aabb61
commit cdc4744f28
20 changed files with 224 additions and 117 deletions

View File

@@ -0,0 +1,24 @@
@using Microsoft.AspNetCore.Components.Authorization
<div class="col-span-12 md:col-span-6 xl:col-span-3">
<div class="font-medium leading-[1.1] tracking-tight">
<div class="animate-shimmer bg-gradient-to-r from-violet-400 via-sky-400 to-purple-400 bg-clip-text font-semibold text-transparent text-3xl" style="animation-duration: 5s; background-size: 200% 100%">
Welcome, @(Username)
</div>
<div class="text-gray-200 text-2xl">What do you want to do today?</div>
</div>
</div>
@code
{
[CascadingParameter] public Task<AuthenticationState> AuthState { get; set; }
private string Username;
protected override async Task OnInitializedAsync()
{
var identity = await AuthState;
var usernameClaim = identity.User.Claims.ToArray().First(x => x.Type == "username");
Username = usernameClaim.Value;
}
}

View File

@@ -1,6 +1,5 @@
@using Moonlight.Client.Interfaces
@using Moonlight.Client.Models
@using Moonlight.Client.Services
@using Moonlight.Client.UI.Layouts
@inject NavigationManager Navigation
@@ -129,8 +128,12 @@
protected override void OnInitialized()
{
Items = SidebarItemProviders
.SelectMany(x => x.Get())
var sidebarItems = new List<SidebarItem>();
foreach (var provider in SidebarItemProviders)
provider.ModifySidebar(sidebarItems);
Items = sidebarItems
//.Where(x => x.Permission == null || (x.Permission != null && IdentityService.HasPermission(x.Permission)))
.GroupBy(x => x.Group ?? "")
.OrderByDescending(x => string.IsNullOrEmpty(x.Key))

View File

@@ -2,6 +2,7 @@
@using MoonCore.Helpers
@using Moonlight.Client.Services
@using Moonlight.Client.UI.Components
@using Moonlight.Shared.Http.Requests.Admin.Sys
@using Moonlight.Shared.Misc
@inject HttpApiClient ApiClient
@@ -199,9 +200,13 @@
return;
}
await ToastService.Success("Successfully saved theme settings");
// Send new variables
await ApiClient.Patch("api/admin/system/theme", new UpdateThemeRequest()
{
Variables = ThemeService.Variables
});
//TODO: Implement saving on the api server
await ToastService.Success("Successfully saved theme settings");
}
private async Task Export()

View File

@@ -1,15 +1,34 @@
@page "/admin"
@using Moonlight.Client.Services
@inject DownloadService DownloadService
@using MoonCore.Helpers
@using Moonlight.Client.Interfaces
<WButton OnClick="OnClick">Test DownloadService</WButton>
@inject IEnumerable<IAdminOverviewElementProvider> ElementProviders
<div class="grid grid-cols-12">
@foreach (var render in Renders)
{
@render
}
</div>
@code
{
private async Task OnClick(WButton _)
private RenderFragment[] Renders;
protected override void OnInitialized()
{
await DownloadService.DownloadString("test.txt", "Download seems to be working");
var renders = new List<RenderFragment>();
var elementTypes = new List<Type>();
foreach (var elementProvider in ElementProviders)
elementProvider.ModifyOverview(elementTypes);
foreach (var elementType in elementTypes)
renders.Add(ComponentHelper.FromType(elementType));
Renders = renders.ToArray();
}
}

View File

@@ -1,26 +1,32 @@
@page "/"
@using MoonCore.Helpers
@using Moonlight.Client.Interfaces
@using Microsoft.AspNetCore.Components.Authorization
@inject IEnumerable<IOverviewElementProvider> ElementProviders
<div class="font-medium leading-[1.1] tracking-tight">
<div class="animate-shimmer bg-gradient-to-r from-violet-400 via-sky-400 to-purple-400 bg-clip-text font-semibold text-transparent text-3xl" style="animation-duration: 5s; background-size: 200% 100%">
Welcome, @(Username)
</div>
<div class="text-gray-200 text-2xl">What do you want to do today?</div>
<div class="grid grid-cols-12">
@foreach (var render in Renders)
{
@render
}
</div>
<div class="text-primary-500/10"></div>
@code
{
[CascadingParameter] public Task<AuthenticationState> AuthState { get; set; }
private string Username;
private RenderFragment[] Renders;
protected override async Task OnInitializedAsync()
protected override void OnInitialized()
{
var identity = await AuthState;
var usernameClaim = identity.User.Claims.ToArray().First(x => x.Type == "username");
Username = usernameClaim.Value;
var renders = new List<RenderFragment>();
var elementTypes = new List<Type>();
foreach (var elementProvider in ElementProviders)
elementProvider.ModifyOverview(elementTypes);
foreach (var elementType in elementTypes)
renders.Add(ComponentHelper.FromType(elementType));
Renders = renders.ToArray();
}
}