workaround trashItem issue #29598

fixes #1381
pull/1255/head
Mikael Finstad 2023-01-15 17:55:14 +08:00
rodzic 9306c8aa4c
commit e9c96ce563
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 25AB36E3E81CBC26
2 zmienionych plików z 16 dodań i 7 usunięć

Wyświetl plik

@ -9,6 +9,7 @@ const debounce = require('lodash/debounce');
const yargsParser = require('yargs-parser');
const JSON5 = require('json5');
const remote = require('@electron/remote/main');
const { stat } = require('fs/promises');
const logger = require('./logger');
const menu = require('./menu');
@ -18,8 +19,7 @@ const { checkNewVersion } = require('./update-checker');
require('./i18n');
const { app, ipcMain } = electron;
const { BrowserWindow } = electron;
const { app, ipcMain, shell, BrowserWindow } = electron;
remote.initialize();
@ -243,6 +243,15 @@ if (!argv.allowMultipleInstances && !safeRequestSingleInstanceLock({ argv: proce
ipcMain.on('setLanguage', (e, language) => {
i18n.changeLanguage(language).then(() => updateMenu()).catch((err) => logger.error('Failed to set language', err));
});
ipcMain.handle('tryTrashItem', async (e, path) => {
try {
await stat(path);
} catch (err) {
if (err.code === 'ENOENT') return;
}
await shell.trashItem(path);
});
}
function focusWindow() {

Wyświetl plik

@ -9,13 +9,13 @@ import isDev from './isDev';
const { dirname, parse: parsePath, join, basename, extname, isAbsolute, resolve } = window.require('path');
const fs = window.require('fs-extra');
const os = window.require('os');
const { shell } = window.require('electron');
const { ipcRenderer } = window.require('electron');
const remote = window.require('@electron/remote');
const { readdir, unlink } = fs;
const trash = async (path) => shell.trashItem(path);
const trashFile = async (path) => ipcRenderer.invoke('tryTrashItem', path);
export function getFileDir(filePath) {
return filePath ? dirname(filePath) : undefined;
@ -264,7 +264,7 @@ export async function deleteFiles({ toDelete, paths: { previewFilePath, sourceFi
if (toDelete.tmpFiles && previewFilePath) {
try {
await trash(previewFilePath);
await trashFile(previewFilePath);
} catch (err) {
console.error(err);
failedToTrashFiles.push(previewFilePath);
@ -273,7 +273,7 @@ export async function deleteFiles({ toDelete, paths: { previewFilePath, sourceFi
if (toDelete.projectFile && projectFilePath) {
try {
// throw new Error('test');
await trash(projectFilePath);
await trashFile(projectFilePath);
} catch (err) {
console.error(err);
failedToTrashFiles.push(projectFilePath);
@ -281,7 +281,7 @@ export async function deleteFiles({ toDelete, paths: { previewFilePath, sourceFi
}
if (toDelete.sourceFile) {
try {
await trash(sourceFilePath);
await trashFile(sourceFilePath);
} catch (err) {
console.error(err);
failedToTrashFiles.push(sourceFilePath);