Alle ausstehenden Aenderungen (Bilder, Texte) fuer den Server-Umzug uebernommen
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
/* =====================================================================
|
||||
supporter.js — gemeinsame Helfer für abonnieren.html + supporter.html
|
||||
(Dogfather Supporter-Abo). Eigenes, von main.js/forms.js
|
||||
komplett getrenntes Token-System (localStorage-Key "supporterToken"),
|
||||
siehe cloudflare-worker/src/lib/supporter-auth.js.
|
||||
===================================================================== */
|
||||
(function () {
|
||||
const API_BASE = "https://dogfather-universe-postfach.dogfather1608.workers.dev";
|
||||
|
||||
function getToken() {
|
||||
return localStorage.getItem("supporterToken") || "";
|
||||
}
|
||||
function setToken(token) {
|
||||
localStorage.setItem("supporterToken", token);
|
||||
}
|
||||
function clearToken() {
|
||||
localStorage.removeItem("supporterToken");
|
||||
localStorage.removeItem("supporterSubStatus");
|
||||
localStorage.removeItem("supporterDisplayName");
|
||||
}
|
||||
/* Wird vom Nav-Abo-Button in main.js gelesen (renderAboButton), damit die
|
||||
Beschriftung/das Ziel sofort beim nächsten Seitenwechsel stimmt, ohne
|
||||
dass main.js selbst einen API-Aufruf machen muss. */
|
||||
function cacheSubStatus(status) {
|
||||
if (status) localStorage.setItem("supporterSubStatus", status);
|
||||
else localStorage.removeItem("supporterSubStatus");
|
||||
}
|
||||
/* Name der eingeloggten Person (aus /supporter/me → profile.displayName) —
|
||||
damit der Nav-Knopf bei aktivem Abo statt des generischen "Supporter-
|
||||
Bereich" gleich den Benutzernamen zeigen kann (Nutzer-Feedback
|
||||
03.08.2026). Wird von abonnieren.html/supporter.html nach jedem
|
||||
erfolgreichen /supporter/me-Aufruf gesetzt. */
|
||||
function cacheDisplayName(name) {
|
||||
if (name) localStorage.setItem("supporterDisplayName", name);
|
||||
else localStorage.removeItem("supporterDisplayName");
|
||||
}
|
||||
|
||||
async function apiFetch(path, body, authed) {
|
||||
const headers = { "Content-Type": "application/json" };
|
||||
if (authed) headers.Authorization = `Bearer ${getToken()}`;
|
||||
let res;
|
||||
try {
|
||||
res = await fetch(`${API_BASE}${path}`, { method: "POST", headers, body: JSON.stringify(body || {}) });
|
||||
} catch {
|
||||
throw new Error("Verbindung zum Server fehlgeschlagen. Bitte prüfe deine Internetverbindung.");
|
||||
}
|
||||
let data = null;
|
||||
try {
|
||||
data = await res.json();
|
||||
} catch {
|
||||
/* leere Antwort ist ok, z.B. bei manchen Fehlern */
|
||||
}
|
||||
if (!res.ok || !data || data.ok === false) {
|
||||
const err = new Error((data && data.error) || `Anfrage fehlgeschlagen (${res.status}).`);
|
||||
err.code = data && data.code;
|
||||
err.status = res.status;
|
||||
throw err;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
window.DogiSupporter = { API_BASE, getToken, setToken, clearToken, cacheSubStatus, cacheDisplayName, apiFetch };
|
||||
})();
|
||||
Reference in New Issue
Block a user