upd link handling journal

This commit is contained in:
beo3000 2026-02-21 12:46:29 +01:00
parent 9db6cacb8c
commit 90970322f1
4 changed files with 40 additions and 6 deletions

View File

@ -12,7 +12,9 @@
"Bash(docker ps:*)",
"Bash(docker compose:*)",
"Bash(az webapp config appsettings list:*)",
"Bash(node:*)"
"Bash(node:*)",
"Bash(python3:*)",
"Bash(echo:*)"
]
}
}

View File

@ -280,7 +280,12 @@
<div class="group mb-3 flex items-start gap-2 rounded bg-card-bg p-2.5">
<span class="mt-0.5 text-xs text-muted whitespace-nowrap">{formatTime(entry.updatedAt)}</span>
<div class="flex-1">
<div class="font-bold">{truncateUrlDisplay(title)}
<div class="font-bold">
{#if /^https?:\/\//i.test(title)}
<a href={title} target="_blank" rel="noopener noreferrer" class="text-blue-400 hover:underline">{truncateUrlDisplay(title)}</a>
{:else}
{title}
{/if}
{#if entry.linkedContextId}
<span class="ml-1 inline-block rounded bg-accent/20 px-1.5 py-0.5 text-xs font-normal text-accent">
{contextNameMap().get(entry.linkedContextId) ?? entry.linkedContextId}

View File

@ -1,8 +1,21 @@
<script lang="ts">
import { liveQuery } from 'dexie';
import { db } from '$lib/db/schema';
import { resolveWiedervorlage, setWiedervorlage, convertToTopic } from '$lib/db/repositories';
import { resolveWiedervorlage, setWiedervorlage, convertToTopic, softDeleteHistoryEntry } from '$lib/db/repositories';
import type { HistoryEntry } from '@ka-note/shared';
import RenderedMarkdown from './RenderedMarkdown.svelte';
function truncateUrlDisplay(text: string): string {
if (!/^https?:\/\//i.test(text)) return text;
try {
const u = new URL(text);
const path = u.pathname !== '/' ? u.pathname : '';
const display = u.hostname + path;
return display.length > 60 ? display.slice(0, 57) + '…' : display;
} catch {
return text.length > 60 ? text.slice(0, 57) + '…' : text;
}
}
interface Props {
entry: HistoryEntry;
@ -28,6 +41,10 @@
await resolveWiedervorlage(entry.id);
}
async function handleDelete() {
await softDeleteHistoryEntry(entry.id);
}
async function handleVerschieben() {
if (!newDate) return;
await setWiedervorlage(entry.id, newDate);
@ -48,9 +65,15 @@
<span class="text-xs font-semibold uppercase tracking-wider text-amber-400">⏰ Wiedervorlage {entry.wiedervorlageDate}</span>
</div>
<div class="mb-3">
<div class="font-bold text-white">{title}</div>
<div class="font-bold text-white">
{#if /^https?:\/\//i.test(title)}
<a href={title} target="_blank" rel="noopener noreferrer" class="text-blue-400 hover:underline">{truncateUrlDisplay(title)}</a>
{:else}
{title}
{/if}
</div>
{#if body}
<div class="mt-1 text-sm text-[#ccc]">{body}</div>
<RenderedMarkdown text={body} class="mt-1 text-sm text-[#ccc]" />
{/if}
</div>
@ -105,6 +128,10 @@
class="rounded bg-[#444] px-3 py-1 text-sm text-white hover:bg-[#555]"
onclick={() => showConvert = true}
>In Thema wandeln</button>
<button
class="ml-auto rounded bg-red-900/60 px-3 py-1 text-sm text-red-300 hover:bg-red-800"
onclick={handleDelete}
>Löschen</button>
</div>
{/if}
</div>

View File

@ -4,7 +4,7 @@
"private": true,
"type": "module",
"scripts": {
"dev": "tsx watch src/index.ts",
"dev": "node --watch --import tsx/esm src/index.ts",
"build": "tsc",
"start": "node dist/index.js",
"db:generate": "drizzle-kit generate",