up
This commit is contained in:
@@ -7,7 +7,6 @@ const state = {
|
||||
userMap: new Map(),
|
||||
senders: [],
|
||||
senderMap: new Map(),
|
||||
bridgeTables: [],
|
||||
currentTab: 'profile',
|
||||
loading: false,
|
||||
};
|
||||
@@ -25,8 +24,6 @@ let teamTable;
|
||||
let userForm;
|
||||
let senderTable;
|
||||
let senderForm;
|
||||
let bridgePreview;
|
||||
let validateBridgeBtn;
|
||||
let menuInitialized = false;
|
||||
let menuOpen = false;
|
||||
let debugButton;
|
||||
@@ -64,8 +61,6 @@ export function initAccountPage() {
|
||||
userForm = document.getElementById('userForm');
|
||||
senderTable = document.getElementById('senderTable');
|
||||
senderForm = document.getElementById('senderForm');
|
||||
bridgePreview = document.getElementById('bridgeTablesPreview');
|
||||
validateBridgeBtn = document.getElementById('btn-validate-bridge');
|
||||
|
||||
document.getElementById('btn-user-add')?.addEventListener('click', () => openUserForm());
|
||||
document.getElementById('userFormCancel')?.addEventListener('click', () => closeUserForm());
|
||||
@@ -80,8 +75,6 @@ export function initAccountPage() {
|
||||
settingsForm?.addEventListener('submit', submitSettingsForm);
|
||||
teamTable?.addEventListener('click', handleTeamTableClick);
|
||||
senderTable?.addEventListener('click', handleSenderTableClick);
|
||||
validateBridgeBtn?.addEventListener('click', validateBridgeSettings);
|
||||
|
||||
document.querySelectorAll('[data-user-tab]').forEach(btn => {
|
||||
btn.addEventListener('click', () => switchTab(btn.getAttribute('data-user-tab')));
|
||||
});
|
||||
@@ -250,11 +243,6 @@ 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 = normalizeTableNames(settings.bridge_tables);
|
||||
if (settingsForm.bridge_tables) {
|
||||
settingsForm.bridge_tables.value = tables.join(', ');
|
||||
}
|
||||
applyBridgePreview(tables);
|
||||
state.rotate = { bridge: false, sender: false, external: false };
|
||||
}
|
||||
|
||||
@@ -301,7 +289,6 @@ async function submitSettingsForm(ev) {
|
||||
rotate_bridge_token: state.rotate.bridge ? 1 : 0,
|
||||
rotate_sender_token: state.rotate.sender ? 1 : 0,
|
||||
rotate_external_token: state.rotate.external ? 1 : 0,
|
||||
bridge_tables: parseBridgeTablesInput(),
|
||||
};
|
||||
try {
|
||||
const res = await apiAction('account.settings.update', { method: 'POST', data });
|
||||
@@ -335,72 +322,6 @@ async function downloadFile(type) {
|
||||
}
|
||||
}
|
||||
|
||||
function parseBridgeTablesInput() {
|
||||
if (!settingsForm) return [];
|
||||
const raw = settingsForm.bridge_tables?.value || '';
|
||||
return raw
|
||||
.split(/[\s,]+/)
|
||||
.map(part => part.trim())
|
||||
.filter(Boolean);
|
||||
}
|
||||
|
||||
function applyBridgePreview(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>';
|
||||
return;
|
||||
}
|
||||
bridgePreview.innerHTML = state.bridgeTables.map(name => `<span class="chip">${escapeHtml(name)}</span>`).join('');
|
||||
}
|
||||
|
||||
async function validateBridgeSettings(ev) {
|
||||
ev?.preventDefault();
|
||||
if (!settingsForm) return;
|
||||
const data = {
|
||||
bridge_url: settingsForm.bridge_url.value.trim(),
|
||||
bridge_token: settingsForm.bridge_token.value.trim(),
|
||||
};
|
||||
if (!data.bridge_url || !data.bridge_token) {
|
||||
toast('Bitte Bridge-URL und Token angeben', false);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const res = await apiAction('account.bridge.test', { method: 'POST', data });
|
||||
if (!res?.ok) throw new Error(res?.error || 'Prüfung fehlgeschlagen');
|
||||
const tables = normalizeTableNames(res.tables);
|
||||
applyBridgePreview(tables);
|
||||
if (settingsForm.bridge_tables) {
|
||||
settingsForm.bridge_tables.value = tables.join(', ');
|
||||
}
|
||||
toast('Bridge erfolgreich geprüft', true);
|
||||
} catch (err) {
|
||||
toast(err.message || 'Prüfung fehlgeschlagen', false);
|
||||
}
|
||||
}
|
||||
|
||||
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' });
|
||||
|
||||
Reference in New Issue
Block a user