diff --git a/.changeset/stale-dots-kick.md b/.changeset/stale-dots-kick.md new file mode 100644 index 000000000..4c3d6ebad --- /dev/null +++ b/.changeset/stale-dots-kick.md @@ -0,0 +1,5 @@ +--- +"nostrudel": patch +--- + +Confirm before reposting diff --git a/src/components/note/buttons/repost-button.tsx b/src/components/note/buttons/repost-button.tsx index 0718bb941..dda465864 100644 --- a/src/components/note/buttons/repost-button.tsx +++ b/src/components/note/buttons/repost-button.tsx @@ -1,5 +1,18 @@ import { useState } from "react"; -import { IconButton, useToast } from "@chakra-ui/react"; +import { + Button, + IconButton, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalFooter, + ModalHeader, + ModalOverlay, + Text, + useDisclosure, + useToast, +} from "@chakra-ui/react"; import { NostrEvent } from "../../../types/nostr-event"; import { RepostIcon } from "../../icons"; import { buildRepost } from "../../../helpers/nostr-event"; @@ -7,8 +20,10 @@ import { useCurrentAccount } from "../../../hooks/use-current-account"; import { nostrPostAction } from "../../../classes/nostr-post-action"; import clientRelaysService from "../../../services/client-relays"; import signingService from "../../../services/signing"; +import QuoteNote from "../quote-note"; export function RepostButton({ event }: { event: NostrEvent }) { + const { isOpen, onClose, onOpen } = useDisclosure(); const account = useCurrentAccount(); const [loading, setLoading] = useState(false); const toast = useToast(); @@ -19,6 +34,7 @@ export function RepostButton({ event }: { event: NostrEvent }) { const draftRepost = buildRepost(event); const repost = await signingService.requestSignature(draftRepost, account); await nostrPostAction(clientRelaysService.getWriteUrls(), repost); + onClose(); } catch (e) { if (e instanceof Error) { toast({ status: "error", description: e.message }); @@ -28,13 +44,38 @@ export function RepostButton({ event }: { event: NostrEvent }) { }; return ( - } - onClick={handleClick} - aria-label="Repost Note" - title="Repost Note" - isDisabled={account.readonly} - isLoading={loading} - /> + <> + } + onClick={onOpen} + aria-label="Repost Note" + title="Repost Note" + isDisabled={account.readonly} + isLoading={loading} + /> + {isOpen && ( + + + + + Repost Note? + + + + + + + + + + + + + )} + ); } diff --git a/src/components/repost-note.tsx b/src/components/repost-note.tsx index d30843e39..98a8ad8c4 100644 --- a/src/components/repost-note.tsx +++ b/src/components/repost-note.tsx @@ -9,6 +9,7 @@ import { NoteMenu } from "./note/note-menu"; import { UserAvatar } from "./user-avatar"; import { UserDnsIdentityIcon } from "./user-dns-identity"; import { UserLink } from "./user-link"; +import { getUserDisplayName } from "../helpers/user-metadata"; export default function RepostNote({ event, maxHeight }: { event: NostrEvent; maxHeight?: number }) { const { @@ -33,7 +34,7 @@ export default function RepostNote({ event, maxHeight }: { event: NostrEvent; ma Shared note - {import.meta.env.DEV && } + {loading ? (