// /public/assets/js/fakecheck/fakecheck.serial.js (function () { if (!window.usbcheck) return; const { cfg, t, tFmt, log: logLine } = window.usbcheck; const rootSc = document.getElementById("serialcheck-root"); if (!rootSc) return; // Partial nicht eingebunden → nichts tun // Elemente const form = rootSc.querySelector("#serialcheck-form"); const errorBox = rootSc.querySelector("#serialcheck-error"); const resultBox = rootSc.querySelector("#serialcheck-result"); const manufacturerInput = rootSc.querySelector("#sc-manufacturer"); const vidInput = rootSc.querySelector("#sc-vid"); const pidInput = rootSc.querySelector("#sc-pid"); const serialInput = rootSc.querySelector("#sc-serial"); // API-Basis: // - cfg.apiBase kommt aus fakecheck.core.js (z.B. https://api.usbcheck.it) // - wir hängen /v1/quickcheck dran // - Fallback: /api/v1/quickcheck auf demselben Host const apiBaseRaw = (cfg && cfg.apiBase) ? cfg.apiBase : ""; const apiBase = apiBaseRaw.replace(/\/+$/, ""); const apiUrl = apiBase ? (apiBase + "/v1/quickcheck") : "/api/v1/quickcheck"; // ------------------------------------------------------- // Fehleranzeige // ------------------------------------------------------- function showScError(msgKey, fallback, vars = {}) { if (!errorBox) return; const msg = tFmt(msgKey, fallback, vars); errorBox.textContent = msg; errorBox.classList.remove("hidden"); if (resultBox) resultBox.classList.add("hidden"); } function clearScError() { if (!errorBox) return; errorBox.classList.add("hidden"); errorBox.textContent = ""; } // ------------------------------------------------------- // Ergebnis rendern // ------------------------------------------------------- function renderScResult(data) { if (!resultBox) return; clearScError(); resultBox.classList.remove("hidden"); const rating = data.rating || "unknown"; const input = data.input || {}; const vendorInfo = data.vendor_detected || {}; const serialInfo = data.serial_analysis || {}; const consistency = data.consistency || {}; // Rating → Label + Beschreibung const ratingLabel = t(`serial.rating.${rating}.label`, rating); const ratingDesc = t(`serial.rating.${rating}.desc`, ""); // Auffälligkeiten const issues = serialInfo.issues || []; const issuesHtml = issues.length ? '
${ratingDesc}
${serialInfo.serial || ""}${t("serial.disclaimer", "Diese Einschätzung basiert auf Heuristiken und kann keine Echtheit garantieren.")}