From 01f774ef7ea005b50978b0abb2db5799e0178124 Mon Sep 17 00:00:00 2001
From: MartinBraquet
Date: Wed, 18 Feb 2026 20:01:20 +0100
Subject: [PATCH] Add UserLinkFromId component for improved user linking
---
web/components/events/event-card.tsx | 14 ++++----------
web/components/events/user-link.tsx | 10 ++++++++++
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/web/components/events/event-card.tsx b/web/components/events/event-card.tsx
index 5bb14346..ac7879fe 100644
--- a/web/components/events/event-card.tsx
+++ b/web/components/events/event-card.tsx
@@ -4,8 +4,7 @@ import {useUser} from 'web/hooks/use-user'
import {useLocale, useT} from 'web/lib/locale'
import Link from 'next/link'
import dayjs from 'dayjs'
-import {UserLink} from './user-link'
-import {useUsersInStore} from "web/hooks/use-user-supabase";
+import {UserLink, UserLinkFromId} from './user-link'
import {formatTimeShort, fromNow} from "web/lib/util/time";
import {capitalize} from "lodash";
import {HOUR_MS} from "common/util/time";
@@ -22,12 +21,7 @@ export function EventCard(props: {
const user = useUser()
const t = useT()
const {locale} = useLocale()
- const users = useUsersInStore([
- ...(event.participants ?? []),
- ...(event.maybe ?? []),
- ],
- `event-card-${event.id}`
- )
+
const isRsvped = user && event.participants.includes(user.id)
const isMaybe = user && event.maybe.includes(user.id)
@@ -111,11 +105,11 @@ export function EventCard(props: {
{event.max_participants && t('events.participants_max', ' / {max} max', {max: event.max_participants})}
{event.maybe.length > 0 && t('events.maybe_count', ' ({count} maybe)', {count: event.maybe.length})}
- {users && event.participants.length > 0 && (
+ {event.participants.length > 0 && (
{event.participants.map((participantId: any) => (
-
+
))}
diff --git a/web/components/events/user-link.tsx b/web/components/events/user-link.tsx
index e7938705..9da8ad2d 100644
--- a/web/components/events/user-link.tsx
+++ b/web/components/events/user-link.tsx
@@ -1,4 +1,5 @@
import Link from 'next/link'
+import {useUserInStore} from "web/hooks/use-user-supabase";
type User = {
id: string
@@ -29,3 +30,12 @@ export function UserLink({user, className = ""}: {
)
}
+
+export function UserLinkFromId({userId, className = ""}: {
+ userId: string | null | undefined
+ className?: string
+}) {
+ if (!userId) return null
+ const user = useUserInStore(userId)
+ return
+}