diff --git a/src/components/AdvancedEventLab/AdvancedEventLabTagsEditor.tsx b/src/components/AdvancedEventLab/AdvancedEventLabTagsEditor.tsx
index 05d9471a..f896b41f 100644
--- a/src/components/AdvancedEventLab/AdvancedEventLabTagsEditor.tsx
+++ b/src/components/AdvancedEventLab/AdvancedEventLabTagsEditor.tsx
@@ -8,20 +8,20 @@ import {
CollapsibleTrigger
} from '@/components/ui/collapsible'
import {
- formatComposerTagValuesInput,
+ composerTagRowFromNostrTag,
newComposerTagRow,
normalizeComposerExtraTags,
- parseComposerTagValuesInput,
type ComposerExtraTagRow
} from '@/lib/composer-extra-tags'
import { cn } from '@/lib/utils'
import { ChevronDown, Plus, Trash2 } from 'lucide-react'
+import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
export function labTagsToEditableRows(tags: string[][]): ComposerExtraTagRow[] {
const normalized = tags.filter((t) => Array.isArray(t) && String(t[0] ?? '').trim())
if (!normalized.length) return [newComposerTagRow()]
- return normalized.map((tag) => newComposerTagRow([...tag]))
+ return normalized.map((tag) => composerTagRowFromNostrTag([...tag]))
}
export function editableRowsToLabTags(rows: ComposerExtraTagRow[]): string[][] {
@@ -38,21 +38,15 @@ export default function AdvancedEventLabTagsEditor({
className?: string
}) {
const { t } = useTranslation()
+ const filledCount = rows.filter((r) => r.name.trim()).length
+ const [open, setOpen] = useState(filledCount > 0)
- const updateRow = (id: string, patch: Partial<{ name: string; valuesRaw: string }>) => {
- onChange(
- rows.map((row) => {
- if (row.id !== id) return row
- const name = patch.name !== undefined ? patch.name : (row.tag[0] ?? '')
- const valuesRaw =
- patch.valuesRaw !== undefined ? patch.valuesRaw : formatComposerTagValuesInput(row.tag)
- const vals = parseComposerTagValuesInput(valuesRaw)
- return {
- ...row,
- tag: name.trim() ? [name.trim(), ...vals] : vals.length ? ['', ...vals] : ['', '']
- }
- })
- )
+ useEffect(() => {
+ if (filledCount > 0) setOpen(true)
+ }, [filledCount])
+
+ const updateRow = (id: string, patch: Partial>) => {
+ onChange(rows.map((row) => (row.id === id ? { ...row, ...patch } : row)))
}
const removeRow = (id: string) => {
@@ -62,15 +56,11 @@ export default function AdvancedEventLabTagsEditor({
const addRow = () => {
onChange([...rows, newComposerTagRow()])
+ setOpen(true)
}
- const filledCount = rows.filter((r) => (r.tag[0] ?? '').trim()).length
-
return (
- 0}
- className={cn('rounded-lg border bg-muted/30', className)}
- >
+
{t('advancedLabTagsTitle', { defaultValue: 'Event tags' })}
@@ -89,49 +79,45 @@ export default function AdvancedEventLabTagsEditor({
})}
- {rows.map((row) => {
- const name = row.tag[0] ?? ''
- const valuesRaw = formatComposerTagValuesInput(row.tag)
- return (
-
-
-
- updateRow(row.id, { name: e.target.value })}
- />
-
-
-
-
-
+ {rows.map((row) => (
+
+
+
+ updateRow(row.id, { name: e.target.value })}
+ />
- )
- })}
+
+
+
+
+
+ ))}
@@ -491,19 +503,7 @@ function ZapDialogContent({
className="space-y-3 border-t border-border bg-background px-4 pt-3"
style={{ paddingBottom: 'max(0.75rem, env(safe-area-inset-bottom))' }}
>
-
-
-
-
+ {t('Zap superchat flow hint')}