diff --git a/packages/app/src/Pages/Layout/AccountHeader.tsx b/packages/app/src/Pages/Layout/AccountHeader.tsx
index fb1a5fbb6..c632d5e6a 100644
--- a/packages/app/src/Pages/Layout/AccountHeader.tsx
+++ b/packages/app/src/Pages/Layout/AccountHeader.tsx
@@ -3,7 +3,7 @@ import { useUserProfile } from "@snort/system-react";
import { useMemo, useSyncExternalStore } from "react";
import { base64 } from "@scure/base";
import { unwrap } from "@snort/shared";
-import { FormattedMessage } from "react-intl";
+import { FormattedMessage, useIntl } from "react-intl";
import SearchBox from "@/Element/SearchBox";
import { ProfileLink } from "@/Element/User/ProfileLink";
import Avatar from "@/Element/User/Avatar";
@@ -17,6 +17,7 @@ import { Notifications } from "@/Cache";
const AccountHeader = () => {
const navigate = useNavigate();
+ const { formatMessage } = useIntl();
useKeyboardShortcut("/", event => {
// if event happened in a form element, do nothing, otherwise focus on search input
@@ -76,6 +77,13 @@ const AccountHeader = () => {
);
}
+
+ const readOnlyIcon = readonly && (
+
+
+
+ );
+
return (
{!location.pathname.startsWith("/search") ?
:
}
@@ -90,7 +98,7 @@ const AccountHeader = () => {
-
+
);
diff --git a/packages/app/src/Pages/Layout/NavSidebar.tsx b/packages/app/src/Pages/Layout/NavSidebar.tsx
index da87c9fac..28bfc80c6 100644
--- a/packages/app/src/Pages/Layout/NavSidebar.tsx
+++ b/packages/app/src/Pages/Layout/NavSidebar.tsx
@@ -6,7 +6,7 @@ import Avatar from "../../Element/User/Avatar";
import useLogin from "../../Hooks/useLogin";
import { useUserProfile } from "@snort/system-react";
import { NoteCreatorButton } from "../../Element/Event/Create/NoteCreatorButton";
-import { FormattedMessage } from "react-intl";
+import { FormattedMessage, useIntl } from "react-intl";
import classNames from "classnames";
import { HasNotificationsMarker } from "@/Pages/Layout/AccountHeader";
import { getCurrentSubscription } from "@/Subscription";
@@ -65,19 +65,27 @@ const getNavLinkClass = (isActive: boolean, narrow: boolean) => {
};
export default function NavSidebar({ narrow = false }) {
- const { publicKey, subscriptions } = useLogin(s => ({
+ const { publicKey, subscriptions, readonly } = useLogin(s => ({
publicKey: s.publicKey,
subscriptions: s.subscriptions,
+ readonly: s.readonly,
}));
const profile = useUserProfile(publicKey);
const navigate = useNavigate();
const sub = getCurrentSubscription(subscriptions);
+ const { formatMessage } = useIntl();
const className = classNames(
{ "xl:w-56 xl:gap-3 xl:items-start": !narrow },
"overflow-y-auto hide-scrollbar sticky items-center border-r border-neutral-900 top-0 z-20 h-screen max-h-screen hidden md:flex flex-col px-2 py-4 flex-shrink-0 gap-2",
);
+ const readOnlyIcon = readonly && (
+
+
+
+ );
+
return (
@@ -121,17 +129,20 @@ export default function NavSidebar({ narrow = false }) {
)}
- {publicKey ? (
+ {publicKey && (
<>
-
+
{!narrow &&
{profile?.name}}
+ {readonly && (
+
+
+
+ )}
>
- ) : (
- ""
)}
);
diff --git a/packages/app/src/lang.json b/packages/app/src/lang.json
index 74b6f4894..dedbb8349 100644
--- a/packages/app/src/lang.json
+++ b/packages/app/src/lang.json
@@ -1032,6 +1032,9 @@
"deEeEI": {
"defaultMessage": "Register"
},
+ "djNL6D": {
+ "defaultMessage": "Read-only"
+ },
"dmsiLv": {
"defaultMessage": "A default Zap Pool split of {n} has been configured for {site} developers, you can disable it at any time in {link}"
},
diff --git a/packages/app/src/translations/en.json b/packages/app/src/translations/en.json
index fff4235a1..8dc95a819 100644
--- a/packages/app/src/translations/en.json
+++ b/packages/app/src/translations/en.json
@@ -339,6 +339,7 @@
"dOQCL8": "Display name",
"ddd3JX": "Popular Hashtags",
"deEeEI": "Register",
+ "djNL6D": "Read-only",
"dmsiLv": "A default Zap Pool split of {n} has been configured for {site} developers, you can disable it at any time in {link}",
"e61Jf3": "Coming soon",
"e7VmYP": "Enter pin to unlock your private key",