const ARTIKEL_QUERY_KEY = 'dashfront:artikel-query'; export function queryFromParams(searchParams) { return { target: searchParams.get('target') ?? '', filter: searchParams.get('filter') ?? '', offset: Math.max(0, Number(searchParams.get('offset')) || 0), }; } export function buildSearchUrl(target, filter = '', offset = 0) { const params = new URLSearchParams(); if (target) params.set('target', target); if (filter) params.set('filter', filter); if (offset > 0) params.set('offset', String(offset)); const qs = params.toString(); return qs ? `/artikel?${qs}` : '/artikel'; } export function readArtikelQuery() { try { const raw = localStorage.getItem(ARTIKEL_QUERY_KEY); return raw ? JSON.parse(raw) : null; } catch { return null; } } export function writeArtikelQuery({ target, filter = '', offset = 0 }) { try { if (!target || target.trim().length < 3) { localStorage.removeItem(ARTIKEL_QUERY_KEY); return; } localStorage.setItem( ARTIKEL_QUERY_KEY, JSON.stringify({ target, filter, offset }), ); } catch { // ignore quota / private mode } } export function clearArtikelQuery() { try { localStorage.removeItem(ARTIKEL_QUERY_KEY); } catch { // ignore } } /** Build `/artikel?target=…` from the last stored query, or plain `/artikel`. */ export function artikelQueryPath() { const query = readArtikelQuery(); if (!query?.target || query.target.trim().length < 3) return '/artikel'; return buildSearchUrl(query.target, query.filter ?? '', query.offset ?? 0); }