diff --git a/add.html b/add.html
index 6e6ee54..094f26c 100644
--- a/add.html
+++ b/add.html
@@ -548,8 +548,13 @@
try {
const res = await fetch(SERVER_WEBHOOK);
const raw = await res.json();
- // Handle both {data: [...]} and flat array/object
- const list = raw && Array.isArray(raw.data) ? raw.data : Array.isArray(raw) ? raw : [raw].filter(Boolean);
+ // Unwrap [{data: [...]}] → {data: [...]}
+ let data = raw;
+ if (Array.isArray(raw) && raw.length > 0 && raw[0] && Array.isArray(raw[0].data)) {
+ data = raw[0];
+ }
+ // Handle {data: [...]}, flat array, or single object
+ const list = data && Array.isArray(data.data) ? data.data : Array.isArray(data) ? data : [data].filter(Boolean);
const servers = list.filter(function(s) { return s && s.server; });
sel.innerHTML = '';
// Determine overall select styling based on lowest availability
diff --git a/assets/js/script.js b/assets/js/script.js
index 55495cc..9610b37 100644
--- a/assets/js/script.js
+++ b/assets/js/script.js
@@ -649,8 +649,13 @@ async function initServerLocations() {
try {
const res = await fetch(SERVER_WEBHOOK);
const raw = await res.json();
- // Handle both {data: [...]} and flat array/object
- const list = raw && Array.isArray(raw.data) ? raw.data : Array.isArray(raw) ? raw : [raw].filter(Boolean);
+ // Unwrap [{data: [...]}] → {data: [...]}
+ let data = raw;
+ if (Array.isArray(raw) && raw.length > 0 && raw[0] && Array.isArray(raw[0].data)) {
+ data = raw[0];
+ }
+ // Handle {data: [...]}, flat array, or single object
+ const list = data && Array.isArray(data.data) ? data.data : Array.isArray(data) ? data : [data].filter(Boolean);
const servers = list.filter(function (s) { return s && s.server; });
// Clear existing options