From d4493aed95f8303108c52ba51fce18a5a994e185 Mon Sep 17 00:00:00 2001 From: Tilman Vatteroth Date: Sun, 21 Aug 2022 12:33:01 +0200 Subject: [PATCH] improve: Refactor use-code-mirror-file-insert-extension Signed-off-by: Tilman Vatteroth --- .../use-code-mirror-file-insert-extension.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/components/editor-page/editor-pane/hooks/code-mirror-extensions/use-code-mirror-file-insert-extension.ts b/src/components/editor-page/editor-pane/hooks/code-mirror-extensions/use-code-mirror-file-insert-extension.ts index 00f50200b..74b04a537 100644 --- a/src/components/editor-page/editor-pane/hooks/code-mirror-extensions/use-code-mirror-file-insert-extension.ts +++ b/src/components/editor-page/editor-pane/hooks/code-mirror-extensions/use-code-mirror-file-insert-extension.ts @@ -9,7 +9,6 @@ import { EditorView } from '@codemirror/view' import type { Extension } from '@codemirror/state' import { handleUpload } from '../use-handle-upload' import { Optional } from '@mrdrogdrog/optional' -import type { CursorSelection } from '../../tool-bar/formatters/types/cursor-selection' const calculateCursorPositionInEditor = (view: EditorView, event: MouseEvent): number => { return Optional.ofNullable(event.pageX) @@ -21,14 +20,10 @@ const calculateCursorPositionInEditor = (view: EditorView, event: MouseEvent): n .orElse(view.state.selection.main.head) } -const processFileList = (view: EditorView, fileList?: FileList, cursorSelection?: CursorSelection): boolean => { +const extractFirstFile = (fileList?: FileList): Optional => { return Optional.ofNullable(fileList) .filter((files) => files.length > 0) - .map((files) => { - handleUpload(view, files[0], cursorSelection) - return true - }) - .orElse(false) + .map((files) => files[0]) } /** @@ -40,11 +35,16 @@ export const useCodeMirrorFileInsertExtension = (): Extension => { return useMemo(() => { return EditorView.domEventHandlers({ drop: (event, view) => { - processFileList(view, event.dataTransfer?.files, { from: calculateCursorPositionInEditor(view, event) }) && + extractFirstFile(event.dataTransfer?.files).ifPresent((file) => { + handleUpload(view, file, { from: calculateCursorPositionInEditor(view, event) }) event.preventDefault() + }) }, paste: (event, view) => { - processFileList(view, event.clipboardData?.files) && event.preventDefault() + extractFirstFile(event.clipboardData?.files).ifPresent((file) => { + handleUpload(view, file) + event.preventDefault() + }) } }) }, [])