diff --git a/src/activities-app/App.vue b/src/activities-app/App.vue
index dc3ada6..640608b 100644
--- a/src/activities-app/App.vue
+++ b/src/activities-app/App.vue
@@ -7,6 +7,7 @@ import AppShell from '@/components/layout/AppShell.vue'
import type { BottomTab } from '@/components/layout/BottomNav.vue'
import { useAuth } from '@/composables/useAuthService'
import { useActivitiesStore } from '@/modules/activities/stores/activities'
+import { useActivities } from '@/modules/activities/composables/useActivities'
import { useApprovalState } from '@/modules/activities/composables/useApprovalState'
import { injectService, SERVICE_TOKENS } from '@/core/di-container'
import type { TicketApiService } from '@/modules/activities/services/TicketApiService'
@@ -18,6 +19,10 @@ const { t } = useI18n()
const { isAuthenticated, currentUser } = useAuth()
const activitiesStore = useActivitiesStore()
const { isAdmin, autoApprove } = useApprovalState()
+// Used to merge own LNbits drafts into the activities feed right after
+// the user creates or edits an event — otherwise the new draft only
+// surfaces on the next ActivitiesPage subscribe cycle.
+const { loadOwnEvents } = useActivities()
// Settings dropped — theme/lang/currency now live in the shared profile sheet.
// Create lives in the bottom nav (auth-gated): activity creation is a deliberate
@@ -96,6 +101,8 @@ function handleDialogOpenChange(open: boolean) {
:on-create-event="handleCreateEvent"
:on-update-event="handleUpdateEvent"
@update:open="handleDialogOpenChange"
+ @event-created="loadOwnEvents"
+ @event-updated="loadOwnEvents"
/>
diff --git a/src/modules/activities/components/ActivityCard.vue b/src/modules/activities/components/ActivityCard.vue
index 71054fb..d021b10 100644
--- a/src/modules/activities/components/ActivityCard.vue
+++ b/src/modules/activities/components/ActivityCard.vue
@@ -4,7 +4,7 @@ import { useI18n } from 'vue-i18n'
import { format } from 'date-fns'
import { Card, CardContent } from '@/components/ui/card'
import { Badge } from '@/components/ui/badge'
-import { MapPin, Calendar, Ticket } from 'lucide-vue-next'
+import { MapPin, Calendar, Ticket, User } from 'lucide-vue-next'
import BookmarkButton from './BookmarkButton.vue'
import { useDateLocale } from '../composables/useDateLocale'
import type { Activity } from '../types/activity'
@@ -87,6 +87,17 @@ const placeholderBg = computed(() => {
{{ categoryLabel }}
+
+
+
+ Yours
+
+
{
{{ priceDisplay }}
+
+
+ {{ activity.lnbitsStatus === 'rejected' ? 'Rejected' : 'Pending review' }}
+
diff --git a/src/modules/activities/components/CreateEventDialog.vue b/src/modules/activities/components/CreateEventDialog.vue
index a32846a..180184b 100644
--- a/src/modules/activities/components/CreateEventDialog.vue
+++ b/src/modules/activities/components/CreateEventDialog.vue
@@ -67,8 +67,12 @@ const emit = defineEmits<{
}>()
const isEditMode = computed(() => Boolean(props.event?.id))
-const willGoToPending = computed(
- () => isEditMode.value && !props.isAdmin && !props.autoApprove
+// True when the submission will land in `proposed` status: a non-admin
+// owner with the extension's auto_approve toggle off. Same gate for
+// create and edit; the edit path also keys the in-form warning banner
+// on this so the user sees the consequence before submitting.
+const willLandInPending = computed(
+ () => !props.isAdmin && !props.autoApprove
)
const { t } = useI18n()
@@ -302,8 +306,8 @@ const onSubmit = form.handleSubmit(async (formValues) => {
}
await props.onUpdateEvent(props.event.id, eventData)
toastService.success(
- willGoToPending.value
- ? 'Event updated — pending re-approval'
+ willLandInPending.value
+ ? 'Updated — awaiting re-approval. Hidden from the public feed until reviewed.'
: 'Event updated!'
)
emit('event-updated')
@@ -313,7 +317,11 @@ const onSubmit = form.handleSubmit(async (formValues) => {
return
}
await props.onCreateEvent(eventData)
- toastService.success('Event submitted!')
+ toastService.success(
+ willLandInPending.value
+ ? 'Submitted! Awaiting admin approval — your draft is visible on your feed with a Pending badge.'
+ : 'Event submitted!'
+ )
emit('event-created')
}
@@ -363,7 +371,7 @@ const handleOpenChange = (open: boolean) => {