Admin-Chat: neue Unterhaltung mit jedem Kunden starten

Ueber der Chat-Liste sucht ein Feld alle Kunden (Name, E-Mail,
Kd.-Nr.) und oeffnet einen leeren Chat, auch wenn der Kunde noch
nie geschrieben hat. Der Server konnte das schon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-09-30 18:51:57 +00:00
1 parent 4e8b8f1698
commit 37489aa866
2 files changed
+36 -2

No files matched your search

+28
View File
@@ -382,6 +382,33 @@ async function pollAdminChatBadge() {
}
}
// Neue Unterhaltung: jeden Kunden anschreiben, auch wenn er noch nie geschrieben hat
const chatCustomerLabel = (c) =>
[c.name || '(ohne Name)', c.email, c.code ? `Kd.-Nr. ${c.code}` : ''].filter(Boolean).join(' · ')
async function setupNewChatPicker() {
const input = document.getElementById('admin-chat-new')
if (!input) return
let byLabel = new Map()
try {
const { customers } = await api('/api/portal-admin/customers')
byLabel = new Map(customers.map((c) => [chatCustomerLabel(c), c]))
document.getElementById('admin-chat-new-list').innerHTML = customers
.map((c) => `<option value="${escapeHtml(chatCustomerLabel(c))}"></option>`).join('')
} catch (err) {
input.placeholder = `Kunden konnten nicht geladen werden: ${err.message}`
return
}
const pick = () => {
const customer = byLabel.get(input.value.trim())
if (!customer) return
input.value = ''
openChatThread(customer.id, customer.name || customer.email || 'Kunde')
}
input.addEventListener('change', pick)
input.addEventListener('input', pick)
}
async function loadChatList() {
const list = document.getElementById('admin-chat-list')
try {
@@ -1313,6 +1340,7 @@ async function initAdminPage() {
if (tab.dataset.tab === 'chat' && !chatListLoaded) {
chatListLoaded = true
loadChatList()
setupNewChatPicker()
}
if (tab.dataset.tab === 'credits' && !creditsLoaded) {
creditsLoaded = true