More
Some checks failed
CI / Check (push) Failing after 2m14s
Build and publish Docker image / build-and-push (push) Failing after 2m38s

This commit is contained in:
Andras Schmelczer 2026-05-04 17:21:26 +01:00
parent cd34ee693f
commit 05a1f316e1
58 changed files with 3113 additions and 1277 deletions

View file

@ -1,6 +1,7 @@
import type { FeatureMeta, FeatureFilters } from '../types';
import { INITIAL_RETRY_MS, MAX_RETRY_MS } from './consts';
import pb from './pocketbase';
import { getSchoolBackendFeatureName } from './school-filter';
export function logNonAbortError(label: string, error: unknown): void {
if (error instanceof Error && error.name === 'AbortError') {
@ -82,8 +83,29 @@ export function buildFilterString(
): string {
const entries = Object.entries(filters);
if (entries.length === 0) return '';
return entries
.filter(([name]) => name !== exclude)
const merged = new Map<string, [number, number] | string[]>();
for (const [name, value] of entries) {
if (name === exclude) continue;
const backendName = getSchoolBackendFeatureName(name) ?? name;
const prev = merged.get(backendName);
if (
prev &&
Array.isArray(prev) &&
Array.isArray(value) &&
typeof prev[0] === 'number' &&
typeof value[0] === 'number'
) {
merged.set(backendName, [
Math.max(prev[0] as number, value[0] as number),
Math.min(prev[1] as number, value[1] as number),
]);
} else if (!prev) {
merged.set(backendName, value);
}
}
return [...merged.entries()]
.map(([name, value]) => {
const meta = features.find((f) => f.name === name);
if (meta?.type === 'enum') {