diff --git a/src/modules/events/components/OrganizerCard.vue b/src/modules/events/components/OrganizerCard.vue
index 66030ea..dea6c4f 100644
--- a/src/modules/events/components/OrganizerCard.vue
+++ b/src/modules/events/components/OrganizerCard.vue
@@ -3,15 +3,37 @@ import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar'
import { User } from 'lucide-vue-next'
import { useOrganizerProfile } from '../composables/useOrganizerProfile'
-const props = defineProps<{
- pubkey: string
-}>()
+const props = withDefaults(
+ defineProps<{
+ pubkey: string
+ /** Compact row variant — small avatar, single-line "By
".
+ * Used on the events feed card where the organizer is a hint, not
+ * the focus. Default (full) is used on the detail page. */
+ compact?: boolean
+ }>(),
+ { compact: false },
+)
const { profile, displayName, isLoading } = useOrganizerProfile(props.pubkey)
-
+
+
+
+
+
+
+
+
+
+ Loading…
+ {{ displayName }}
+
+
+
+
+
@@ -20,14 +42,14 @@ const { profile, displayName, isLoading } = useOrganizerProfile(props.pubkey)
- Loading...
+ Loading…
{{ displayName }}
{{ profile.nip05 }}
- {{ pubkey.slice(0, 16) }}...
+ {{ pubkey.slice(0, 16) }}…
diff --git a/src/modules/events/composables/useOrganizerProfile.ts b/src/modules/events/composables/useOrganizerProfile.ts
index 8d6455b..0f13f19 100644
--- a/src/modules/events/composables/useOrganizerProfile.ts
+++ b/src/modules/events/composables/useOrganizerProfile.ts
@@ -1,6 +1,6 @@
-import { ref, onMounted, onUnmounted } from 'vue'
+import { computed, onMounted, ref } from 'vue'
import { tryInjectService, SERVICE_TOKENS } from '@/core/di-container'
-import type { Event as NostrEvent } from 'nostr-tools'
+import type { ProfileService, UserProfile } from '@/modules/base/nostr/ProfileService'
export interface OrganizerProfile {
pubkey: string
@@ -14,134 +14,92 @@ export interface OrganizerProfile {
website?: string
}
-// Global cache of fetched profiles
-const profileCache = ref