From 7042b04fd7ecc7a48f516175b44c3dfc07e79f9d Mon Sep 17 00:00:00 2001 From: mdwriter-09idI Date: Sat, 28 Oct 2023 20:39:39 +0800 Subject: [PATCH] fix: img load fail in multiple tab --- src/renderer/src/editor/Editor.tsx | 2 +- src/renderer/src/editor/EditorFrame.tsx | 7 ++++++- src/renderer/src/editor/elements/media.tsx | 4 ++-- src/renderer/src/editor/store.ts | 2 ++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/editor/Editor.tsx b/src/renderer/src/editor/Editor.tsx index 9be1eda5..a6ac2524 100644 --- a/src/renderer/src/editor/Editor.tsx +++ b/src/renderer/src/editor/Editor.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useEffect, useMemo, useRef} from 'react' +import React, {useCallback, useEffect, useLayoutEffect, useMemo, useRef} from 'react' import {Editable, Slate} from 'slate-react' import {Editor} from 'slate' import {MElement, MLeaf} from './elements' diff --git a/src/renderer/src/editor/EditorFrame.tsx b/src/renderer/src/editor/EditorFrame.tsx index 0dfe22ca..ef3aabe5 100644 --- a/src/renderer/src/editor/EditorFrame.tsx +++ b/src/renderer/src/editor/EditorFrame.tsx @@ -3,7 +3,7 @@ import {MEditor} from './Editor' import {Heading} from './tools/Leading' import {Empty} from '../components/Empty' import {Tab} from '../index' -import React, {useCallback, useEffect, useMemo} from 'react' +import React, {useCallback, useEffect, useLayoutEffect, useMemo} from 'react' import {EditorStoreContext} from './store' import {FloatBar} from './tools/FloatBar' import {TableAttr} from './tools/TableAttr' @@ -54,6 +54,11 @@ export const EditorFrame = observer(({tab}: { window.electron.ipcRenderer.removeListener('open-search', open) } }, []) + + useLayoutEffect(() => { + tab.store.openFilePath = tab.current?.filePath || null + }, [tab.current]) + const mt = useMemo(() => mediaType(tab.current?.filePath || ''), [tab.current]) const size = useMemo(() => { return { diff --git a/src/renderer/src/editor/elements/media.tsx b/src/renderer/src/editor/elements/media.tsx index 5ac7e817..5d52dc62 100644 --- a/src/renderer/src/editor/elements/media.tsx +++ b/src/renderer/src/editor/elements/media.tsx @@ -58,8 +58,8 @@ export function Media({element, attributes, children}: ElementProps) return } let realUrl = element.url - if (!element.url.startsWith('http') && !element.url.startsWith('file:') && treeStore.openedNote) { - const file = isAbsolute(element.url) ? element.url : join(treeStore.currentTab.current!.filePath, '..', element.url) + if (!element.url.startsWith('http') && !element.url.startsWith('file:')) { + const file = isAbsolute(element.url) ? element.url : join(store.openFilePath || '', '..', element.url) const data = getImageData(file) if (data) { realUrl = data diff --git a/src/renderer/src/editor/store.ts b/src/renderer/src/editor/store.ts index d7617beb..f61490a2 100644 --- a/src/renderer/src/editor/store.ts +++ b/src/renderer/src/editor/store.ts @@ -54,6 +54,7 @@ export class EditorStore { container: null | HTMLDivElement = null history = false inputComposition = false + openFilePath: string | null = null saveDoc$ = new Subject() get doc() { return this.container?.querySelector('.content') as HTMLDivElement @@ -67,6 +68,7 @@ export class EditorStore { editor: false, tableCellNode: false, inputComposition: false, + openFilePath: false, container: false, highlightCache: false, dragEl: false