This commit is contained in:
2025-12-09 00:03:50 +01:00
parent 2a167c0c4d
commit 9488fe1ea4
2 changed files with 70 additions and 10 deletions

View File

@@ -250,8 +250,10 @@ function fillSettingsForm(settings) {
settingsForm.bridge_token.value = settings.bridge_token || '';
settingsForm.sender_token.value = settings.sender_token || '';
settingsForm.external_api_token.value = settings.external_api_token || '';
const tables = Array.isArray(settings.bridge_tables) ? settings.bridge_tables : [];
settingsForm.bridge_tables ? settingsForm.bridge_tables.value = tables.join(', ') : null;
const tables = normalizeTableNames(settings.bridge_tables);
if (settingsForm.bridge_tables) {
settingsForm.bridge_tables.value = tables.join(', ');
}
applyBridgePreview(tables);
state.rotate = { bridge: false, sender: false, external: false };
}
@@ -343,7 +345,7 @@ function parseBridgeTablesInput() {
}
function applyBridgePreview(tables) {
state.bridgeTables = Array.isArray(tables) ? tables : [];
state.bridgeTables = normalizeTableNames(tables);
if (!bridgePreview) return;
if (!state.bridgeTables.length) {
bridgePreview.innerHTML = '<span class="text-xs text-slate-500">Keine Einschränkung alle Tabellen erlaubt.</span>';
@@ -366,7 +368,7 @@ async function validateBridgeSettings(ev) {
try {
const res = await apiAction('account.bridge.test', { method: 'POST', data });
if (!res?.ok) throw new Error(res?.error || 'Prüfung fehlgeschlagen');
const tables = Array.isArray(res.tables) ? res.tables : [];
const tables = normalizeTableNames(res.tables);
applyBridgePreview(tables);
if (settingsForm.bridge_tables) {
settingsForm.bridge_tables.value = tables.join(', ');
@@ -377,6 +379,28 @@ async function validateBridgeSettings(ev) {
}
}
function normalizeTableNames(list) {
if (!Array.isArray(list)) return [];
const seen = new Set();
const result = [];
for (const entry of list) {
let name = '';
if (typeof entry === 'string') {
name = entry;
} else if (entry && typeof entry === 'object') {
name = entry.name || entry.table || entry.label || '';
}
if (typeof name === 'string') {
const trimmed = name.trim();
if (trimmed && !seen.has(trimmed)) {
seen.add(trimmed);
result.push(trimmed);
}
}
}
return result;
}
async function loadUsers() {
try {
const res = await apiAction('account.users.list', { method: 'GET' });