From eabc6f147d833ab3d710a40ae80e11b13f147005 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sun, 18 Oct 2026 22:15:47 +0000 Subject: [PATCH] feat: add role to talks --- app/components/admin/TalkForm.vue | 21 +++++++++++++++++++++ lexicons.ts | 1 + modules/sync/providers/sifa.ts | 11 +++++++++-- shared/cms/talk-mapper.ts | 2 +- shared/cms/talks.ts | 2 +- test/unit/sifa.spec.ts | 5 +++++ 6 files changed, 38 insertions(+), 4 deletions(-) diff --git a/app/components/admin/TalkForm.vue b/app/components/admin/TalkForm.vue index f7c2e9bf..4f8a76ee 100644 --- a/app/components/admin/TalkForm.vue +++ b/app/components/admin/TalkForm.vue @@ -36,6 +36,7 @@ const pdsService = publicConfig.atproto?.service || null const pdsDid = publicConfig.atproto?.did || null const TYPES = ['conference', 'meetup', 'podcast', 'workshop', 'stream', 'talk'] as const +const ROLES = ['speaker', 'keynote', 'panelist', 'host'] as const const form = reactive({ title: props.initial?.title ?? '', @@ -45,6 +46,7 @@ const form = reactive({ source: props.initial?.source ?? '', location: props.initial?.location ?? '', type: (props.initial?.type as typeof TYPES[number]) ?? 'conference', + role: props.initial?.role ?? '', tags: (props.initial?.tags ?? []).join(', '), link: props.initial?.link ?? '', video: props.initial?.video ?? '', @@ -148,6 +150,7 @@ async function onSubmit () { source: form.source, ...(form.location ? { location: form.location } : {}), type: form.type, + ...(form.role ? { role: form.role } : {}), ...(form.tags.trim() ? { tags: form.tags.split(',').map(t => t.trim()).filter(Boolean) } : {}), ...(form.link ? { link: form.link } : {}), ...(form.video ? { video: form.video } : {}), @@ -267,6 +270,24 @@ async function onSubmit () { +