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;
|
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({
|
createApp({
|
||||||
setup() {
|
setup() {
|
||||||
const apiBase = ref(localStorage.getItem("geo_api_base") || "https://tenerife.baby");
|
const apiBase = ref(normalizeInitialApiBase());
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
publicKey: "",
|
publicKey: "",
|
||||||
privateKey: "",
|
privateKey: "",
|
||||||
|
|||||||
+11
-1
@@ -51,6 +51,12 @@ function currentApiBase() {
|
|||||||
return apiBaseEl.value.trim().replace(/\/+$/g, "");
|
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) {
|
function extFromFilename(name) {
|
||||||
const idx = name.lastIndexOf(".");
|
const idx = name.lastIndexOf(".");
|
||||||
if (idx <= 0) return "";
|
if (idx <= 0) return "";
|
||||||
@@ -331,9 +337,13 @@ document.getElementById("uploadAsset").onclick = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const savedBase = localStorage.getItem("geo_api_base");
|
const savedBase = localStorage.getItem("geo_api_base");
|
||||||
if (savedBase) {
|
if (savedBase && !shouldUseHostedDefault(savedBase)) {
|
||||||
apiBaseEl.value = savedBase;
|
apiBaseEl.value = savedBase;
|
||||||
setClientBase(savedBase);
|
setClientBase(savedBase);
|
||||||
|
} else {
|
||||||
|
const defaultBase = window.location.origin;
|
||||||
|
apiBaseEl.value = defaultBase;
|
||||||
|
setClientBase(defaultBase);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderSharedAssetFromQuery();
|
renderSharedAssetFromQuery();
|
||||||
|
|||||||
@@ -51,6 +51,12 @@ function currentApiBase() {
|
|||||||
return apiBaseEl.value.trim().replace(/\/+$/g, "");
|
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) {
|
function extFromFilename(name) {
|
||||||
const idx = name.lastIndexOf(".");
|
const idx = name.lastIndexOf(".");
|
||||||
if (idx <= 0) return "";
|
if (idx <= 0) return "";
|
||||||
@@ -644,7 +650,7 @@ map.on("click", (event) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const savedBase = localStorage.getItem("geo_api_base");
|
const savedBase = localStorage.getItem("geo_api_base");
|
||||||
if (savedBase) {
|
if (savedBase && !shouldUseHostedDefault(savedBase)) {
|
||||||
apiBaseEl.value = savedBase;
|
apiBaseEl.value = savedBase;
|
||||||
setClientBase(savedBase);
|
setClientBase(savedBase);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user