From 18bf706c60d2e9a6019aa0579f73d75df528347e Mon Sep 17 00:00:00 2001 From: sijumoncy <72241997+sijumoncy@users.noreply.github.com> Date: Mon, 6 Nov 2023 13:57:17 +0530 Subject: [PATCH 01/10] default audio extension changed as per selection --- .../projects/Export/ExportProjectPopUp.js | 190 ++++++++++-------- .../layouts/projects/Export/ExportUtils.js | 14 +- 2 files changed, 114 insertions(+), 90 deletions(-) diff --git a/renderer/src/layouts/projects/Export/ExportProjectPopUp.js b/renderer/src/layouts/projects/Export/ExportProjectPopUp.js index e1e072a7c..d2c34aa34 100644 --- a/renderer/src/layouts/projects/Export/ExportProjectPopUp.js +++ b/renderer/src/layouts/projects/Export/ExportProjectPopUp.js @@ -12,6 +12,7 @@ import updateObsSB from '@/core/burrito/updateObsSB'; import { SnackBar } from '@/components/SnackBar'; // import useSystemNotification from '@/components/hooks/useSystemNotification'; import { LoadingSpinner } from '@/components/LoadingSpinner'; +import CustomMultiComboBox from '@/components/Resources/ResourceUtils/CustomMultiComboBox'; import CloseIcon from '@/illustrations/close-button-black.svg'; import { validate } from '../../../util/validate'; import * as logger from '../../../logger'; @@ -21,6 +22,8 @@ import { ProgressCircle } from '../../../components/ProgressCircle'; import { exportDefaultAudio, exportFullAudio } from './ExportUtils'; import packageInfo from '../../../../../package.json'; +const audioExportFormats = { wav: { ext: 'wav', mimeType: 'audio/wav' }, mp3: { ext: 'mp3', mimeType: 'audio/mp3' } }; + export default function ExportProjectPopUp(props) { const { open, @@ -43,6 +46,8 @@ export default function ExportProjectPopUp(props) { const [totalExports, setTotalExports] = React.useState(0); const [exportStart, setExportstart] = React.useState(false); + const [selectedAudioExt, setSelectedAudioExt] = React.useState(audioExportFormats.wav); + // const { pushNotification } = useSystemNotification(); function resetExportProgress() { @@ -62,6 +67,7 @@ export default function ExportProjectPopUp(props) { setValid(false); setMetadata({}); setCheckText(false); + setSelectedAudioExt(audioExportFormats.wav); } } @@ -87,60 +93,60 @@ export default function ExportProjectPopUp(props) { const updateCommon = (fs, path, folder, project) => { const fse = window.require('fs-extra'); logger.debug('ExportProjectPopUp.js', 'Updated Scripture burrito'); - let data = fs.readFileSync(path.join(folder, 'metadata.json'), 'utf-8'); - const sb = JSON.parse(data); - if (!sb.copyright?.shortStatements && sb.copyright?.licenses) { - delete sb.copyright.publicDomain; - data = JSON.stringify(sb); - } - const success = validate('metadata', path.join(folder, 'metadata.json'), data, sb.meta.version); - if (success) { - logger.debug('ExportProjectPopUp.js', 'Burrito validated successfully'); - fse.copy(folder, path.join(folderPath, project.name)) - .then(() => { - deleteGitAfterCopy(fs, path.join(folderPath, project.name), path) - .then(() => { - resetExportProgress(); // reset export states - logger.debug('ExportProjectPopUp.js', 'Exported Successfully'); - setNotify('success'); - setSnackText(t('dynamic-msg-export-success')); - setOpenSnackBar(true); - closePopUp(false); - }); - }) - .catch((err) => { - resetExportProgress(); // reset export states - logger.error('ExportProjectPopUp.js', `Failed to export ${err}`); - setNotify('failure'); - setSnackText(t('dynamic-msg-export-fail')); - setOpenSnackBar(true); - closePopUp(false); - }); - } + let data = fs.readFileSync(path.join(folder, 'metadata.json'), 'utf-8'); + const sb = JSON.parse(data); + if (!sb.copyright?.shortStatements && sb.copyright?.licenses) { + delete sb.copyright.publicDomain; + data = JSON.stringify(sb); + } + const success = validate('metadata', path.join(folder, 'metadata.json'), data, sb.meta.version); + if (success) { + logger.debug('ExportProjectPopUp.js', 'Burrito validated successfully'); + fse.copy(folder, path.join(folderPath, project.name)) + .then(() => { + deleteGitAfterCopy(fs, path.join(folderPath, project.name), path) + .then(() => { + resetExportProgress(); // reset export states + logger.debug('ExportProjectPopUp.js', 'Exported Successfully'); + setNotify('success'); + setSnackText(t('dynamic-msg-export-success')); + setOpenSnackBar(true); + closePopUp(false); + }); + }) + .catch((err) => { + resetExportProgress(); // reset export states + logger.error('ExportProjectPopUp.js', `Failed to export ${err}`); + setNotify('failure'); + setSnackText(t('dynamic-msg-export-fail')); + setOpenSnackBar(true); + closePopUp(false); + }); + } }; const updateBurritoVersion = (username, fs, path, folder) => { setTotalExported(1); // 1 step of 2 finished if (project?.type === 'Text Translation') { - updateTranslationSB(username, project, openModal) + updateTranslationSB(username, project, openModal) .then(() => { updateCommon(fs, path, folder, project); }); - } else if (project?.type === 'OBS') { - updateObsSB(username, project, openModal) + } else if (project?.type === 'OBS') { + updateObsSB(username, project, openModal) .then(() => { updateCommon(fs, path, folder, project); }); - } + } setOpenModal(false); }; const ExportActions = { setNotify, setSnackText, setOpenSnackBar, setTotalExported, setTotalExports, setExportstart, resetExportProgress, setCheckText, - }; - const ExportStates = { + }; + const ExportStates = { checkText, audioExport, folderPath, project, exportStart, - }; + }; const exportBible = async () => { const fs = window.require('fs'); @@ -160,18 +166,18 @@ export default function ExportProjectPopUp(props) { setExportstart(true); // export start for all type of export if (project?.type === 'Audio') { if (audioExport === 'default' || audioExport === 'chapter') { - exportDefaultAudio(metadata, folder, path, fs, ExportActions, ExportStates, closePopUp, t); + exportDefaultAudio(metadata, folder, path, fs, ExportActions, ExportStates, closePopUp, t, selectedAudioExt); } else { setTotalExports(3);// 3 step process - exportFullAudio(metadata, folder, path, fs, ExportActions, ExportStates, closePopUp, t); + exportFullAudio(metadata, folder, path, fs, ExportActions, ExportStates, closePopUp, t, selectedAudioExt); } } else if (burrito?.meta?.version !== metadata?.meta?.version) { - setTotalExports(2); // total 2 steps process - setOpenModal(true); + setTotalExports(2); // total 2 steps process + setOpenModal(true); } else { - setTotalExports(2); // total 2 steps process - updateBurritoVersion(username, fs, path, folder); - } + setTotalExports(2); // total 2 steps process + updateBurritoVersion(username, fs, path, folder); + } }); } else { logger.warn('ExportProjectPopUp.js', 'Invalid Path'); @@ -181,6 +187,7 @@ export default function ExportProjectPopUp(props) { setOpenSnackBar(true); } }; + return ( <>