This commit is contained in:
seb
2026-09-29 09:30:43 +02:00
parent c4f8ebb41b
commit 18419b1615
33 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
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);
}