feat: Geteilte Links auf Dashboard anzeigen + URL-Fix

Dashboard:
- Neue Section 'Geteilte Links' zeigt alle aktiven Shares
- Pro Eintrag: Role-Icon, Text-Vorschau, Session-Name, Modus, Datum
- Buttons: Link kopieren, öffnen, löschen (mit sofortigem UI-Update)
- Section nur sichtbar wenn Shares vorhanden

Backend:
- SharedEndpoint HandleListShares erweitert: Nachricht-Preview,
  Role, Session-Name pro Share mitgeliefert

Frontend:
- apiListShares() Funktion hinzugefügt
- Bugfix: Share-URL '/#/shared/' → '/#shared/' (Extra-Slash
  verursachte 404 weil parseHash leeren Page-Namen ergab)
This commit is contained in:
Meleki committed 2026-03-05 12:01:28 +01:00
1 parent 4bdcebc1e1
commit 38a8223228
5 files changed
+148 -1

No files matched your search

+32 -1
View File
@@ -161,7 +161,38 @@ public static class SharedEndpoint
{
var userId = ctx.GetUserId();
var shares = await db.GetSharedMessagesByUser(userId);
await ctx.Response.WriteAsJsonAsync(shares);
var result = new List<object>();
foreach (var s in shares)
{
var message = await db.GetMessage(s.MessageId);
string sessionName = null;
if (message != null)
{
var chain = await db.GetChain(message.ChainId);
if (chain != null)
{
var session = await db.GetSession(chain.SessionId);
sessionName = session?.Name;
}
}
var preview = message?.Content ?? "";
if (preview.Length > 150) preview = preview.Substring(0, 150) + "…";
result.Add(new
{
s.ShareToken,
s.MessageId,
s.IncludeContext,
s.CreatedAt,
role = message?.Role,
preview,
sessionName
});
}
await ctx.Response.WriteAsJsonAsync(result);
}
private static async Task HandleDeleteShare(HttpContext ctx, DatabaseService db)