Unterhaltung links auswählen
diff --git a/public/admin.js b/public/admin.js
index b16f4f9..a98c51f 100644
--- a/public/admin.js
+++ b/public/admin.js
@@ -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) => `
`).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