diff --git a/src/app/notes/article.tsx b/src/app/notes/article.tsx
index d4a1ba2b..912489db 100644
--- a/src/app/notes/article.tsx
+++ b/src/app/notes/article.tsx
@@ -4,6 +4,7 @@ import { nip19 } from 'nostr-tools';
import { EventPointer } from 'nostr-tools/lib/types/nip19';
import { useMemo, useState } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
+import { toast } from 'sonner';
import { ArrowLeftIcon, CheckCircleIcon, ShareIcon } from '@shared/icons';
import { NoteReplyForm } from '@shared/notes';
@@ -40,14 +41,18 @@ export function ArticleNoteScreen() {
}, [data]);
const share = async () => {
- await writeText(
- 'https://njump.me/' +
- nip19.neventEncode({ id: data.id, author: data.pubkey } as EventPointer)
- );
- // update state
- setIsCopy(true);
- // reset state after 2 sec
- setTimeout(() => setIsCopy(false), 2000);
+ try {
+ await writeText(
+ 'https://njump.me/' +
+ nip19.neventEncode({ id: data?.id, author: data?.pubkey } as EventPointer)
+ );
+ // update state
+ setIsCopy(true);
+ // reset state after 2 sec
+ setTimeout(() => setIsCopy(false), 2000);
+ } catch (e) {
+ toast.error(e);
+ }
};
return (
diff --git a/src/app/notes/text.tsx b/src/app/notes/text.tsx
index 7228489f..9e723251 100644
--- a/src/app/notes/text.tsx
+++ b/src/app/notes/text.tsx
@@ -4,6 +4,7 @@ import { nip19 } from 'nostr-tools';
import { EventPointer } from 'nostr-tools/lib/types/nip19';
import { useRef, useState } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
+import { toast } from 'sonner';
import { ArrowLeftIcon, CheckCircleIcon, ReplyIcon, ShareIcon } from '@shared/icons';
import {
@@ -30,14 +31,18 @@ export function TextNoteScreen() {
const [isCopy, setIsCopy] = useState(false);
const share = async () => {
- await writeText(
- 'https://njump.me/' +
- nip19.neventEncode({ id: data.id, author: data.pubkey } as EventPointer)
- );
- // update state
- setIsCopy(true);
- // reset state after 2 sec
- setTimeout(() => setIsCopy(false), 2000);
+ try {
+ await writeText(
+ 'https://njump.me/' +
+ nip19.neventEncode({ id: data?.id, author: data?.pubkey } as EventPointer)
+ );
+ // update state
+ setIsCopy(true);
+ // reset state after 2 sec
+ setTimeout(() => setIsCopy(false), 2000);
+ } catch (e) {
+ toast.error(e);
+ }
};
const scrollToReply = () => {
diff --git a/src/shared/notes/child.tsx b/src/shared/notes/child.tsx
index 00f9ed15..40c79974 100644
--- a/src/shared/notes/child.tsx
+++ b/src/shared/notes/child.tsx
@@ -4,12 +4,22 @@ import { User } from '@shared/user';
import { useEvent } from '@utils/hooks/useEvent';
export function ChildNote({ id, isRoot }: { id: string; isRoot?: boolean }) {
- const { status, data } = useEvent(id);
+ const { isFetching, isError, data } = useEvent(id);
- if (status === 'pending' || !data) {
+ if (isFetching) {
return