From 546b702e7a7f4e5ddd1587707f9930820cc44703 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Tue, 30 Mar 2021 18:05:41 +0700 Subject: [PATCH] refactor --- src/App.jsx | 14 ++------ src/{merge => }/SortableFiles.jsx | 0 src/dialogs.jsx | 56 ++++++++++++++++++++++++++++++- src/merge/merge.jsx | 54 ----------------------------- 4 files changed, 57 insertions(+), 67 deletions(-) rename src/{merge => }/SortableFiles.jsx (100%) delete mode 100644 src/merge/merge.jsx diff --git a/src/App.jsx b/src/App.jsx index 102ce6bb..c9eb1dcd 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -37,7 +37,6 @@ import ExportConfirm from './ExportConfirm'; import ValueTuner from './components/ValueTuner'; import { loadMifiLink } from './mifi'; import { primaryColor, controlsBackground, waveformColor } from './colors'; -import { showMergeDialog, showOpenAndMergeDialog } from './merge/merge'; import allOutFormats from './outFormats'; import { captureFrameFromTag, captureFrameFfmpeg } from './capture-frame'; import { @@ -56,7 +55,7 @@ import { hasDuplicates, havePermissionToReadFile, } from './util'; import { formatDuration } from './util/duration'; -import { askForOutDir, askForImportChapters, createNumSegments, createFixedDurationSegments, promptTimeOffset, askForHtml5ifySpeed, askForYouTubeInput, askForFileOpenAction, confirmExtractAllStreamsDialog, cleanupFilesDialog, showDiskFull, showCutFailedDialog, labelSegmentDialog, openYouTubeChaptersDialog } from './dialogs'; +import { askForOutDir, askForImportChapters, createNumSegments, createFixedDurationSegments, promptTimeOffset, askForHtml5ifySpeed, askForYouTubeInput, askForFileOpenAction, confirmExtractAllStreamsDialog, cleanupFilesDialog, showDiskFull, showCutFailedDialog, labelSegmentDialog, openYouTubeChaptersDialog, showMergeDialog, showOpenAndMergeDialog, openAbout } from './dialogs'; import { openSendReportDialog } from './reporting'; import { fallbackLng } from './i18n'; import { createSegment, createInitialCutSegments, getCleanCutSegments, getSegApparentStart, findSegmentsAtCursor, sortSegments, invertSegments } from './segments'; @@ -71,7 +70,7 @@ const trash = window.require('trash'); const { unlink, exists } = window.require('fs-extra'); const { extname, parse: parsePath, sep: pathSep, join: pathJoin, normalize: pathNormalize, resolve: pathResolve, isAbsolute: pathIsAbsolute } = window.require('path'); -const { dialog, app } = electron.remote; +const { dialog } = electron.remote; const { focusWindow } = electron.remote.require('./electron'); @@ -1652,7 +1651,6 @@ const App = memo(() => { useEffect(() => { function showOpenAndMergeDialog2() { showOpenAndMergeDialog({ - dialog, defaultPath: outputDir, onMergeClick: mergeFiles, }); @@ -1724,14 +1722,6 @@ const App = memo(() => { await loadEdlFile(filePaths[0], type); } - function openAbout() { - Swal.fire({ - icon: 'info', - title: 'About LosslessCut', - text: `You are running version ${app.getVersion()}`, - }); - } - async function batchConvertFriendlyFormat() { const title = i18n.t('Select files to batch convert to supported format'); const { canceled, filePaths } = await dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'], title, message: title }); diff --git a/src/merge/SortableFiles.jsx b/src/SortableFiles.jsx similarity index 100% rename from src/merge/SortableFiles.jsx rename to src/SortableFiles.jsx diff --git a/src/dialogs.jsx b/src/dialogs.jsx index 6154301d..08f10645 100644 --- a/src/dialogs.jsx +++ b/src/dialogs.jsx @@ -7,10 +7,13 @@ import withReactContent from 'sweetalert2-react-content'; import { parseDuration } from './util/duration'; import { parseYouTube } from './edlFormats'; import CopyClipboardButton from './components/CopyClipboardButton'; +import { errorToast } from './util'; + +import SortableFiles from './SortableFiles'; const electron = window.require('electron'); // eslint-disable-line -const { dialog } = electron.remote; +const { dialog, app } = electron.remote; const ReactSwal = withReactContent(Swal); @@ -296,3 +299,54 @@ export async function labelSegmentDialog(currentName) { }); return value; } + +export function openAbout() { + Swal.fire({ + icon: 'info', + title: 'About LosslessCut', + text: `You are running version ${app.getVersion()}`, + }); +} + +export async function showMergeDialog(paths, onMergeClick) { + if (!paths) return; + if (paths.length < 2) { + errorToast(i18n.t('More than one file must be selected')); + return; + } + + let swalElem; + let outPaths = paths; + let allStreams = false; + let segmentsToChapters = false; + const { dismiss } = await ReactSwal.fire({ + width: '90%', + showCancelButton: true, + confirmButtonText: i18n.t('Merge!'), + onBeforeOpen: (el) => { swalElem = el; }, + html: ( { outPaths = val; }} + onAllStreamsChange={(val) => { allStreams = val; }} + onSegmentsToChaptersChange={(val) => { segmentsToChapters = val; }} + helperContainer={() => swalElem} + />), + }); + + if (!dismiss) { + await onMergeClick({ paths: outPaths, allStreams, segmentsToChapters }); + } +} + +export async function showOpenAndMergeDialog({ defaultPath, onMergeClick }) { + const title = i18n.t('Please select files to be merged'); + const message = i18n.t('Please select files to be merged. The files need to be of the exact same format and codecs'); + const { canceled, filePaths } = await dialog.showOpenDialog({ + title, + defaultPath, + properties: ['openFile', 'multiSelections'], + message, + }); + if (canceled) return; + showMergeDialog(filePaths, onMergeClick); +} diff --git a/src/merge/merge.jsx b/src/merge/merge.jsx deleted file mode 100644 index 6cb047c6..00000000 --- a/src/merge/merge.jsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react'; -import swal from 'sweetalert2'; -import i18n from 'i18next'; -import withReactContent from 'sweetalert2-react-content'; - -import SortableFiles from './SortableFiles'; - - -import { errorToast } from '../util'; - -const MySwal = withReactContent(swal); - -export async function showMergeDialog(paths, onMergeClick) { - if (!paths) return; - if (paths.length < 2) { - errorToast(i18n.t('More than one file must be selected')); - return; - } - - let swalElem; - let outPaths = paths; - let allStreams = false; - let segmentsToChapters = false; - const { dismiss } = await MySwal.fire({ - width: '90%', - showCancelButton: true, - confirmButtonText: i18n.t('Merge!'), - onBeforeOpen: (el) => { swalElem = el; }, - html: ( { outPaths = val; }} - onAllStreamsChange={(val) => { allStreams = val; }} - onSegmentsToChaptersChange={(val) => { segmentsToChapters = val; }} - helperContainer={() => swalElem} - />), - }); - - if (!dismiss) { - await onMergeClick({ paths: outPaths, allStreams, segmentsToChapters }); - } -} - -export async function showOpenAndMergeDialog({ dialog, defaultPath, onMergeClick }) { - const title = i18n.t('Please select files to be merged'); - const message = i18n.t('Please select files to be merged. The files need to be of the exact same format and codecs'); - const { canceled, filePaths } = await dialog.showOpenDialog({ - title, - defaultPath, - properties: ['openFile', 'multiSelections'], - message, - }); - if (canceled) return; - showMergeDialog(filePaths, onMergeClick); -}