mirror of https://github.com/usememos/memos
refactor: streamline MemoView component and related hooks, removing unused code and integrating user data
parent
64ae13839a
commit
40585607f4
@ -1,8 +1,6 @@
|
||||
export { useImagePreview } from "./useImagePreview";
|
||||
export { useKeyboardShortcuts } from "./useKeyboardShortcuts";
|
||||
export { useMemoActions } from "./useMemoActions";
|
||||
export { useMemoCreator } from "./useMemoCreator";
|
||||
export { useMemoEditor } from "./useMemoEditor";
|
||||
export { useMemoHandlers } from "./useMemoHandlers";
|
||||
export { useMemoViewDerivedState } from "./useMemoViewDerivedState";
|
||||
export { useNsfwContent } from "./useNsfwContent";
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
import { useUser } from "@/hooks/useUserQueries";
|
||||
|
||||
export const useMemoCreator = (creatorName: string) => {
|
||||
const { data: creator } = useUser(creatorName);
|
||||
return creator;
|
||||
};
|
||||
@ -1,14 +0,0 @@
|
||||
import { useState } from "react";
|
||||
|
||||
export const useMemoEditor = () => {
|
||||
const [showEditor, setShowEditor] = useState(false);
|
||||
|
||||
return {
|
||||
showEditor,
|
||||
openEditor: () => setShowEditor(true),
|
||||
handleEditorConfirm: () => {
|
||||
setShowEditor(false);
|
||||
},
|
||||
handleEditorCancel: () => setShowEditor(false),
|
||||
};
|
||||
};
|
||||
@ -1,28 +1,16 @@
|
||||
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import useCurrentUser from "@/hooks/useCurrentUser";
|
||||
import { State } from "@/types/proto/api/v1/common_pb";
|
||||
import type { Memo } from "@/types/proto/api/v1/memo_service_pb";
|
||||
import { MemoRelation_Type } from "@/types/proto/api/v1/memo_service_pb";
|
||||
import { isSuperUser } from "@/utils/user";
|
||||
import { RELATIVE_TIME_THRESHOLD_MS } from "../constants";
|
||||
|
||||
export const useMemoViewDerivedState = (memo: Memo, parentPageProp?: string) => {
|
||||
const location = useLocation();
|
||||
const user = useCurrentUser();
|
||||
|
||||
const commentAmount = memo.relations.filter(
|
||||
(relation) => relation.type === MemoRelation_Type.COMMENT && relation.relatedMemo?.name === memo.name,
|
||||
).length;
|
||||
|
||||
const displayTime = memo.displayTime ? timestampDate(memo.displayTime) : undefined;
|
||||
const relativeTimeFormat: "datetime" | "auto" =
|
||||
displayTime && Date.now() - displayTime.getTime() > RELATIVE_TIME_THRESHOLD_MS ? "datetime" : "auto";
|
||||
|
||||
const isArchived = memo.state === State.ARCHIVED;
|
||||
const readonly = memo.creator !== user?.name && !isSuperUser(user);
|
||||
const isInMemoDetailPage = location.pathname.startsWith(`/${memo.name}`);
|
||||
const parentPage = parentPageProp || location.pathname;
|
||||
|
||||
return { commentAmount, relativeTimeFormat, isArchived, readonly, isInMemoDetailPage, parentPage };
|
||||
return { isArchived, readonly, parentPage };
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue