fix: variables als Objekt statt Array crasht Email Templates
Some checks failed
Build + Deploy / build-admin-compliance (push) Successful in 2m9s
Build + Deploy / build-backend-compliance (push) Failing after 3m24s
Build + Deploy / build-ai-sdk (push) Successful in 52s
Build + Deploy / build-developer-portal (push) Successful in 1m15s
Build + Deploy / build-tts (push) Successful in 1m23s
Build + Deploy / build-document-crawler (push) Successful in 38s
Build + Deploy / build-dsms-gateway (push) Successful in 27s
CI / branch-name (push) Has been skipped
Build + Deploy / trigger-orca (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / loc-budget (push) Failing after 18s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 2m42s
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Successful in 41s
CI / test-python-backend (push) Successful in 41s
CI / test-python-document-crawler (push) Successful in 26s
CI / test-python-dsms-gateway (push) Successful in 22s
CI / validate-canonical-controls (push) Successful in 16s

Backend gibt variables manchmal als {} (Objekt) statt [] (Array)
zurueck. (template.variables || []).map() greift nicht weil {}
truthy ist. Fix: Array.isArray() Check in TemplateCard + EditorTab.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-04-28 16:00:07 +02:00
parent 0f1fae61a6
commit 4c43253a53
2 changed files with 3 additions and 3 deletions

View File

@@ -108,7 +108,7 @@ export function EditorTab({
{/* Variables */} {/* Variables */}
<div className="flex flex-wrap gap-1.5"> <div className="flex flex-wrap gap-1.5">
<span className="text-xs text-gray-500 mr-1">Variablen:</span> <span className="text-xs text-gray-500 mr-1">Variablen:</span>
{(template.variables || []).map(v => ( {(Array.isArray(template.variables) ? template.variables : []).map(v => (
<button <button
key={v} key={v}
onClick={() => onHtmlChange(html + `{{${v}}}`)} onClick={() => onHtmlChange(html + `{{${v}}}`)}

View File

@@ -30,12 +30,12 @@ export function TemplateCard({ template, onEdit }: TemplateCardProps) {
<p className="text-xs text-gray-500 mt-2 line-clamp-2">{template.description}</p> <p className="text-xs text-gray-500 mt-2 line-clamp-2">{template.description}</p>
)} )}
<div className="mt-3 flex flex-wrap gap-1"> <div className="mt-3 flex flex-wrap gap-1">
{(template.variables || []).slice(0, 4).map(v => ( {(Array.isArray(template.variables) ? template.variables : []).slice(0, 4).map(v => (
<span key={v} className="px-1.5 py-0.5 bg-gray-50 text-gray-500 rounded text-xs font-mono"> <span key={v} className="px-1.5 py-0.5 bg-gray-50 text-gray-500 rounded text-xs font-mono">
{`{{${v}}}`} {`{{${v}}}`}
</span> </span>
))} ))}
{(template.variables || []).length > 4 && ( {Array.isArray(template.variables) && template.variables.length > 4 && (
<span className="text-xs text-gray-400">+{template.variables.length - 4}</span> <span className="text-xs text-gray-400">+{template.variables.length - 4}</span>
)} )}
</div> </div>