1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-11-23 22:36:32 +02:00

Desktop, Mobile: Move several features from Extra Markdown Editor Settings into the main app (#12747)

This commit is contained in:
Henry Heino
2025-08-10 01:17:12 -07:00
committed by GitHub
parent 46ab00bfe4
commit ea1d2e4878
39 changed files with 1446 additions and 6 deletions

View File

@@ -37,6 +37,9 @@ export const initializeEditor = ({
onEvent: (event): void => {
void messenger.remoteApi.onEditorEvent(event);
},
resolveImageSrc: (src) => {
return messenger.remoteApi.onResolveImageSrc(src);
},
});
// Works around https://github.com/laurent22/joplin/issues/10047 by handling

View File

@@ -22,4 +22,5 @@ export interface MainProcessApi {
onEditorEvent(event: EditorEvent): Promise<void>;
logMessage(message: string): Promise<void>;
onPasteFile(type: string, dataBase64: string): Promise<void>;
onResolveImageSrc(src: string): Promise<string|null>;
}

View File

@@ -7,6 +7,9 @@ import { OnMessageEvent, WebViewControl } from '../../components/ExtendedWebView
import { EditorEvent } from '@joplin/editor/events';
import Logger from '@joplin/utils/Logger';
import RNToWebViewMessenger from '../../utils/ipc/RNToWebViewMessenger';
import Resource from '@joplin/lib/models/Resource';
import { parseResourceUrl } from '@joplin/lib/urlUtils';
const { isImageMimeType } = require('@joplin/lib/resourceUtils');
const logger = Logger.create('markdownEditor');
@@ -109,6 +112,23 @@ const useWebViewSetup = ({
async onPasteFile(type, data) {
onAttachRef.current(type, data);
},
async onResolveImageSrc(src) {
const url = parseResourceUrl(src);
if (!url.itemId) return null;
const item = await Resource.load(url.itemId);
if (shim.mobilePlatform() === 'web') {
// Maximum 6 MiB on web
const maximumSize = 6 * 1024 * 1024;
if (isImageMimeType(item.mime) && item.size < maximumSize) {
const data = await shim.fsDriver().readFile(Resource.fullPath(item), 'base64');
return `data:${item.mime};base64,${data}`;
}
return null;
} else {
return Resource.fullPath(item);
}
},
};
const messenger = new RNToWebViewMessenger<MainProcessApi, EditorProcessApi>(
'markdownEditor', webviewRef, localApi,