Skip to content

Commit

Permalink
fixed bug with cached note content
Browse files Browse the repository at this point in the history
  • Loading branch information
hzrd149 committed Nov 13, 2024
1 parent 7d2d888 commit c8b6559
Show file tree
Hide file tree
Showing 13 changed files with 54 additions and 168 deletions.
148 changes: 7 additions & 141 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 10 additions & 2 deletions src/components/compact-note-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ import { Root, truncateContent } from "applesauce-content/nast";

import { DraftNostrEvent, NostrEvent } from "../types/nostr-event";
import { LightboxProvider } from "./lightbox-provider";
import { nostrMentions, emojis, hashtags } from "applesauce-content/text";
import { nostrMentions, emojis, hashtags, links } from "applesauce-content/text";
import { useRenderedContent } from "applesauce-react/hooks";
import { components } from "./content";
import { renderGenericUrl } from "./content/links/common";

const linkRenderers = [renderGenericUrl];

const CompactNoteContentSymbol = Symbol.for("compact-note-content");

export type NoteContentsProps = {
event: NostrEvent | DraftNostrEvent;
textOnly?: boolean;
Expand All @@ -22,6 +24,7 @@ export const CompactNoteContent = React.memo(
const truncated = useRef(false);
const transformers = useMemo(
() => [
links,
nostrMentions,
emojis,
hashtags,
Expand All @@ -32,7 +35,12 @@ export const CompactNoteContent = React.memo(
],
[maxLength],
);
const content = useRenderedContent(event, components, { transformers, linkRenderers, maxLength });
const content = useRenderedContent(event, components, {
transformers,
linkRenderers,
maxLength,
cacheKey: CompactNoteContentSymbol,
});

return (
<LightboxProvider>
Expand Down
11 changes: 8 additions & 3 deletions src/components/note/timeline-note/text-note-contents.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React, { Suspense, useMemo } from "react";
import { Box, BoxProps, Spinner } from "@chakra-ui/react";
import { EventTemplate, NostrEvent } from "nostr-tools";
import { useRenderedContent } from "applesauce-react/hooks";
import { defaultTransformers, galleries } from "applesauce-content/text";
import { textNoteTransformers, TextNoteContentSymbol, galleries } from "applesauce-content/text";

import {
renderWavlakeUrl,
Expand Down Expand Up @@ -30,7 +30,7 @@ import MediaOwnerProvider from "../../../providers/local/media-owner-provider";
import { components } from "../../content";
import { nipDefinitions } from "../../content/transform/nip-notation";

const transformers = [...defaultTransformers, galleries, nipDefinitions];
const transformers = [...textNoteTransformers, galleries, nipDefinitions];

export type TextNoteContentsProps = {
event: NostrEvent | EventTemplate;
Expand Down Expand Up @@ -62,7 +62,12 @@ const linkRenderers = [

export const TextNoteContents = React.memo(
({ event, noOpenGraphLinks, maxLength, ...props }: TextNoteContentsProps & Omit<BoxProps, "children">) => {
const content = useRenderedContent(event, components, { linkRenderers, transformers, maxLength });
const content = useRenderedContent(event, components, {
linkRenderers,
transformers,
maxLength,
cacheKey: TextNoteContentSymbol,
});

return (
<MediaOwnerProvider owner={(event as NostrEvent).pubkey as string | undefined}>
Expand Down
10 changes: 8 additions & 2 deletions src/components/user/user-about.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,15 @@ import { components } from "../content";
const transformers = [nostrMentions];
const linkRenderers = [renderGenericUrl];

export default function UserAbout({ pubkey, ...props }: { pubkey: string } & Omit<BoxProps, "children">) {
const ProfileAboutContentSymbol = Symbol.for("profile-about-content");

export default function UserAboutContent({ pubkey, ...props }: { pubkey: string } & Omit<BoxProps, "children">) {
const profile = useUserProfile(pubkey);
const content = useRenderedContent(profile?.about, components, { transformers, linkRenderers });
const content = useRenderedContent(profile?.about, components, {
transformers,
linkRenderers,
cacheKey: ProfileAboutContentSymbol,
});

return (
<Box whiteSpace="pre-line" {...props}>
Expand Down
4 changes: 3 additions & 1 deletion src/views/channels/components/channel-message-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,10 @@ const linkRenderers = [
renderGenericUrl,
];

const ChannelMessageContentSymbol = Symbol.for("channel-message-content");

const ChannelMessageContent = memo(({ message, children, ...props }: BoxProps & { message: NostrEvent }) => {
const content = useRenderedContent(message, components, { linkRenderers });
const content = useRenderedContent(message, components, { linkRenderers, cacheKey: ChannelMessageContentSymbol });

return (
<TrustProvider event={message}>
Expand Down
3 changes: 3 additions & 0 deletions src/views/communities/components/community-description.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import { renderGenericUrl } from "../../../components/content/links";

const linkRenderers = [renderGenericUrl];

const CommunityDescriptionSymbol = Symbol.for("community-description-content");

export default function CommunityDescription({
community,
maxLength,
Expand All @@ -20,6 +22,7 @@ export default function CommunityDescription({
const content = useRenderedContent(description, components, {
maxLength: showAll ? undefined : maxLength,
linkRenderers,
cacheKey: CommunityDescriptionSymbol,
});

return (
Expand Down
5 changes: 2 additions & 3 deletions src/views/dms/components/direct-message-content.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Box, BoxProps } from "@chakra-ui/react";
import { useRenderedContent } from "applesauce-react/hooks";
import { defaultTransformers } from "applesauce-content/text";

import { NostrEvent } from "../../../types/nostr-event";
import {
Expand All @@ -25,8 +24,8 @@ import { LightboxProvider } from "../../../components/lightbox-provider";
import { renderAudioUrl } from "../../../components/content/links/audio";
import { components } from "../../../components/content";
import { useKind4Decrypt } from "../../../hooks/use-kind4-decryption";
import { fedimintTokens } from "../../../helpers/fedimint";

const DirectMessageContentSymbol = Symbol.for("direct-message-content");
const linkRenderers = [
renderSimpleXLink,
renderYoutubeURL,
Expand All @@ -53,7 +52,7 @@ export default function DirectMessageContent({
...props
}: { event: NostrEvent; text: string } & BoxProps) {
const { plaintext } = useKind4Decrypt(event);
const content = useRenderedContent(plaintext, components, { linkRenderers });
const content = useRenderedContent(plaintext, components, { linkRenderers, cacheKey: DirectMessageContentSymbol });

return (
<TrustProvider event={event}>
Expand Down
4 changes: 3 additions & 1 deletion src/views/relays/media-servers/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,9 @@ function MediaServersPage() {
<Flex gap="2" direction="column" overflow="auto hidden" flex={1} px="2">
<Flex gap="2" alignItems="center">
<BackButton hideFrom="lg" size="sm" />
<Heading size="lg">Media Servers</Heading>
<Heading size="lg" mt="2">
Media Servers
</Heading>
{event && <DebugEventButton event={event} size="sm" ml="auto" />}
</Flex>
<Text fontStyle="italic" mt="-2">
Expand Down
4 changes: 2 additions & 2 deletions src/views/search/components/profile-results.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import UserDnsIdentity from "../../../components/user/user-dns-identity";
import trustedUserStatsService from "../../../services/trusted-user-stats";
import { readablizeSats } from "../../../helpers/bolt11";
import replaceableEventsService from "../../../services/replaceable-events";
import UserAbout from "../../../components/user/user-about";
import UserAboutContent from "../../../components/user/user-about";
import UserName from "../../../components/user/user-name";
import HoverLinkOverlay from "../../../components/hover-link-overlay";
import { useWebOfTrust } from "../../../providers/global/web-of-trust-provider";
Expand Down Expand Up @@ -40,7 +40,7 @@ function ProfileResult({ profile }: { profile: NostrEvent }) {
<UserDnsIdentity pubkey={profile.pubkey} isTruncated />
</Flex>
</Flex>
<UserAbout pubkey={profile.pubkey} noOfLines={3} isTruncated />
<UserAboutContent pubkey={profile.pubkey} noOfLines={3} isTruncated />
{stats && (
<>{stats.followers_pubkey_count && <Text>Followers: {readablizeSats(stats.followers_pubkey_count)}</Text>}</>
)}
Expand Down
3 changes: 2 additions & 1 deletion src/views/streams/components/stream-summary-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@ import { ParsedStream } from "../../../helpers/nostr/stream";
import { renderGenericUrl, renderImageUrl } from "../../../components/content/links";
import { components } from "../../../components/content";

const StreamSummaryContentSymbol = Symbol.for("stream-summary-content");
const linkRenderers = [renderImageUrl, renderGenericUrl];

export default function StreamSummaryContent({ stream, ...props }: BoxProps & { stream: ParsedStream }) {
const content = useRenderedContent(stream.event, components, { linkRenderers });
const content = useRenderedContent(stream.event, components, { linkRenderers, cacheKey: StreamSummaryContentSymbol });

return (
content && (
Expand Down
Loading

0 comments on commit c8b6559

Please sign in to comment.