small fix for reply note bug

This commit is contained in:
hzrd149 2023-11-27 09:59:47 -06:00
parent d0fc4fb034
commit 487dabaede
6 changed files with 17 additions and 16 deletions

View File

@ -6,14 +6,14 @@ import { EmbedableContent, embedUrls, truncateEmbedableContent } from "../helper
import { embedNostrLinks, embedNostrMentions, embedNostrHashtags, embedEmoji, renderGenericUrl } from "./embed-types";
import { LightboxProvider } from "./lightbox-provider";
function buildContents(event: NostrEvent | DraftNostrEvent) {
function buildContents(event: NostrEvent | DraftNostrEvent, textOnly = false) {
let content: EmbedableContent = [event.content.trim().replace(/\n+/g, "\n")];
// common
content = embedUrls(content, [renderGenericUrl]);
// nostr
content = embedNostrLinks(content);
content = embedNostrLinks(content, textOnly);
content = embedNostrMentions(content, event);
content = embedNostrHashtags(content, event);
content = embedEmoji(content, event);
@ -23,12 +23,13 @@ function buildContents(event: NostrEvent | DraftNostrEvent) {
export type NoteContentsProps = {
event: NostrEvent | DraftNostrEvent;
textOnly?: boolean;
maxLength?: number;
};
export const InlineNoteContent = React.memo(
({ event, maxLength, ...props }: NoteContentsProps & Omit<BoxProps, "children">) => {
let content = buildContents(event);
export const CompactNoteContent = React.memo(
({ event, maxLength, textOnly = false, ...props }: NoteContentsProps & Omit<BoxProps, "children">) => {
let content = buildContents(event, textOnly);
let truncated = maxLength !== undefined ? truncateEmbedableContent(content, maxLength) : content;
return (

View File

@ -13,7 +13,7 @@ import { TrustProvider } from "../../../providers/trust";
import { NoteLink } from "../../note-link";
import Timestamp from "../../timestamp";
import { getSharableEventAddress } from "../../../helpers/nip19";
import { InlineNoteContent } from "../../inline-note-content";
import { CompactNoteContent } from "../../compact-note-content";
import { useNavigateInDrawer } from "../../../providers/drawer-sub-view-provider";
import HoverLinkOverlay from "../../hover-link-overlay";
@ -44,7 +44,7 @@ export default function EmbeddedNote({ event, ...props }: Omit<CardProps, "child
<Timestamp timestamp={event.created_at} />
</NoteLink>
</Flex>
<InlineNoteContent px="2" event={event} maxLength={96} />
<CompactNoteContent px="2" event={event} maxLength={96} />
</Card>
</TrustProvider>
);

View File

@ -18,7 +18,7 @@ import {
import { NostrEvent } from "../../../types/nostr-event";
import UserAvatarLink from "../../user-avatar-link";
import { UserLink } from "../../user-link";
import { InlineNoteContent } from "../../inline-note-content";
import { CompactNoteContent } from "../../compact-note-content";
import { getDownloadURL, getHashtags, getStreamURL } from "../../../helpers/nostr/stemstr";
import { DownloadIcon, ReplyIcon } from "../../icons";
import NoteZapButton from "../../note/note-zap-button";
@ -54,7 +54,7 @@ export default function EmbeddedStemstrTrack({ track, ...props }: Omit<CardProps
</CardHeader>
<CardBody p="2" display="flex" gap="2" flexDirection="column">
{player}
<InlineNoteContent event={track} />
<CompactNoteContent event={track} />
{hashtags.length > 0 && (
<Flex wrap="wrap" gap="2">
{hashtags.map((hashtag) => (

View File

@ -10,7 +10,7 @@ import { EmbedEventPointer } from "../embed-event";
// nostr:nevent1qqsthg2qlxp9l7egtwa92t8lusm7pjknmjwa75ctrrpcjyulr9754fqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduq36amnwvaz7tmwdaehgu3dwp6kytnhv4kxcmmjv3jhytnwv46q2qg5q9
// nostr:nevent1qqsq3wc73lqxd70lg43m5rul57d4mhcanttjat56e30yx5zla48qzlspz9mhxue69uhkummnw3e82efwvdhk6qgdwaehxw309ahx7uewd3hkcq5hsum
export function embedNostrLinks(content: EmbedableContent) {
export function embedNostrLinks(content: EmbedableContent, inline = false) {
return embedJSX(content, {
name: "nostr-link",
regexp: getMatchNostrLink(),
@ -27,7 +27,7 @@ export function embedNostrLinks(content: EmbedableContent) {
case "nevent":
case "naddr":
case "nrelay":
return <EmbedEventPointer pointer={decoded} />;
return inline === false ? <EmbedEventPointer pointer={decoded} /> : null;
default:
return null;
}

View File

@ -46,7 +46,7 @@ import HoverLinkOverlay from "../hover-link-overlay";
import { nip19 } from "nostr-tools";
import NoteCommunityMetadata from "./note-community-metadata";
import useSingleEvent from "../../hooks/use-single-event";
import { InlineNoteContent } from "../inline-note-content";
import { CompactNoteContent } from "../compact-note-content";
import NoteProxyLink from "./components/note-proxy-link";
import { NoteDetailsButton } from "./components/note-details-button";
import EventInteractionDetailsModal from "../event-interactions-modal";
@ -119,7 +119,7 @@ export const Note = React.memo(
<Text>
Replying to <UserLink pubkey={repliedTo.pubkey} fontWeight="bold" />
</Text>
<InlineNoteContent event={repliedTo} maxLength={96} isTruncated />
<CompactNoteContent event={repliedTo} maxLength={96} isTruncated textOnly />
</Flex>
)}
</CardHeader>

View File

@ -21,7 +21,7 @@ import { getEventCommunityPointer, getPostSubject } from "../../../helpers/nostr
import { useNavigateInDrawer } from "../../../providers/drawer-sub-view-provider";
import { getSharableEventAddress } from "../../../helpers/nip19";
import HoverLinkOverlay from "../../../components/hover-link-overlay";
import { InlineNoteContent } from "../../../components/inline-note-content";
import { CompactNoteContent } from "../../../components/compact-note-content";
import { useRegisterIntersectionEntity } from "../../../providers/intersection-observer";
import { getEventUID, parseHardcodedNoteContent } from "../../../helpers/nostr/events";
import { UserLink } from "../../../components/user-link";
@ -97,7 +97,7 @@ export function CommunityTextPost({
<Card as={LinkBox} ref={ref} {...props}>
<PostSubject event={event} />
<CardBody p="2">
<InlineNoteContent event={event} maxLength={96} />
<CompactNoteContent event={event} maxLength={96} />
</CardBody>
<CardFooter display="flex" gap="2" alignItems="center" p="2" flexWrap="wrap">
<Text>
@ -148,7 +148,7 @@ export function CommunityRepostPost({
<>
<PostSubject event={repost} />
<CardBody p="2">
<InlineNoteContent event={repost} maxLength={96} />
<CompactNoteContent event={repost} maxLength={96} />
</CardBody>
</>
)}