- Neue Spalte 'settings' in users-Tabelle (Migration via TryAddColumn) - SettingsEndpoint: GET/PUT /api/settings - DatabaseService: GetUserSettings() + UpdateUserSettings() - Frontend: currentSettings als globaler State in app.js - settings-page.js: localStorage komplett entfernt, nutzt API - Settings werden beim App-Start aus DB geladen und angewendet
36 lines
1.1 KiB
C#
36 lines
1.1 KiB
C#
using System.Text.Json;
|
|
using Gott.Extensions;
|
|
using Gott.Services;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Routing;
|
|
|
|
namespace Gott.Endpoints;
|
|
|
|
public static class SettingsEndpoint
|
|
{
|
|
public static void MapSettingsEndpoints(this WebApplication app)
|
|
{
|
|
app.MapGet("/api/settings", HandleGet);
|
|
app.MapPut("/api/settings", HandleUpdate);
|
|
}
|
|
|
|
private static async System.Threading.Tasks.Task HandleGet(HttpContext ctx, DatabaseService db)
|
|
{
|
|
var userId = ctx.GetUserId();
|
|
var json = await db.GetUserSettings(userId);
|
|
ctx.Response.ContentType = "application/json";
|
|
await ctx.Response.WriteAsync(json ?? "{}");
|
|
}
|
|
|
|
private static async System.Threading.Tasks.Task HandleUpdate(HttpContext ctx, DatabaseService db)
|
|
{
|
|
var userId = ctx.GetUserId();
|
|
var body = await JsonSerializer.DeserializeAsync<JsonElement>(ctx.Request.Body);
|
|
var json = body.ToString();
|
|
await db.UpdateUserSettings(userId, json);
|
|
ctx.Response.ContentType = "application/json";
|
|
await ctx.Response.WriteAsync(json);
|
|
}
|
|
}
|