mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-04-10 15:36:53 +02:00
fix: add context menu to all events in BaseEventContainer
Moved EventContextMenu from DefaultKindRenderer to BaseEventContainer so all events (not just generic ones) have context menu support. Now all events in feeds have both interaction methods: - Tap/click the menu button (three dots) for dropdown menu - Right-click or long-press anywhere on the event for context menu This provides a consistent experience across all event types and makes the context menu accessible for all custom renderers, not just the default one.
This commit is contained in:
@@ -520,21 +520,23 @@ export function BaseEventContainer({
|
||||
const displayPubkey = authorOverride?.pubkey || event.pubkey;
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-2 p-3 border-b border-border/50 last:border-0">
|
||||
<div className="flex flex-row justify-between items-center">
|
||||
<div className="flex flex-row gap-2 items-baseline">
|
||||
<EventAuthor pubkey={displayPubkey} />
|
||||
<span
|
||||
className="text-xs text-muted-foreground cursor-help"
|
||||
title={absoluteTime}
|
||||
>
|
||||
{relativeTime}
|
||||
</span>
|
||||
<EventContextMenu event={event}>
|
||||
<div className="flex flex-col gap-2 p-3 border-b border-border/50 last:border-0">
|
||||
<div className="flex flex-row justify-between items-center">
|
||||
<div className="flex flex-row gap-2 items-baseline">
|
||||
<EventAuthor pubkey={displayPubkey} />
|
||||
<span
|
||||
className="text-xs text-muted-foreground cursor-help"
|
||||
title={absoluteTime}
|
||||
>
|
||||
{relativeTime}
|
||||
</span>
|
||||
</div>
|
||||
<EventMenu event={event} />
|
||||
</div>
|
||||
<EventMenu event={event} />
|
||||
{children}
|
||||
<EventFooter event={event} />
|
||||
</div>
|
||||
{children}
|
||||
<EventFooter event={event} />
|
||||
</div>
|
||||
</EventContextMenu>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -139,11 +139,7 @@ import {
|
||||
MediaStarterPackDetailRenderer,
|
||||
} from "./StarterPackRenderer";
|
||||
import { NostrEvent } from "@/types/nostr";
|
||||
import {
|
||||
BaseEventContainer,
|
||||
EventContextMenu,
|
||||
type BaseEventProps,
|
||||
} from "./BaseEventRenderer";
|
||||
import { BaseEventContainer, type BaseEventProps } from "./BaseEventRenderer";
|
||||
import { P2pOrderRenderer } from "./P2pOrderRenderer";
|
||||
import { P2pOrderDetailRenderer } from "./P2pOrderDetailRenderer";
|
||||
import { BadgeDefinitionRenderer } from "./BadgeDefinitionRenderer";
|
||||
@@ -240,19 +236,17 @@ const kindRenderers: Record<number, React.ComponentType<BaseEventProps>> = {
|
||||
/**
|
||||
* Default renderer for kinds without custom implementations
|
||||
* Shows basic event info with raw content
|
||||
* Right-click to access event menu
|
||||
* Right-click or tap menu button to access event menu
|
||||
*/
|
||||
function DefaultKindRenderer({ event }: BaseEventProps) {
|
||||
return (
|
||||
<EventContextMenu event={event}>
|
||||
<BaseEventContainer event={event}>
|
||||
<div className="text-sm text-muted-foreground">
|
||||
<pre className="text-xs overflow-x-auto whitespace-pre-wrap break-words">
|
||||
{event.content || "(empty content)"}
|
||||
</pre>
|
||||
</div>
|
||||
</BaseEventContainer>
|
||||
</EventContextMenu>
|
||||
<BaseEventContainer event={event}>
|
||||
<div className="text-sm text-muted-foreground">
|
||||
<pre className="text-xs overflow-x-auto whitespace-pre-wrap break-words">
|
||||
{event.content || "(empty content)"}
|
||||
</pre>
|
||||
</div>
|
||||
</BaseEventContainer>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user