Auto-correct localhost API base on hosted frontend pages.
CI / test (push) Successful in 4s

This prevents stale localStorage geo_api_base values from forcing localhost API calls on production domains by defaulting to window.location.origin when appropriate.

Made-with: Cursor
This commit is contained in:
2026-03-02 22:51:09 +00:00
parent d4464461b2
commit 63e7e73360
3 changed files with 30 additions and 3 deletions
+12 -1
View File
@@ -4,9 +4,20 @@ import { scanQRFromCamera } from "./scanner.js";
const { createApp, ref, reactive, onMounted, watch } = Vue;
function normalizeInitialApiBase() {
const saved = localStorage.getItem("geo_api_base") || "";
const host = window.location.hostname.toLowerCase();
if (saved) {
const pointsToLocalhost = /^https?:\/\/(localhost|127\.0\.0\.1)(:\d+)?(\/|$)/i.test(saved);
const runningHosted = host !== "localhost" && host !== "127.0.0.1";
if (!(runningHosted && pointsToLocalhost)) return saved;
}
return window.location.origin;
}
createApp({
setup() {
const apiBase = ref(localStorage.getItem("geo_api_base") || "https://tenerife.baby");
const apiBase = ref(normalizeInitialApiBase());
const state = reactive({
publicKey: "",
privateKey: "",
+11 -1
View File
@@ -51,6 +51,12 @@ function currentApiBase() {
return apiBaseEl.value.trim().replace(/\/+$/g, "");
}
function shouldUseHostedDefault(savedBase) {
const host = window.location.hostname.toLowerCase();
if (host === "localhost" || host === "127.0.0.1") return false;
return /^https?:\/\/(localhost|127\.0\.0\.1)(:\d+)?(\/|$)/i.test(savedBase || "");
}
function extFromFilename(name) {
const idx = name.lastIndexOf(".");
if (idx <= 0) return "";
@@ -331,9 +337,13 @@ document.getElementById("uploadAsset").onclick = async () => {
};
const savedBase = localStorage.getItem("geo_api_base");
if (savedBase) {
if (savedBase && !shouldUseHostedDefault(savedBase)) {
apiBaseEl.value = savedBase;
setClientBase(savedBase);
} else {
const defaultBase = window.location.origin;
apiBaseEl.value = defaultBase;
setClientBase(defaultBase);
}
renderSharedAssetFromQuery();
+7 -1
View File
@@ -51,6 +51,12 @@ function currentApiBase() {
return apiBaseEl.value.trim().replace(/\/+$/g, "");
}
function shouldUseHostedDefault(savedBase) {
const host = window.location.hostname.toLowerCase();
if (host === "localhost" || host === "127.0.0.1") return false;
return /^https?:\/\/(localhost|127\.0\.0\.1)(:\d+)?(\/|$)/i.test(savedBase || "");
}
function extFromFilename(name) {
const idx = name.lastIndexOf(".");
if (idx <= 0) return "";
@@ -644,7 +650,7 @@ map.on("click", (event) => {
});
const savedBase = localStorage.getItem("geo_api_base");
if (savedBase) {
if (savedBase && !shouldUseHostedDefault(savedBase)) {
apiBaseEl.value = savedBase;
setClientBase(savedBase);
} else {