diff --git a/apps/web/src/components/EditorPane.tsx b/apps/web/src/components/EditorPane.tsx index fa4c9d54..d46ec464 100644 --- a/apps/web/src/components/EditorPane.tsx +++ b/apps/web/src/components/EditorPane.tsx @@ -50,7 +50,6 @@ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from "@ import { EditorToolbar } from "./EditorToolbar"; import { RevisionHistoryDialog } from "./dialogs/RevisionHistoryDialog"; import { api } from "@/lib/api"; -import { consumeStandaloneMobileEditorReturn, openStandaloneMobileEditor } from "@/lib/mobile-editor"; import { cn, formatDateTime, parseTagsText } from "@/lib/utils"; import { docToMarkdown, markdownToDoc, type Notebook, type MemoDetail, type TiptapDoc } from "@edgeever/shared"; import { compressImageForUpload } from "@/lib/image-compression"; @@ -931,96 +930,7 @@ const MobileNativeEditorPane = ({ }; export const EditorPane = (props: EditorPaneProps) => { - const [isMobileViewport, setIsMobileViewport] = useState(() => - typeof window === "undefined" ? false : window.matchMedia(MOBILE_EDITOR_QUERY).matches - ); - const [mobileNativeEditMemoId, setMobileNativeEditMemoId] = useState(null); - const standaloneOpenMemoIdRef = useRef(null); - const readOnly = props.isTrashView || Boolean(props.memo?.isDeleted); - const mobileDefaultEditRequested = Boolean( - props.memo?.id && props.memo.id === props.mobileDefaultEditMemoId && !readOnly - ); - const mobileNativeEditingActive = Boolean( - isMobileViewport && - props.memo && - !readOnly && - (mobileDefaultEditRequested || mobileNativeEditMemoId === props.memo.id) - ); - - useEffect(() => { - if (isMobileViewport && mobileDefaultEditRequested && props.memo?.id) { - if (consumeStandaloneMobileEditorReturn(props.memo.id)) { - props.onMobileDefaultEditConsumed(); - setMobileNativeEditMemoId(null); - props.onBackToList(); - return; - } - - if (standaloneOpenMemoIdRef.current === props.memo.id) { - return; - } - - standaloneOpenMemoIdRef.current = props.memo.id; - props.onMobileDefaultEditConsumed(); - openStandaloneMobileEditor(props.memo.id); - } - }, [isMobileViewport, mobileDefaultEditRequested, props.memo?.id, props.onBackToList, props.onMobileDefaultEditConsumed]); - - useEffect(() => { - const clearReturnedStandaloneEditor = () => { - if (!consumeStandaloneMobileEditorReturn(props.memo?.id ?? null)) { - return; - } - - props.onMobileDefaultEditConsumed(); - setMobileNativeEditMemoId(null); - props.onBackToList(); - }; - - clearReturnedStandaloneEditor(); - window.addEventListener("pageshow", clearReturnedStandaloneEditor); - document.addEventListener("visibilitychange", clearReturnedStandaloneEditor); - - return () => { - window.removeEventListener("pageshow", clearReturnedStandaloneEditor); - document.removeEventListener("visibilitychange", clearReturnedStandaloneEditor); - }; - }, [props.memo?.id, props.onBackToList, props.onMobileDefaultEditConsumed]); - - useEffect(() => { - const mediaQuery = window.matchMedia(MOBILE_EDITOR_QUERY); - const updateMobileViewport = () => setIsMobileViewport(mediaQuery.matches); - - updateMobileViewport(); - mediaQuery.addEventListener("change", updateMobileViewport); - - return () => mediaQuery.removeEventListener("change", updateMobileViewport); - }, []); - - useEffect(() => { - setMobileNativeEditMemoId(null); - }, [props.memo?.id]); - - if (mobileNativeEditingActive) { - return ( -
- 打开编辑器 -
- ); - } - - return ( - { - if (props.memo?.id && !readOnly) { - setMobileNativeEditMemoId(props.memo.id); - openStandaloneMobileEditor(props.memo.id); - } - }} - /> - ); + return ; }; const RichEditorPane = ({ diff --git a/apps/web/src/components/WorkspaceApp.tsx b/apps/web/src/components/WorkspaceApp.tsx index 746f0fd1..2d91c466 100644 --- a/apps/web/src/components/WorkspaceApp.tsx +++ b/apps/web/src/components/WorkspaceApp.tsx @@ -27,7 +27,7 @@ import { import { MemoListPane, MemoSelectionActionBar } from "./MemoListPane"; import { AppConfirmDialog, MemoDeleteConfirmDialog, NotebookNameDialog } from "./dialogs/ConfirmDialogs"; import { api } from "@/lib/api"; -import { MOBILE_EDITOR_RETURN_PARAM, openStandaloneMobileEditor } from "@/lib/mobile-editor"; +import { MOBILE_EDITOR_RETURN_PARAM } from "@/lib/mobile-editor"; import { cn } from "@/lib/utils"; import { createExcerpt, docToText, type Notebook, type AuthUser, type MemoSummary, type MemoDetail } from "@edgeever/shared"; import type { @@ -1296,9 +1296,6 @@ export const WorkspaceApp = ({ setSelectedMemoId(data.memo.id); setActivePane("editor"); - if (!isDesktopViewport()) { - openStandaloneMobileEditor(data.memo.id); - } }, }); diff --git a/apps/web/src/mobile-edit.tsx b/apps/web/src/mobile-edit.tsx index a37b0696..ccbdc3b5 100644 --- a/apps/web/src/mobile-edit.tsx +++ b/apps/web/src/mobile-edit.tsx @@ -1,16 +1,4 @@ -import React from "react"; -import { createRoot } from "react-dom/client"; -import { MobileStandaloneTiptapEditor } from "@/components/MobileStandaloneTiptapEditor"; -import "./styles/mobile-markdown-editor.css"; +const params = new URLSearchParams(window.location.hash ? window.location.hash.slice(1) : window.location.search); +const returnTo = params.get("returnTo"); -const root = document.getElementById("mobile-editor-root"); - -if (!root) { - throw new Error("Mobile editor root not found"); -} - -createRoot(root).render( - - - -); +window.location.replace(returnTo?.startsWith("/") ? returnTo : "/");