diff --git a/src/modules/activities/components/CreateEventDialog.vue b/src/modules/activities/components/CreateEventDialog.vue
index 3eb5b2a..5f3a605 100644
--- a/src/modules/activities/components/CreateEventDialog.vue
+++ b/src/modules/activities/components/CreateEventDialog.vue
@@ -62,7 +62,9 @@ const formSchema = toTypedSchema(z.object({
name: z.string().min(1, "Title is required").max(200, "Title too long"),
info: z.string().max(2000, "Description too long").optional().default(''),
event_start_date: z.string().min(1, "Start date is required"),
+ event_start_time: z.string().optional().default(''),
event_end_date: z.string().optional().default(''),
+ event_end_time: z.string().optional().default(''),
location: z.string().max(500).optional().default(''),
banner: z.string().optional().default(''),
currency: z.string().default("sat"),
@@ -76,7 +78,9 @@ const form = useForm({
name: '',
info: '',
event_start_date: '',
+ event_start_time: '',
event_end_date: '',
+ event_end_time: '',
location: '',
banner: '',
currency: 'sat',
@@ -85,6 +89,15 @@ const form = useForm({
}
})
+// Fold a date input ("YYYY-MM-DD") and an optional time input ("HH:MM")
+// into the events-extension wire format: date-only when no time given,
+// ISO 8601 datetime otherwise. The publisher switches NIP-52 kinds on
+// the "T" delimiter.
+function foldDateTime(date: string, time: string): string {
+ if (!date) return ''
+ return time ? `${date}T${time}` : date
+}
+
const paymentService = injectService(SERVICE_TOKENS.PAYMENT_SERVICE)
const ticketApi = injectService(SERVICE_TOKENS.TICKET_API) as TicketApiService | null
@@ -144,13 +157,21 @@ const onSubmit = form.handleSubmit(async (formValues) => {
try {
const eventData: CreateEventRequest = {
name: formValues.name,
- event_start_date: formValues.event_start_date,
+ event_start_date: foldDateTime(
+ formValues.event_start_date,
+ formValues.event_start_time
+ ),
wallet: preferredWallet.id,
}
// Optional fields — only include if provided
if (formValues.info) eventData.info = formValues.info
- if (formValues.event_end_date) eventData.event_end_date = formValues.event_end_date
+ if (formValues.event_end_date) {
+ eventData.event_end_date = foldDateTime(
+ formValues.event_end_date,
+ formValues.event_end_time
+ )
+ }
if (formValues.location) eventData.location = formValues.location
if (formValues.banner) eventData.banner = formValues.banner
if (formValues.currency) eventData.currency = formValues.currency
@@ -207,16 +228,28 @@ const handleOpenChange = (open: boolean) => {
-
-