diff --git a/web/src/pages/MemoDetail.tsx b/web/src/pages/MemoDetail.tsx
index 15421fa5..3dee3c4b 100644
--- a/web/src/pages/MemoDetail.tsx
+++ b/web/src/pages/MemoDetail.tsx
@@ -1,30 +1,17 @@
-import { Select, Tooltip, Option, IconButton } from "@mui/joy";
-import copy from "copy-to-clipboard";
import { ClientError } from "nice-grpc-web";
import { useEffect, useState } from "react";
import { toast } from "react-hot-toast";
import { Link, useParams } from "react-router-dom";
import Icon from "@/components/Icon";
-import MemoActionMenu from "@/components/MemoActionMenu";
-import MemoContent from "@/components/MemoContent";
import MemoEditor from "@/components/MemoEditor";
-import showMemoEditorDialog from "@/components/MemoEditor/MemoEditorDialog";
-import MemoRelationListView from "@/components/MemoRelationListView";
-import MemoResourceListView from "@/components/MemoResourceListView";
import MemoView from "@/components/MemoView";
import MobileHeader from "@/components/MobileHeader";
-import showShareMemoDialog from "@/components/ShareMemoDialog";
-import UserAvatar from "@/components/UserAvatar";
-import VisibilityIcon from "@/components/VisibilityIcon";
-import { getDateTimeString } from "@/helpers/datetime";
import useCurrentUser from "@/hooks/useCurrentUser";
import useNavigateTo from "@/hooks/useNavigateTo";
-import { useUserStore, useMemoStore, extractUsernameFromName } from "@/store/v1";
+import { useMemoStore } from "@/store/v1";
import { MemoRelation_Type } from "@/types/proto/api/v2/memo_relation_service";
-import { Memo, Visibility } from "@/types/proto/api/v2/memo_service";
-import { User } from "@/types/proto/api/v2/user_service";
+import { Memo } from "@/types/proto/api/v2/memo_service";
import { useTranslate } from "@/utils/i18n";
-import { convertVisibilityToString } from "@/utils/memo";
const MemoDetail = () => {
const t = useTranslate();
@@ -32,30 +19,20 @@ const MemoDetail = () => {
const navigateTo = useNavigateTo();
const currentUser = useCurrentUser();
const memoStore = useMemoStore();
- const userStore = useUserStore();
- const [creator, setCreator] = useState
();
const memoName = params.memoName;
const memo = memoStore.getMemoByName(memoName || "");
const [parentMemo, setParentMemo] = useState(undefined);
- const referenceRelations = memo?.relations.filter((relation) => relation.type === MemoRelation_Type.REFERENCE) || [];
const commentRelations =
memo?.relations.filter((relation) => relation.relatedMemoId === memo?.id && relation.type === MemoRelation_Type.COMMENT) || [];
const comments = commentRelations.map((relation) => memoStore.getMemoById(relation.memoId)).filter((memo) => memo) as any as Memo[];
- const readonly = memo?.creatorId !== currentUser?.id;
// Prepare memo.
useEffect(() => {
if (memoName) {
- memoStore
- .getOrFetchMemoByName(memoName)
- .then(async (memo) => {
- const user = await userStore.getOrFetchUserByUsername(extractUsernameFromName(memo.creator));
- setCreator(user);
- })
- .catch((error: ClientError) => {
- toast.error(error.details);
- navigateTo("/403");
- });
+ memoStore.getOrFetchMemoByName(memoName).catch((error: ClientError) => {
+ toast.error(error.details);
+ navigateTo("/403");
+ });
} else {
navigateTo("/404");
}
@@ -83,130 +60,28 @@ const MemoDetail = () => {
return null;
}
- const handleMemoVisibilityOptionChanged = async (visibility: Visibility) => {
- await memoStore.updateMemo(
- {
- id: memo.id,
- visibility: visibility,
- },
- ["visibility"],
- );
- };
-
- const handleEditMemoClick = () => {
- showMemoEditorDialog({
- memoId: memo.id,
- cacheKey: `${memo.id}-${memo.updateTime}`,
- });
- };
-
- const handleCopyLinkBtnClick = () => {
- copy(`${window.location.origin}/m/${memo.name}`);
- if (memo.visibility !== Visibility.PUBLIC) {
- toast.success(t("message.succeed-copy-link-not-public"));
- } else {
- toast.success(t("message.succeed-copy-link"));
- }
- };
-
const handleCommentCreated = async (commentId: number) => {
await memoStore.getOrFetchMemoById(commentId);
await memoStore.getOrFetchMemoById(memo.id, { skipCache: true });
};
- const handleMemoArchived = () => {
- navigateTo("/archived");
- toast.success("Memo archived");
- };
-
- const handleMemoDeleted = () => {
- navigateTo("/");
- toast.success("Memo deleted");
- };
-
return (
-
-
-
-
-
-
- {creator?.nickname}
- {getDateTimeString(memo.displayTime)}
-
-
+ {parentMemo && (
+
+
+
+ {parentMemo.content}
- {parentMemo && (
-
-
-
- {parentMemo.content}
-
-
- )}
-
-
-
-
-
- {!readonly && (
- }
- onChange={(_, visibility) => {
- if (visibility) {
- handleMemoVisibilityOptionChanged(visibility);
- }
- }}
- >
- {[Visibility.PRIVATE, Visibility.PROTECTED, Visibility.PUBLIC].map((item) => (
-
- ))}
-
- )}
-
-
- {!readonly && (
-
-
-
-
-
- )}
-
-
-
-
-
-
- showShareMemoDialog(memo.id)}>
-
-
-
- {!readonly && (
-
- )}
-
-
-
+ )}
+
{comments.map((comment) => (
-
+
))}
>
)}