mirror of
https://github.com/hzrd149/nostrudel.git
synced 2025-03-17 21:31:43 +01:00
show embedded dvm link
This commit is contained in:
parent
0b0aa6fc23
commit
171ddba027
@ -1,6 +1,5 @@
|
||||
import { useContext, useMemo } from "react";
|
||||
import { Box, Button, ButtonGroup, Card, CardBody, CardHeader, CardProps, Text } from "@chakra-ui/react";
|
||||
import { useRenderedContent } from "applesauce-react/hooks";
|
||||
|
||||
import { NostrEvent } from "../../../types/nostr-event";
|
||||
import UserAvatarLink from "../../user/user-avatar-link";
|
||||
@ -14,17 +13,12 @@ import DebugEventButton from "../../debug-modal/debug-event-button";
|
||||
import DebugEventTags from "../../debug-modal/event-tags";
|
||||
import { AppHandlerContext } from "../../../providers/route/app-handler-provider";
|
||||
import { getSharableEventAddress } from "../../../services/event-relay-hint";
|
||||
import { components } from "../../content";
|
||||
|
||||
const UnknownEventContentSymbol = Symbol.for("unknown-event-content");
|
||||
const linkRenderers = [renderImageUrl, renderVideoUrl, renderAudioUrl, renderGenericUrl];
|
||||
|
||||
export default function EmbeddedUnknown({ event, ...props }: Omit<CardProps, "children"> & { event: NostrEvent }) {
|
||||
const address = useMemo(() => getSharableEventAddress(event), [event]);
|
||||
const { openAddress } = useContext(AppHandlerContext);
|
||||
|
||||
const alt = event.tags.find((t) => t[0] === "alt")?.[1];
|
||||
const content = useRenderedContent(event, components, { linkRenderers, cacheKey: UnknownEventContentSymbol });
|
||||
|
||||
return (
|
||||
<>
|
||||
@ -51,7 +45,7 @@ export default function EmbeddedUnknown({ event, ...props }: Omit<CardProps, "ch
|
||||
</Text>
|
||||
)}
|
||||
<Box whiteSpace="pre-wrap" noOfLines={3}>
|
||||
{content}
|
||||
{event.content}
|
||||
</Box>
|
||||
{event.tags.length > 0 && <DebugEventTags event={event} />}
|
||||
</CardBody>
|
||||
|
@ -21,6 +21,8 @@ import EmbeddedSetOrList from "./event-types/embedded-list";
|
||||
import EmbeddedReaction from "./event-types/embedded-reaction";
|
||||
import EmbeddedDM from "./event-types/embedded-dm";
|
||||
import EmbeddedUnknown from "./event-types/embedded-unknown";
|
||||
import { DVM_CONTENT_DISCOVERY_JOB_KIND } from "../../helpers/nostr/dvm";
|
||||
import DVMCard from "../../views/discovery/dvm-feed/components/dvm-card";
|
||||
|
||||
const EmbeddedGoal = lazy(() => import("./event-types/embedded-goal"));
|
||||
const EmbeddedArticle = lazy(() => import("./event-types/embedded-article"));
|
||||
@ -85,6 +87,10 @@ export function EmbedEvent({
|
||||
return <EmbeddedWikiPage page={event} {...cardProps} />;
|
||||
case kinds.Zap:
|
||||
return <EmbeddedZapRecept zap={event} {...cardProps} />;
|
||||
case kinds.Handlerinformation:
|
||||
// if its a content DVM
|
||||
if (event.tags.some((t) => t[0] === "k" && t[1] === String(DVM_CONTENT_DISCOVERY_JOB_KIND)))
|
||||
return <DVMCard dvm={event} />;
|
||||
}
|
||||
|
||||
if (SET_KINDS.includes(event.kind) || LIST_KINDS.includes(event.kind))
|
||||
|
@ -6,33 +6,33 @@ import { AddressPointer } from "nostr-tools/nip19";
|
||||
import { NostrEvent } from "../../../../types/nostr-event";
|
||||
import HoverLinkOverlay from "../../../../components/hover-link-overlay";
|
||||
import { DVMAvatar } from "./dvm-avatar";
|
||||
import { getEventAddressPointer } from "../../../../helpers/nostr/event";
|
||||
import { getEventAddressPointer, getEventCoordinate } from "../../../../helpers/nostr/event";
|
||||
import { DVMName } from "./dvm-name";
|
||||
import DebugEventButton from "../../../../components/debug-modal/debug-event-button";
|
||||
import useEventIntersectionRef from "../../../../hooks/use-event-intersection-ref";
|
||||
import DVMFeedFavoriteButton from "../../../../components/dvm/dvm-feed-favorite-button";
|
||||
|
||||
export default function DVMCard({
|
||||
appData,
|
||||
dvm,
|
||||
to,
|
||||
onClick,
|
||||
...props
|
||||
}: Omit<CardProps, "children"> & { appData: NostrEvent; to: To; onClick?: LinkOverlayProps["onClick"] }) {
|
||||
const metadata = JSON.parse(appData.content);
|
||||
const pointer: AddressPointer = useMemo(() => getEventAddressPointer(appData), [appData]);
|
||||
}: Omit<CardProps, "children"> & { dvm: NostrEvent; to?: To; onClick?: LinkOverlayProps["onClick"] }) {
|
||||
const metadata = JSON.parse(dvm.content);
|
||||
const pointer: AddressPointer = useMemo(() => getEventAddressPointer(dvm), [dvm]);
|
||||
|
||||
const ref = useEventIntersectionRef(appData);
|
||||
const ref = useEventIntersectionRef(dvm);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Card as={LinkBox} display="block" p="4" ref={ref} {...props}>
|
||||
<Card as={LinkBox} display="block" p="4" minH="32" ref={ref} {...props}>
|
||||
<Flex gap="2" float="right" zIndex={1}>
|
||||
<DVMFeedFavoriteButton zIndex={1} size="sm" pointer={pointer} />
|
||||
<DebugEventButton zIndex={1} size="sm" event={appData} />
|
||||
<DebugEventButton zIndex={1} size="sm" event={dvm} />
|
||||
</Flex>
|
||||
<DVMAvatar pointer={pointer} w="24" float="left" mr="4" mb="2" />
|
||||
<Heading size="md">
|
||||
<HoverLinkOverlay as={RouterLink} to={to} onClick={onClick}>
|
||||
<HoverLinkOverlay as={RouterLink} to={to || `/discovery/dvm/${getEventCoordinate(dvm)}`} onClick={onClick}>
|
||||
<DVMName pointer={pointer} />
|
||||
</HoverLinkOverlay>
|
||||
</Heading>
|
||||
|
@ -10,7 +10,6 @@ import { DVM_CONTENT_DISCOVERY_JOB_KIND } from "../../helpers/nostr/dvm";
|
||||
import useTimelineLoader from "../../hooks/use-timeline-loader";
|
||||
import { useReadRelays } from "../../hooks/use-client-relays";
|
||||
import RequireCurrentAccount from "../../providers/route/require-current-account";
|
||||
import { getEventCoordinate } from "../../helpers/nostr/event";
|
||||
import { useTimelineCurserIntersectionCallback } from "../../hooks/use-timeline-cursor-intersection-callback";
|
||||
import IntersectionObserverProvider from "../../providers/local/intersection-observer";
|
||||
import Telescope from "../../components/icons/telescope";
|
||||
@ -46,7 +45,7 @@ function DVMFeeds() {
|
||||
</Heading>
|
||||
<SimpleGrid columns={{ base: 1, md: 1, lg: 2, xl: 3 }} spacing="2">
|
||||
{favoriteFeeds.map((feed) => (
|
||||
<DVMCard key={getEventUID(feed)} appData={feed} to={`/discovery/dvm/${getEventCoordinate(feed)}`} />
|
||||
<DVMCard key={getEventUID(feed)} dvm={feed} />
|
||||
))}
|
||||
</SimpleGrid>
|
||||
</>
|
||||
@ -64,7 +63,7 @@ function DVMFeeds() {
|
||||
<IntersectionObserverProvider callback={callback}>
|
||||
<SimpleGrid columns={{ base: 1, md: 1, lg: 2, xl: 3 }} spacing="2">
|
||||
{DVMs.filter((feed) => !isEventInList(favorites, feed)).map((feed) => (
|
||||
<DVMCard key={getEventUID(feed)} appData={feed} to={`/discovery/dvm/${getEventCoordinate(feed)}`} />
|
||||
<DVMCard key={getEventUID(feed)} dvm={feed} />
|
||||
))}
|
||||
</SimpleGrid>
|
||||
</IntersectionObserverProvider>
|
||||
|
Loading…
x
Reference in New Issue
Block a user