feat(#221): wire tagOp URL param from server to SearchFilterBar

Reads ?tagOp=OR from URL in +page.server.ts, passes it to the backend
search endpoint, and surfaces it via the filters return. +page.svelte
initialises tagOperator state from filters, writes it back to the URL
in triggerSearch(), and binds it to SearchFilterBar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-16 16:25:27 +02:00
parent b54d2b0125
commit abba85a451
2 changed files with 10 additions and 2 deletions

View File

@@ -29,6 +29,7 @@ export async function load({ url, fetch }) {
? (rawDir as ValidDir)
: 'desc';
const tagQ = url.searchParams.get('tagQ') || '';
const tagOp = url.searchParams.get('tagOp') === 'OR' ? 'OR' : 'AND';
const isDashboard = !q && !from && !to && !senderId && !receiverId && !tags.length && !tagQ;
@@ -48,6 +49,7 @@ export async function load({ url, fetch }) {
receiverId: receiverId || undefined,
tag: tags.length ? tags : undefined,
tagQ: tagQ || undefined,
tagOp: tagOp === 'OR' ? 'OR' : undefined,
sort,
dir: dir || undefined
}
@@ -147,7 +149,7 @@ export async function load({ url, fetch }) {
senderName: senderObj?.displayName ?? '',
receiverName: receiverObj?.displayName ?? ''
},
filters: { q, from, to, senderId, receiverId, tags, sort, dir, tagQ },
filters: { q, from, to, senderId, receiverId, tags, sort, dir, tagQ, tagOp },
error: null as string | null
};
} catch (e) {
@@ -166,7 +168,7 @@ export async function load({ url, fetch }) {
readyDocs: [],
weeklyStats: null,
initialValues: { senderName: '', receiverName: '' },
filters: { q, from, to, senderId, receiverId, tags, sort, dir, tagQ },
filters: { q, from, to, senderId, receiverId, tags, sort, dir, tagQ, tagOp },
error: 'Daten konnten nicht geladen werden.' as string | null
};
}