Logo-Upload sichtbar machen; empfohlene Abmessungen angeben
Fehler: Ein hochgeladenes Logo blieb unsichtbar, auch nach dem Neuladen.
Die Oberflaeche prueft per Anfrage, ob ein Bild hinterlegt ist, und nutzte dafuer
HEAD. FastAPI registriert fuer eine GET-Route aber - anders als Starlette - kein
HEAD; die Anfrage lief in ein 405, und jedes hinterlegte Bild galt als "nicht
vorhanden". Der Upload selbst war die ganze Zeit in Ordnung.
- Neuer Endpunkt GET /branding liefert nur den Status ({"logo": true, ...}),
ohne Bilddaten zu uebertragen. Die Oberflaeche fragt jetzt diesen ab.
- Die Bild-Route beantwortet zusaetzlich HEAD, damit sie sich erwartungsgemaess
verhaelt.
Ausserdem:
- Die empfohlenen Abmessungen stehen jetzt sichtbar ueber der Vorschau
(Logo etwa 400x72 px, Favicon 64x64 px, jeweils hoechstens 512 KB).
- Nach dem Hochladen wird die tatsaechliche Bildgroesse angezeigt, damit man
sie mit der Empfehlung vergleichen kann.
Geprueft: "npm run build" laeuft durch.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -8,14 +8,28 @@ export function brandingUrl(kind, version) {
|
||||
return `/api/branding/${kind}${version ? `?v=${version}` : ""}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fragt beim Server ab, welche eigenen Bilder hinterlegt sind.
|
||||
*
|
||||
* Frueher lief das als HEAD-Anfrage auf das Bild selbst. FastAPI beantwortet
|
||||
* eine GET-Route aber nicht automatisch auch mit HEAD – die Anfrage endete in
|
||||
* einem 405, und ein hochgeladenes Logo wurde nie angezeigt. Jetzt liefert der
|
||||
* Server einen kleinen Status, ganz ohne Bilddaten.
|
||||
*/
|
||||
export async function brandingStatus() {
|
||||
try {
|
||||
const resp = await fetch("/api/branding");
|
||||
if (!resp.ok) return {};
|
||||
return await resp.json();
|
||||
} catch {
|
||||
return {}; // Server nicht erreichbar: eingebautes Zeichen genügt.
|
||||
}
|
||||
}
|
||||
|
||||
/** Prüft, ob ein eigenes Bild hinterlegt ist (ohne es zu laden). */
|
||||
export async function hasBranding(kind) {
|
||||
try {
|
||||
const resp = await fetch(brandingUrl(kind), { method: "HEAD" });
|
||||
return resp.ok;
|
||||
} catch {
|
||||
return false; // Server nicht erreichbar: eingebautes Zeichen genügt.
|
||||
}
|
||||
const status = await brandingStatus();
|
||||
return Boolean(status[kind]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user