diff --git a/packages/app/src/Element/Event/NoteInner.tsx b/packages/app/src/Element/Event/NoteInner.tsx index 58ed53df0..e39d1ba2b 100644 --- a/packages/app/src/Element/Event/NoteInner.tsx +++ b/packages/app/src/Element/Event/NoteInner.tsx @@ -40,7 +40,7 @@ export function NoteInner(props: NoteProps) { const { ref, inView } = useInView({ triggerOnce: true }); const { reactions, reposts, deletions, zaps } = useEventReactions(NostrLink.fromEvent(ev), related); const login = useLogin(); - const { pinned, bookmarked } = login; + const { pinned, bookmarked } = useLogin(); const { publisher, system } = useEventPublisher(); const [translated, setTranslated] = useState(); const [showTranslation, setShowTranslation] = useState(true); @@ -140,39 +140,45 @@ export function NoteInner(props: NoteProps) { ); } - const contentWarning = ev.tags.find(a => a[0] === "content-warning"); - if (contentWarning) { - return ( - - {c}, - }} - /> - {contentWarning[1] && ( - <> -   - {c}, - reason: contentWarning[1], - }} - /> - - )} -   - - - }> - {innerContent} - - ); + if (!login.appData.item.showContentWarningPosts) { + const contentWarning = ev.tags.find(a => a[0] === "content-warning"); + if (contentWarning) { + return ( + + {c}, + }} + /> + {contentWarning[1] && ( + <> +   + {c}, + reason: contentWarning[1], + }} + /> + + )} + . .{" "} + + + + + + + }> + {innerContent} + + ); + } } return innerContent; }; diff --git a/packages/app/src/Login/LoginSession.ts b/packages/app/src/Login/LoginSession.ts index 91172e193..71b9791af 100644 --- a/packages/app/src/Login/LoginSession.ts +++ b/packages/app/src/Login/LoginSession.ts @@ -20,6 +20,7 @@ export const enum LoginSessionType { export interface SnortAppData { mutedWords: Array; + showContentWarningPosts: boolean; preferences: UserPreferences; } diff --git a/packages/app/src/Pages/SettingsPage.tsx b/packages/app/src/Pages/SettingsPage.tsx index 337f72c01..55c016205 100644 --- a/packages/app/src/Pages/SettingsPage.tsx +++ b/packages/app/src/Pages/SettingsPage.tsx @@ -9,7 +9,7 @@ import AccountsPage from "@/Pages/settings/Accounts"; import { WalletSettingsRoutes } from "@/Pages/settings/WalletSettings"; import { ManageHandleRoutes } from "@/Pages/settings/handle"; import ExportKeys from "@/Pages/settings/Keys"; -import { ModerationSettings } from "@/Pages/settings/Moderation"; +import ModerationSettings from "@/Pages/settings/Moderation"; import { CacheSettings } from "./settings/Cache"; import messages from "./messages"; diff --git a/packages/app/src/Pages/settings/Moderation.tsx b/packages/app/src/Pages/settings/Moderation.tsx index e3a5b787c..1f88b20df 100644 --- a/packages/app/src/Pages/settings/Moderation.tsx +++ b/packages/app/src/Pages/settings/Moderation.tsx @@ -1,30 +1,41 @@ import { unixNowMs } from "@snort/shared"; import useLogin from "@/Hooks/useLogin"; -import { updateAppData } from "@/Login"; +import { SnortAppData, updateAppData } from "@/Login"; import { appendDedupe } from "@/SnortUtils"; import { useState } from "react"; import { FormattedMessage } from "react-intl"; -export function ModerationSettings() { +export default function ModerationSettingsPage() { const login = useLogin(); const [muteWord, setMuteWord] = useState(""); + const appData = login.appData.item; function addMutedWord() { updateAppData(login.id, ad => ({ item: { ...ad, - mutedWords: appendDedupe(login.appData.item.mutedWords, [muteWord]), + mutedWords: appendDedupe(appData.mutedWords, [muteWord]), }, timestamp: unixNowMs(), })); setMuteWord(""); } + const handleToggle = (setting: keyof SnortAppData) => { + updateAppData(login.id, ad => ({ + item: { + ...ad, + [setting]: !appData[setting], + }, + timestamp: unixNowMs(), + })); + }; + function removeMutedWord(word: string) { updateAppData(login.id, ad => ({ item: { ...ad, - mutedWords: login.appData.item.mutedWords.filter(a => a !== word), + mutedWords: appData.mutedWords.filter(a => a !== word), }, timestamp: unixNowMs(), })); @@ -34,8 +45,27 @@ export function ModerationSettings() { return ( <>

- +

+ +
+
+ handleToggle("showContentWarningPosts")} + className="mr-2" + id="showContentWarningPosts" + /> + +
+
+ +

+ +

- {login.appData.item.mutedWords.map(v => ( + {appData.mutedWords.map(v => (
{v}