From 371d92f52af870d0207af8db0d849da4e786792a Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 19 Mar 2026 21:19:36 +0100 Subject: [PATCH] feat(person): add conversations quick-link (#20) Add a "Konversationen anzeigen" link to the person detail page header that navigates to /conversations?senderId={id}, pre-filling the person as Person A. Includes i18n in de/en/es and an E2E test. Co-Authored-By: Claude Sonnet 4.6 --- frontend/e2e/persons.spec.ts | 13 +++++++++++++ frontend/messages/en.json | 3 ++- frontend/messages/es.json | 3 ++- frontend/src/routes/persons/[id]/+page.svelte | 14 ++++++++++---- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/frontend/e2e/persons.spec.ts b/frontend/e2e/persons.spec.ts index c6072347..071d2af4 100644 --- a/frontend/e2e/persons.spec.ts +++ b/frontend/e2e/persons.spec.ts @@ -72,6 +72,19 @@ test.describe('New person', () => { }); }); +test.describe('Person detail — conversations link', () => { + test('has a conversations link that pre-fills the person', async ({ page }) => { + await page.goto('/persons'); + const firstLink = page.locator('a[href^="/persons/"]').first(); + const href = await firstLink.getAttribute('href'); + const personId = href!.split('/persons/')[1]; + await firstLink.click(); + const convLink = page.getByRole('link', { name: /Konversationen/i }); + await expect(convLink).toBeVisible(); + await expect(convLink).toHaveAttribute('href', `/conversations?senderId=${personId}`); + }); +}); + test.describe('Conversations', () => { test('shows the empty state when no persons are selected', async ({ page }) => { await page.goto('/conversations'); diff --git a/frontend/messages/en.json b/frontend/messages/en.json index cb4ec322..eb49ce53 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -175,5 +175,6 @@ "comp_taginput_placeholder_create": "Add tags...", "comp_taginput_placeholder_filter": "Filter by tags...", "comp_taginput_remove": "Remove tag", - "comp_taginput_create_hint": "Press Enter to create tag." + "comp_taginput_create_hint": "Press Enter to create tag.", + "person_btn_conversations": "View conversations" } diff --git a/frontend/messages/es.json b/frontend/messages/es.json index 90ce4108..627e7391 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -175,5 +175,6 @@ "comp_taginput_placeholder_create": "Añadir etiquetas...", "comp_taginput_placeholder_filter": "Filtrar por etiquetas...", "comp_taginput_remove": "Eliminar etiqueta", - "comp_taginput_create_hint": "Pulse Enter para crear etiqueta." + "comp_taginput_create_hint": "Pulse Enter para crear etiqueta.", + "person_btn_conversations": "Ver conversaciones" } diff --git a/frontend/src/routes/persons/[id]/+page.svelte b/frontend/src/routes/persons/[id]/+page.svelte index 3b7b8f3e..e29e227f 100644 --- a/frontend/src/routes/persons/[id]/+page.svelte +++ b/frontend/src/routes/persons/[id]/+page.svelte @@ -108,10 +108,16 @@

{person.firstName} {person.lastName}

- +
+ + + {m.person_btn_conversations()} + + +