(['event-stats', event.id], prevStats);
+ }
+ queryClient.setQueryData(['user-repost', event.id], prevRepostStatus);
},
}
);
@@ -80,16 +129,29 @@ export function RepostMenu({ event, children }: RepostMenuProps) {
const menuContent = (
-
+ {isReposted ? (
+
+ ) : (
+
+ )}
);
+ const trigger = typeof children === 'function' ? children(isReposted) : children;
+
return (
<>
e.stopPropagation()}>
- {children}
+ {trigger}
=> {
+ if (!eventId || !user) return null;
+
+ const events = await nostr.query(
+ [{
+ kinds: [6],
+ authors: [user.pubkey],
+ '#e': [eventId],
+ limit: 1,
+ }],
+ { signal },
+ );
+
+ if (events.length === 0) return null;
+ return events[0].id;
+ },
+ enabled: !!eventId && !!user,
+ staleTime: 5 * 60 * 1000,
+ gcTime: 10 * 60 * 1000,
+ });
+}
diff --git a/src/pages/PostDetailPage.tsx b/src/pages/PostDetailPage.tsx
index a45cb4c9..eb0b99b9 100644
--- a/src/pages/PostDetailPage.tsx
+++ b/src/pages/PostDetailPage.tsx
@@ -924,13 +924,15 @@ function PostDetailContent({ event }: { event: NostrEvent }) {
{/* Repost */}
-
+ {(isReposted: boolean) => (
+
+ )}
{/* React */}