moved temp file creation logic to api

This commit is contained in:
Abhinav 2022-11-16 15:45:07 +05:30
parent 3e28a7cb82
commit bdaa505518
3 changed files with 33 additions and 36 deletions

View file

@ -1,4 +1,6 @@
import { ipcRenderer } from 'electron';
import { logErrorSentry } from '../services/sentry';
import { deleteTempFile, writeTempFile } from '../services/fs';
import { ElectronFile } from '../types';
export async function runFFmpegCmd(
@ -7,21 +9,29 @@ export async function runFFmpegCmd(
outputFileName: string
) {
let inputFilePath = null;
let inputFileData = null;
let inputFileName = null;
if (!inputFile.path) {
inputFileData = new Uint8Array(await inputFile.arrayBuffer());
inputFileName = inputFile.name;
} else {
inputFilePath = inputFile.path;
let createdTempInputFile = null;
try {
if (!inputFile.path) {
const inputFileData = new Uint8Array(await inputFile.arrayBuffer());
inputFilePath = await writeTempFile(inputFileData, inputFile.name);
createdTempInputFile = true;
} else {
inputFilePath = inputFile.path;
}
const outputFileData = await ipcRenderer.invoke(
'run-ffmpeg-cmd',
cmd,
inputFilePath,
outputFileName
);
return new File([outputFileData], outputFileName);
} finally {
if (createdTempInputFile) {
try {
deleteTempFile(inputFilePath);
} catch (e) {
logErrorSentry(e, 'failed to deleteTempFile');
}
}
}
const outputFileData = await ipcRenderer.invoke(
'run-ffmpeg-cmd',
cmd,
inputFilePath,
inputFileData,
inputFileName,
outputFileName
);
return new File([outputFileData], outputFileName);
}

View file

@ -3,7 +3,7 @@ import path from 'path';
const shellescape = require('any-shell-escape');
import util from 'util';
import log from 'electron-log';
import { readFile, rmSync, writeFile } from 'promise-fs';
import { readFile, rmSync } from 'promise-fs';
import { logErrorSentry } from './sentry';
import { generateTempName, getTempDirPath } from '../utils/temp';
@ -20,22 +20,13 @@ function getFFmpegStaticPath() {
export async function runFFmpegCmd(
cmd: string[],
inputFilePath: string,
inputFileData: Uint8Array,
inputFileName: string,
outputFileName: string
) {
let outputFilePath: string;
let tempOutputFilePath: string;
try {
const tempDirPath = await getTempDirPath();
const tempName = generateTempName(10);
if (!inputFilePath) {
inputFilePath = path.join(
tempDirPath,
tempName + '-' + inputFileName
);
await writeFile(inputFilePath, inputFileData);
}
outputFilePath = path.join(
tempOutputFilePath = path.join(
tempDirPath,
tempName + '-' + outputFileName
);
@ -46,7 +37,7 @@ export async function runFFmpegCmd(
} else if (cmdPart === INPUT_PATH_PLACEHOLDER) {
return inputFilePath;
} else if (cmdPart === OUTPUT_PATH_PLACEHOLDER) {
return outputFilePath;
return tempOutputFilePath;
} else {
return cmdPart;
}
@ -54,13 +45,13 @@ export async function runFFmpegCmd(
cmd = shellescape(cmd);
log.info('cmd', cmd);
await execAsync(cmd);
return new Uint8Array(await readFile(outputFilePath));
return new Uint8Array(await readFile(tempOutputFilePath));
} catch (e) {
logErrorSentry(e, 'ffmpeg run command error');
throw e;
} finally {
try {
rmSync(outputFilePath);
rmSync(tempOutputFilePath);
} catch (e) {
logErrorSentry(e, 'failed to remove tempOutputFile');
}

View file

@ -208,9 +208,5 @@ export async function deleteTempFile(tempFilePath: string) {
'tried to delete a non temp file'
);
}
try {
rmSync(tempFilePath);
} catch (e) {
logErrorSentry(e, 'failed to deleteTempFile');
}
rmSync(tempFilePath);
}