From c493b959e72779ec6dd1f3cc67156e20cd5cbbbe Mon Sep 17 00:00:00 2001 From: Martti Malmi Date: Mon, 4 Dec 2023 15:05:11 +0200 Subject: [PATCH] note and profile titles in header --- packages/app/src/Pages/Layout/Header.tsx | 80 ++++++++++++++++++++++++ packages/app/src/Pages/Layout/index.tsx | 36 +---------- packages/app/src/lang.json | 6 ++ packages/app/src/translations/en.json | 2 + 4 files changed, 89 insertions(+), 35 deletions(-) create mode 100644 packages/app/src/Pages/Layout/Header.tsx diff --git a/packages/app/src/Pages/Layout/Header.tsx b/packages/app/src/Pages/Layout/Header.tsx new file mode 100644 index 00000000..adea3fc5 --- /dev/null +++ b/packages/app/src/Pages/Layout/Header.tsx @@ -0,0 +1,80 @@ +import { useLocation } from "react-router-dom"; +import React, { useCallback, useEffect, useState } from "react"; +import classNames from "classnames"; +import { LogoHeader } from "@/Pages/Layout/LogoHeader"; +import { RootTabs } from "@/Element/Feed/RootTabs"; +import NotificationsHeader from "@/Pages/Layout/NotificationsHeader"; +import { NostrLink, NostrPrefix, parseNostrLink } from "@snort/system"; +import { bech32ToHex } from "@/SnortUtils"; +import { useEventFeed } from "@snort/system-react"; +import { FormattedMessage } from "react-intl"; +import DisplayName from "@/Element/User/DisplayName"; + +export function Header() { + const location = useLocation(); + const showRootTabs = location.pathname === "/"; + const pageName = location.pathname.split("/")[1]; + const [nostrLink, setNostrLink] = useState(); + + const scrollUp = useCallback(() => { + window.scrollTo({ top: 0, behavior: "instant" }); + }, []); + + useEffect(() => { + try { + setNostrLink(parseNostrLink(pageName)); + } catch (e) { + setNostrLink(undefined); + } + }, [pageName]); + + let title: React.ReactNode = {pageName}; + if (nostrLink) { + if (nostrLink.type === NostrPrefix.Event || nostrLink.type === NostrPrefix.Note) { + title = ; + } else if (nostrLink.type === NostrPrefix.PublicKey || nostrLink.type === NostrPrefix.Profile) { + title = ; + } + } + + return ( +
+
+ +
+ {showRootTabs && } + {!showRootTabs && ( +
+ {title} +
+ )} +
+ +
+
+ ); +} + +function NoteTitle({ link }: { link: NostrLink }) { + const ev = useEventFeed(link); + + if (!ev.data?.pubkey) { + return ; + } + + return ( + <> + }} + /> + + ); +} diff --git a/packages/app/src/Pages/Layout/index.tsx b/packages/app/src/Pages/Layout/index.tsx index cdcd45ff..ae30265f 100644 --- a/packages/app/src/Pages/Layout/index.tsx +++ b/packages/app/src/Pages/Layout/index.tsx @@ -12,14 +12,11 @@ import { LoginUnlock } from "@/Element/PinPrompt"; import useKeyboardShortcut from "@/Hooks/useKeyboardShortcut"; import { LoginStore } from "@/Login"; import NavSidebar from "./NavSidebar"; -import NotificationsHeader from "./NotificationsHeader"; import RightColumn from "./RightColumn"; -import { LogoHeader } from "./LogoHeader"; import useLoginFeed from "@/Feed/LoginFeed"; import ErrorBoundary from "@/Element/ErrorBoundary"; import Footer from "@/Pages/Layout/Footer"; -import { RootTabs } from "@/Element/Feed/RootTabs"; -import classNames from "classnames"; +import { Header } from "@/Pages/Layout/Header"; export default function Index() { const location = useLocation(); @@ -66,37 +63,6 @@ export default function Index() { ); } -function Header() { - const location = useLocation(); - const showRootTabs = location.pathname === "/"; - const pageName = location.pathname.split("/")[1]; - const scrollUp = useCallback(() => { - window.scrollTo({ top: 0, behavior: "instant" }); - }, []); - return ( -
-
- -
- {showRootTabs && } - {!showRootTabs && ( -
- {pageName} -
- )} -
- -
-
- ); -} - function StalkerModal({ id }) { return (
LoginStore.removeSession(id)}> diff --git a/packages/app/src/lang.json b/packages/app/src/lang.json index c45cd68e..ac47a6a0 100644 --- a/packages/app/src/lang.json +++ b/packages/app/src/lang.json @@ -319,6 +319,9 @@ "AIgmDy": { "defaultMessage": "Add up to 4 hashtags" }, + "ALdW69": { + "defaultMessage": "Note by {name}" + }, "AN0Z7Q": { "defaultMessage": "Muted Words" }, @@ -1361,6 +1364,9 @@ "qDwvZ4": { "defaultMessage": "Unknown error" }, + "qMePPG": { + "defaultMessage": "Note" + }, "qMx1sA": { "defaultMessage": "Default Zap amount" }, diff --git a/packages/app/src/translations/en.json b/packages/app/src/translations/en.json index a4b4559b..57b83f6a 100644 --- a/packages/app/src/translations/en.json +++ b/packages/app/src/translations/en.json @@ -105,6 +105,7 @@ "ABAQyo": "Chats", "ADmfQT": "Parent", "AIgmDy": "Add up to 4 hashtags", + "ALdW69": "Note by {name}", "AN0Z7Q": "Muted Words", "ASRK0S": "This author has been muted", "Ai8VHU": "Unlimited note retention on Snort relay", @@ -448,6 +449,7 @@ "pzTOmv": "Followers", "qD9EUF": "Email <> DM bridge for your Snort nostr address", "qDwvZ4": "Unknown error", + "qMePPG": "Note", "qMx1sA": "Default Zap amount", "qUJTsT": "Blocked", "qZsKBR": "Renew {tier}",