1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-07-13 00:10:37 +02:00

Mobile: Fixes #9807: Fix note editor errors/logs not sent to Joplin's logs (#9808)

This commit is contained in:
Henry Heino
2024-02-02 09:54:16 -08:00
committed by GitHub
parent 236d977c41
commit ddbd3601ab

View File

@ -8,7 +8,7 @@ import ExtendedWebView from '../ExtendedWebView';
import * as React from 'react';
import { forwardRef, useImperativeHandle } from 'react';
import { useMemo, useState, useCallback, useRef } from 'react';
import { LayoutChangeEvent, View, ViewStyle } from 'react-native';
import { LayoutChangeEvent, NativeSyntheticEvent, View, ViewStyle } from 'react-native';
const { editorFont } = require('../global-style');
import { EditorControl, EditorSettings, SelectionRange } from './types';
@ -18,12 +18,16 @@ import { ChangeEvent, EditorEvent, EditorEventType, SelectionRangeChangeEvent, U
import { EditorCommandType, EditorKeymap, EditorLanguageType, PluginData, SearchState } from '@joplin/editor/types';
import supportsCommand from '@joplin/editor/CodeMirror/editorCommands/supportsCommand';
import SelectionFormatting, { defaultSelectionFormatting } from '@joplin/editor/SelectionFormatting';
import Logger from '@joplin/utils/Logger';
import { WebViewErrorEvent } from 'react-native-webview/lib/RNCWebViewNativeComponent';
type ChangeEventHandler = (event: ChangeEvent)=> void;
type UndoRedoDepthChangeHandler = (event: UndoRedoDepthChangeEvent)=> void;
type SelectionChangeEventHandler = (event: SelectionRangeChangeEvent)=> void;
type OnAttachCallback = ()=> void;
const logger = Logger.create('NoteEditor');
interface Props {
themeId: number;
initialText: string;
@ -317,7 +321,6 @@ function NoteEditor(props: Props, ref: any) {
"error: " + message + " in file://" + source + ", line " + lineno
);
};
window.onunhandledrejection = (event) => {
window.ReactNativeWebView.postMessage(
"error: Unhandled promise rejection: " + event
@ -374,7 +377,7 @@ function NoteEditor(props: Props, ref: any) {
const data = event.nativeEvent.data;
if (data.indexOf('error:') === 0) {
console.error('CodeMirror:', data);
logger.error('CodeMirror:', data);
return;
}
@ -383,8 +386,7 @@ function NoteEditor(props: Props, ref: any) {
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
const handlers: Record<string, Function> = {
onLog: (event: any) => {
// eslint-disable-next-line no-console
console.info('CodeMirror:', ...event.value);
logger.info('CodeMirror:', ...event.value);
},
onEditorEvent: (event: EditorEvent) => {
@ -428,13 +430,12 @@ function NoteEditor(props: Props, ref: any) {
if (handlers[msg.name]) {
handlers[msg.name](msg.data);
} else {
// eslint-disable-next-line no-console
console.info('Unsupported CodeMirror message:', msg);
logger.warn('Unsupported CodeMirror message:', msg);
}
}, [props.onSelectionChange, props.onUndoRedoDepthChange, props.onChange, editorControl]);
const onError = useCallback(() => {
console.error('NoteEditor: webview error');
const onError = useCallback((event: NativeSyntheticEvent<WebViewErrorEvent>) => {
logger.error(`Load error: Code ${event.nativeEvent.code}: ${event.nativeEvent.description}`);
}, []);
const [hasSpaceForToolbar, setHasSpaceForToolbar] = useState(true);