Sessions: Sidebar, Session-Wechsel, Archivieren-Button, alles session-bezogen

This commit is contained in:
Meleki committed 2026-02-26 18:37:24 +01:00
1 parent 8ddee38032
commit 25f07caf83
15 files changed
+442 -78

No files matched your search

+31 -8
View File
@@ -23,12 +23,14 @@ public static class HistoryEndpoint
private static async Task HandleHistory(HttpContext ctx, DatabaseService db)
{
var sessionId = ctx.Request.Query["sessionId"].FirstOrDefault();
if (string.IsNullOrEmpty(sessionId))
{
ctx.Response.StatusCode = 400;
await ctx.Response.WriteAsJsonAsync(new { error = "sessionId required" });
return;
}
IEnumerable<ChainRecord> chains;
if (string.IsNullOrEmpty(sessionId) || sessionId == "null")
chains = await db.GetActiveChains();
else
chains = await db.GetSessionChains(sessionId);
var chains = await db.GetActiveChains(sessionId);
var result = new List<object>();
foreach (var chain in chains)
@@ -42,16 +44,30 @@ public static class HistoryEndpoint
private static async Task HandlePoll(HttpContext ctx, DatabaseService db)
{
var sessionId = ctx.Request.Query["sessionId"].FirstOrDefault();
var afterStr = ctx.Request.Query["afterId"].FirstOrDefault();
var afterId = long.TryParse(afterStr, out var a) ? a : 0;
var messages = await db.GetActiveMessagesAfterId(afterId);
if (string.IsNullOrEmpty(sessionId))
{
ctx.Response.StatusCode = 400;
return;
}
var messages = await db.GetActiveMessagesAfterId(sessionId, afterId);
await ctx.Response.WriteAsJsonAsync(messages);
}
private static async Task HandleArchive(HttpContext ctx, DatabaseService db)
{
var archive = await db.CreateArchive();
var sessionId = ctx.Request.Query["sessionId"].FirstOrDefault();
if (string.IsNullOrEmpty(sessionId))
{
ctx.Response.StatusCode = 400;
return;
}
var archive = await db.CreateArchive(sessionId);
if (archive == null)
{
ctx.Response.StatusCode = 204;
@@ -62,7 +78,14 @@ public static class HistoryEndpoint
private static async Task HandleListArchives(HttpContext ctx, DatabaseService db)
{
var archives = await db.GetArchives();
var sessionId = ctx.Request.Query["sessionId"].FirstOrDefault();
if (string.IsNullOrEmpty(sessionId))
{
ctx.Response.StatusCode = 400;
return;
}
var archives = await db.GetArchives(sessionId);
await ctx.Response.WriteAsJsonAsync(archives);
}