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:
+12
-1
@@ -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
@@ -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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user