diff --git a/packages/app/src/Components/Event/Note/NoteFooter/LikeButton.tsx b/packages/app/src/Components/Event/Note/NoteFooter/LikeButton.tsx index 353e79be..182cd10a 100644 --- a/packages/app/src/Components/Event/Note/NoteFooter/LikeButton.tsx +++ b/packages/app/src/Components/Event/Note/NoteFooter/LikeButton.tsx @@ -2,6 +2,7 @@ import { normalizeReaction } from "@snort/shared"; import { TaggedNostrEvent } from "@snort/system"; import classNames from "classnames"; import { useIntl } from "react-intl"; +import { useNavigate } from "react-router-dom"; import { AsyncFooterIcon } from "@/Components/Event/Note/NoteFooter/AsyncFooterIcon"; import useEventPublisher from "@/Hooks/useEventPublisher"; @@ -15,6 +16,7 @@ export const LikeButton = ({ positiveReactions: TaggedNostrEvent[]; }) => { const { formatMessage } = useIntl(); + const navigate = useNavigate(); const { publicKey } = useLogin(s => ({ publicKey: s.publicKey })); const { publisher, system } = useEventPublisher(); @@ -29,6 +31,9 @@ export const LikeButton = ({ const evLike = await publisher.react(ev, content); system.BroadcastEvent(evLike); } + if (!publisher) { + navigate("/login"); + } }; const reacted = hasReacted("+"); diff --git a/packages/app/src/Components/Event/Note/NoteFooter/ReplyButton.tsx b/packages/app/src/Components/Event/Note/NoteFooter/ReplyButton.tsx index 74285202..54f441e4 100644 --- a/packages/app/src/Components/Event/Note/NoteFooter/ReplyButton.tsx +++ b/packages/app/src/Components/Event/Note/NoteFooter/ReplyButton.tsx @@ -1,8 +1,10 @@ import { TaggedNostrEvent } from "@snort/system"; import classNames from "classnames"; import { useIntl } from "react-intl"; +import { useNavigate } from "react-router-dom"; import { AsyncFooterIcon } from "@/Components/Event/Note/NoteFooter/AsyncFooterIcon"; +import useLogin from "@/Hooks/useLogin"; import { useNoteCreator } from "@/State/NoteCreator"; export const ReplyButton = ({ @@ -15,6 +17,8 @@ export const ReplyButton = ({ readonly: boolean; }) => { const { formatMessage } = useIntl(); + const navigate = useNavigate(); + const publicKey = useLogin(s => s.publicKey); const note = useNoteCreator(n => ({ show: n.show, replyTo: n.replyTo, @@ -23,6 +27,10 @@ export const ReplyButton = ({ })); const handleReplyButtonClick = () => { + if (!publicKey) { + navigate("/login"); + return; + } if (readonly) { return; } diff --git a/packages/app/src/Components/Event/Note/NoteFooter/RepostButton.tsx b/packages/app/src/Components/Event/Note/NoteFooter/RepostButton.tsx index 88a99bf5..e30e6bef 100644 --- a/packages/app/src/Components/Event/Note/NoteFooter/RepostButton.tsx +++ b/packages/app/src/Components/Event/Note/NoteFooter/RepostButton.tsx @@ -2,6 +2,7 @@ import { TaggedNostrEvent } from "@snort/system"; import { Menu, MenuItem } from "@szhsin/react-menu"; import classNames from "classnames"; import { FormattedMessage, useIntl } from "react-intl"; +import { useNavigate } from "react-router-dom"; import { AsyncFooterIcon } from "@/Components/Event/Note/NoteFooter/AsyncFooterIcon"; import Icon from "@/Components/Icons/Icon"; @@ -12,6 +13,7 @@ import { useNoteCreator } from "@/State/NoteCreator"; export const RepostButton = ({ ev, reposts }: { ev: TaggedNostrEvent; reposts: TaggedNostrEvent[] }) => { const { formatMessage } = useIntl(); + const navigate = useNavigate(); const { publisher, system } = useEventPublisher(); const { publicKey, preferences: prefs } = useLogin(s => ({ preferences: s.appData.item.preferences, @@ -30,13 +32,15 @@ export const RepostButton = ({ ev, reposts }: { ev: TaggedNostrEvent; reposts: T system.BroadcastEvent(evRepost); } } + if (!publisher) { + navigate("/login"); + } }; return ( ({ - text: formatMessage(message, { n: count }), - value, - disabled, - }); + const createTab = (message: MessageDescriptor, count: number, value: number, disabled = false) => + ({ + text: formatMessage(message, { n: count }), + value, + disabled, + }) as Tab; const tabs = useMemo(() => { const baseTabs = [