Telegram: Webhook-Verwaltung in Einstellungen-Seite

- Backend: DELETE /api/telegram/webhook Endpoint + TelegramService.DeleteWebhook()
- api.js: apiTelegramWebhookInfo(), apiTelegramRegisterWebhook(), apiTelegramDeleteWebhook()
- Settings-Page: Neue 'Telegram Bot' Section (nur für Admins, nur wenn konfiguriert)
  - Status abrufen: Webhook-URL, ausstehende Updates, letzter Fehler, Aktiv-Badge
  - Webhook registrieren: prompt() für Base-URL, POST an Telegram API
  - Webhook entfernen: Bestätigungsdialog + DELETE
- CSS: .telegram-status-box, .tg-status-row, .tg-label, .tg-value, .tg-badge
This commit is contained in:
Meleki committed 2026-03-03 09:06:22 +01:00
1 parent 7d237c866a
commit 4ac042e512
6 files changed
+232 -1

No files matched your search

+59
View File
@@ -375,3 +375,62 @@
justify-content: center;
gap: var(--badge-spacing);
}
/* ── Telegram Settings Status Box ── */
.telegram-status-box {
margin: 0 0 var(--box-spacing) 0;
border: var(--border-width) solid var(--f1-border);
border-radius: var(--border-radius);
overflow: hidden;
}
.tg-status-row {
display: flex;
align-items: baseline;
gap: var(--box-spacing);
padding: calc(var(--box-padding) * 0.6) var(--box-padding);
border-bottom: var(--border-width) solid var(--f1-border);
font-size: var(--font-size);
}
.tg-status-row:last-child {
border-bottom: none;
}
.tg-status-row.tg-error {
background: color-mix(in srgb, var(--danger) 8%, transparent);
}
.tg-label {
flex-shrink: 0;
width: 160px;
color: var(--text-muted, var(--semi-transparent));
opacity: var(--semi-transparent);
font-size: calc(var(--font-size) * 0.9);
}
.tg-value {
flex: 1;
word-break: break-all;
font-family: var(--font-mono, monospace);
font-size: calc(var(--font-size) * 0.9);
}
.tg-badge {
display: inline-block;
padding: 2px 8px;
border-radius: 99px;
font-family: var(--font-sans, sans-serif);
font-size: calc(var(--font-size) * 0.85);
}
.tg-badge-ok {
background: color-mix(in srgb, var(--success, #22c55e) 15%, transparent);
color: var(--success, #22c55e);
}
.tg-badge-off {
background: color-mix(in srgb, var(--warning, #f59e0b) 15%, transparent);
color: var(--warning, #f59e0b);
}