Files
Papo/public/ts-build/components/modules/index.js
Pascal Prießnitz 22caa79b54
All checks were successful
Deploy Discord Bot / deploy (push) Successful in 37s
[deploy]
2025-12-04 16:43:38 +01:00

105 lines
4.5 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.initModulesSection = initModulesSection;
const api_js_1 = require("../../services/api.js");
const toast_js_1 = require("../../ui/toast.js");
const switch_js_1 = require("../../ui/switch.js");
const welcome_js_1 = require("./welcome.js");
const logging_js_1 = require("./logging.js");
const reactionRoles_js_1 = require("./reactionRoles.js");
const dynamicVoice_js_1 = require("./dynamicVoice.js");
const statuspage_js_1 = require("./statuspage.js");
const serverstats_js_1 = require("./serverstats.js");
async function initModulesSection(guildId) {
const section = document.getElementById('section-modules');
if (!section)
return;
section.innerHTML = `
<h2 class="section-title">Module</h2>
<div class="card">
<div class="module-list" id="module-toggles"></div>
</div>
<div class="grid" style="margin-top:16px;">
<div class="card" id="module-welcome"></div>
<div class="card" id="module-logging"></div>
<div class="card" id="module-reactionroles"></div>
<div class="card" id="module-dynamicvoice"></div>
<div class="card" id="module-statuspage"></div>
<div class="card" id="module-serverstats"></div>
</div>
`;
await Promise.all([
renderModuleToggles(guildId),
(0, welcome_js_1.renderWelcomeModule)(guildId),
(0, logging_js_1.renderLoggingModule)(guildId),
(0, reactionRoles_js_1.renderReactionRolesModule)(guildId),
(0, dynamicVoice_js_1.renderDynamicVoiceModule)(guildId),
(0, statuspage_js_1.renderStatuspageModule)(guildId),
(0, serverstats_js_1.renderServerStatsModule)(guildId)
]);
}
async function renderModuleToggles(guildId) {
const container = document.getElementById('module-toggles');
if (!container)
return;
container.innerHTML = '<p class="muted">Lade Module...</p>';
try {
const data = await api_js_1.api.modules(guildId);
const modules = data?.modules || data || {};
container.innerHTML = '';
const entries = [
{ key: 'ticketsEnabled', label: 'Tickets', desc: 'Ticket-System aktivieren' },
{ key: 'automodEnabled', label: 'Automod', desc: 'Moderations-Filter' },
{ key: 'welcomeEnabled', label: 'Welcome', desc: 'Begrueßungsnachrichten' },
{ key: 'musicEnabled', label: 'Musik', desc: 'Musiksteuerung' },
{ key: 'levelingEnabled', label: 'Leveling', desc: 'XP/Level System' },
{ key: 'statuspageEnabled', label: 'Statuspage', desc: 'Statusberichte' },
{ key: 'serverStatsEnabled', label: 'Server Stats', desc: 'Stat-Channel' },
{ key: 'birthdayEnabled', label: 'Birthday', desc: 'Geburtstagsmodul' },
{ key: 'reactionRolesEnabled', label: 'Reaction Roles', desc: 'Selbstzuweisbare Rollen' },
{ key: 'eventsEnabled', label: 'Events', desc: 'Event-Planung' },
{ key: 'dynamicVoiceEnabled', label: 'Dynamic Voice', desc: 'Dynamische Voice Channels' }
];
entries.forEach((entry) => {
const row = document.createElement('div');
row.className = 'module-item';
row.innerHTML = `
<div class="module-meta">
<div class="module-title">${entry.label}</div>
<div class="module-desc">${entry.desc}</div>
</div>
<div class="switch ${modules[entry.key] ? 'on' : ''}" data-key="${entry.key}"></div>
`;
const toggle = row.querySelector('.switch');
toggle.addEventListener('click', async () => {
(0, switch_js_1.setSwitch)(toggle, !(0, switch_js_1.getSwitch)(toggle));
await saveModules(guildId);
});
container.appendChild(row);
});
}
catch (err) {
console.error(err);
container.innerHTML = '<div class="empty-state">Module konnten nicht geladen werden.</div>';
(0, toast_js_1.showToast)('Fehler beim Laden der Module', true);
}
}
async function saveModules(guildId) {
const toggles = Array.from(document.querySelectorAll('#module-toggles .switch'));
const payload = { guildId };
toggles.forEach((t) => {
const key = t.dataset.key;
if (!key)
return;
payload[key] = t.classList.contains('on');
});
try {
await api_js_1.api.saveSettings(payload);
(0, toast_js_1.showToast)('Module gespeichert');
}
catch (err) {
console.error(err);
(0, toast_js_1.showToast)('Module speichern fehlgeschlagen', true);
}
}