diff --git a/web/src/components/MemoReactionListView/ReactionSelector.tsx b/web/src/components/MemoReactionListView/ReactionSelector.tsx index 8aa4073ed..d22d2a7ae 100644 --- a/web/src/components/MemoReactionListView/ReactionSelector.tsx +++ b/web/src/components/MemoReactionListView/ReactionSelector.tsx @@ -36,11 +36,7 @@ const ReactionSelector = (props: Props) => { className, )} > -<<<<<<< HEAD - -======= ->>>>>>> 89d43a2e (Developed Color Picker Feature for memos) diff --git a/web/src/components/MemoView/MemoView.tsx b/web/src/components/MemoView/MemoView.tsx index 43a4d68cd..bc0f60e2f 100644 --- a/web/src/components/MemoView/MemoView.tsx +++ b/web/src/components/MemoView/MemoView.tsx @@ -1,122 +1,5 @@ import { memo, useCallback, useMemo, useRef, useState } from "react"; import { useLocation } from "react-router-dom"; -import useCurrentUser from "@/hooks/useCurrentUser"; -import { useUser } from "@/hooks/useUserQueries"; -import { cn } from "@/lib/utils"; -import { State } from "@/types/proto/api/v1/common_pb"; -import { isSuperUser } from "@/utils/user"; -import MemoEditor from "../MemoEditor"; -import PreviewImageDialog from "../PreviewImageDialog"; -import { MemoBody, MemoCommentListView, MemoHeader } from "./components"; -import { MEMO_CARD_BASE_CLASSES } from "./constants"; -import { useImagePreview } from "./hooks"; -import { computeCommentAmount, MemoViewContext } from "./MemoViewContext"; -import type { MemoViewProps } from "./types"; -import MemoFooter from "./components/MemoFooter"; - -const MemoView: React.FC = (props: MemoViewProps) => { - const { memo: memoData, className, parentPage: parentPageProp, compact, showCreator, showVisibility, showPinned } = props; - const cardRef = useRef(null); - const [showEditor, setShowEditor] = useState(false); - - const currentUser = useCurrentUser(); - const creator = useUser(memoData.creator).data; - const isArchived = memoData.state === State.ARCHIVED; - const readonly = memoData.creator !== currentUser?.name && !isSuperUser(currentUser); - const parentPage = parentPageProp || "/"; - - // NSFW content management: always blur content tagged with NSFW (case-insensitive) - const [showNSFWContent, setShowNSFWContent] = useState(false); - const nsfw = memoData.tags?.some((tag) => tag.toUpperCase() === "NSFW") ?? false; - const toggleNsfwVisibility = useCallback(() => setShowNSFWContent((prev) => !prev), []); - - const { previewState, openPreview, setPreviewOpen } = useImagePreview(); - - const openEditor = useCallback(() => setShowEditor(true), []); - const closeEditor = useCallback(() => setShowEditor(false), []); - - const location = useLocation(); - const isInMemoDetailPage = location.pathname.startsWith(`/${memoData.name}`); - const showCommentPreview = !isInMemoDetailPage && computeCommentAmount(memoData) > 0; - - const contextValue = useMemo( - () => ({ - memo: memoData, - creator, - currentUser, - parentPage, - isArchived, - readonly, - showNSFWContent, - nsfw, - openEditor, - toggleNsfwVisibility, - openPreview, - }), - [ - memoData, - creator, - currentUser, - parentPage, - isArchived, - readonly, - showNSFWContent, - nsfw, - openEditor, - toggleNsfwVisibility, - openPreview, - ], - ); - - if (showEditor) { - return ( - - ); - } - - const article = ( -
- - - - - -
- ); - - return ( - - {showCommentPreview ? ( -
- {article} - -
- ) : ( - article - )} -
- ); -}; - -export default memo(MemoView); -import { memo, useCallback, useMemo, useRef, useState } from "react"; -import { useLocation } from "react-router-dom"; import { useInstance } from "@/contexts/InstanceContext"; import useCurrentUser from "@/hooks/useCurrentUser"; import { useUser } from "@/hooks/useUserQueries"; @@ -194,7 +77,6 @@ const MemoView: React.FC = (props: MemoViewProps) => { className="mb-2" cacheKey={`inline-memo-editor-${memoData.name}`} memo={memoData} - parentMemoName={memoData.parent || undefined} onConfirm={closeEditor} onCancel={closeEditor} /> @@ -234,4 +116,4 @@ const MemoView: React.FC = (props: MemoViewProps) => { ); }; -export default memo(MemoView); +export default memo(MemoView); \ No newline at end of file diff --git a/web/src/components/MemoView/MemoViewContext.tsx b/web/src/components/MemoView/MemoViewContext.tsx index 3cd7e06d1..c9df07c96 100644 --- a/web/src/components/MemoView/MemoViewContext.tsx +++ b/web/src/components/MemoView/MemoViewContext.tsx @@ -13,10 +13,10 @@ export interface MemoViewContextValue { parentPage: string; isArchived: boolean; readonly: boolean; - showNSFWContent: boolean; - nsfw: boolean; + showBlurredContent: boolean; + blurred: boolean; openEditor: () => void; - toggleNsfwVisibility: () => void; + toggleBlurVisibility: () => void; openPreview: (urls: string | string[], index?: number) => void; } diff --git a/web/src/components/MemoView/types.ts b/web/src/components/MemoView/types.ts index 1d0882bfb..6b1f9c33c 100644 --- a/web/src/components/MemoView/types.ts +++ b/web/src/components/MemoView/types.ts @@ -18,4 +18,4 @@ export interface MemoHeaderProps { export interface MemoBodyProps { compact?: boolean; -} +} \ No newline at end of file diff --git a/web/src/components/VisibilityIcon.tsx b/web/src/components/VisibilityIcon.tsx index 31eb26d28..7bdd65c95 100644 --- a/web/src/components/VisibilityIcon.tsx +++ b/web/src/components/VisibilityIcon.tsx @@ -22,11 +22,7 @@ const VisibilityIcon = (props: Props) => { return null; } -<<<<<<< HEAD - return ; -======= return ; ->>>>>>> 89d43a2e (Developed Color Picker Feature for memos) }; export default VisibilityIcon;