1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-01-02 12:47:41 +02:00

Desktop: Fixes #7528: Fixed crash when closing PDF

This commit is contained in:
Laurent Cozic 2022-12-31 00:36:16 +00:00
parent 0db0a565b7
commit 49e444e73b

View File

@ -64,28 +64,31 @@ export default function PdfViewer(props: Props) {
menu.popup(bridge().window());
}, [props.dispatch]);
useEffect(() => {
const onMessage_ = async (event: any) =>{
if (!event.data || !event.data.name) {
return;
}
const onMessage_ = useCallback(async (event: any) => {
if (!event.data || !event.data.name) {
return;
}
if (event.data.name === 'close') {
onClose();
} else if (event.data.name === 'externalViewer') {
await openExternalViewer();
} else if (event.data.name === 'textSelected') {
await textSelected(event.data.text);
} else {
console.error('Unknown event received', event.data.name);
}
};
if (event.data.name === 'close') {
onClose();
} else if (event.data.name === 'externalViewer') {
await openExternalViewer();
} else if (event.data.name === 'textSelected') {
await textSelected(event.data.text);
} else {
console.error('Unknown event received', event.data.name);
}
}, [openExternalViewer, textSelected, onClose]);
useEffect(() => {
const iframe = iframeRef.current;
iframe.contentWindow.addEventListener('message', onMessage_);
return () => {
iframe.contentWindow.removeEventListener('message', onMessage_);
// iframe.contentWindow is not always defined
// https://github.com/laurent22/joplin/issues/7528
if (iframe.contentWindow) iframe.contentWindow.removeEventListener('message', onMessage_);
};
}, [onClose, openExternalViewer, textSelected]);
}, [onMessage_]);
const theme = themeStyle(props.themeId);