2023-11-12 18:05:11 +01:00
|
|
|
import { app, dialog, ipcMain, safeStorage } from 'electron';
|
|
|
|
import * as Store from 'electron-store';
|
2024-04-06 09:34:42 +02:00
|
|
|
import * as fs from 'fs';
|
2023-08-18 15:57:31 +02:00
|
|
|
|
2023-09-13 19:21:08 +02:00
|
|
|
import { validateSender } from '../libs/misc/validateSender';
|
2022-08-10 17:59:59 +02:00
|
|
|
import { ShortcutRegister } from '../libs/ShortcutRegister';
|
2020-07-29 15:56:29 +02:00
|
|
|
|
|
|
|
export default () => {
|
2023-09-13 19:21:08 +02:00
|
|
|
ipcMain.on('close-app', (event) => {
|
2023-11-12 18:05:11 +01:00
|
|
|
if (!validateSender(event.senderFrame)) {
|
|
|
|
return {
|
|
|
|
status: 'error',
|
|
|
|
response: 'Unauthorized process'
|
|
|
|
};
|
|
|
|
}
|
2020-07-29 15:56:29 +02:00
|
|
|
app.exit();
|
|
|
|
});
|
2020-12-18 18:44:32 +01:00
|
|
|
|
2023-11-12 18:05:11 +01:00
|
|
|
ipcMain.on('set-key', (event, key) => {
|
|
|
|
if (safeStorage.isEncryptionAvailable()) {
|
|
|
|
const sessionStore = new Store({
|
|
|
|
name: 'session',
|
|
|
|
fileExtension: ''
|
|
|
|
});
|
|
|
|
const encrypted = safeStorage.encryptString(key);
|
|
|
|
sessionStore.set('key', encrypted);
|
|
|
|
event.returnValue = true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
ipcMain.on('get-key', (event) => {
|
|
|
|
if (!safeStorage.isEncryptionAvailable()) {
|
|
|
|
event.returnValue = false;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const sessionStore = new Store({
|
|
|
|
name: 'session',
|
|
|
|
fileExtension: ''
|
|
|
|
});
|
2023-12-25 09:35:43 +01:00
|
|
|
|
|
|
|
try {
|
|
|
|
const encrypted = sessionStore.get('key') as string;
|
|
|
|
const key = safeStorage.decryptString(Buffer.from(encrypted, 'utf-8'));
|
|
|
|
event.returnValue = key;
|
|
|
|
}
|
|
|
|
catch (error) {
|
|
|
|
event.returnValue = false;
|
|
|
|
}
|
2023-11-12 18:05:11 +01:00
|
|
|
});
|
|
|
|
|
2022-04-22 12:16:02 +02:00
|
|
|
ipcMain.handle('show-open-dialog', (event, options) => {
|
2023-09-13 19:21:08 +02:00
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
2021-10-29 12:58:37 +02:00
|
|
|
return dialog.showOpenDialog(options);
|
|
|
|
});
|
|
|
|
|
2024-04-06 09:34:42 +02:00
|
|
|
ipcMain.handle('show-save-dialog', (event, options) => {
|
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
|
|
|
return dialog.showSaveDialog(options);
|
|
|
|
});
|
|
|
|
|
2023-09-13 19:21:08 +02:00
|
|
|
ipcMain.handle('get-download-dir-path', (event) => {
|
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
2021-10-29 12:58:37 +02:00
|
|
|
return app.getPath('downloads');
|
|
|
|
});
|
2022-08-10 17:59:59 +02:00
|
|
|
|
2023-09-13 19:21:08 +02:00
|
|
|
ipcMain.handle('resotre-default-shortcuts', (event) => {
|
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
2022-08-24 10:23:03 +02:00
|
|
|
const shortCutRegister = ShortcutRegister.getInstance();
|
2022-08-10 17:59:59 +02:00
|
|
|
shortCutRegister.restoreDefaults();
|
|
|
|
});
|
|
|
|
|
2023-09-13 19:21:08 +02:00
|
|
|
ipcMain.handle('reload-shortcuts', (event) => {
|
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
2022-08-24 10:23:03 +02:00
|
|
|
const shortCutRegister = ShortcutRegister.getInstance();
|
2022-08-10 17:59:59 +02:00
|
|
|
shortCutRegister.reload();
|
|
|
|
});
|
|
|
|
|
|
|
|
ipcMain.handle('update-shortcuts', (event, shortcuts) => {
|
2023-09-13 19:21:08 +02:00
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
2022-08-24 10:23:03 +02:00
|
|
|
const shortCutRegister = ShortcutRegister.getInstance();
|
2022-08-10 17:59:59 +02:00
|
|
|
shortCutRegister.updateShortcuts(shortcuts);
|
|
|
|
});
|
|
|
|
|
2023-09-13 19:21:08 +02:00
|
|
|
ipcMain.handle('unregister-shortcuts', (event) => {
|
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
2022-08-24 10:23:03 +02:00
|
|
|
const shortCutRegister = ShortcutRegister.getInstance();
|
2022-08-10 17:59:59 +02:00
|
|
|
shortCutRegister.unregister();
|
|
|
|
});
|
2024-04-06 09:34:42 +02:00
|
|
|
|
|
|
|
ipcMain.handle('read-file', (event, filePath) => {
|
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
|
|
|
try {
|
|
|
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
|
|
return content;
|
|
|
|
}
|
|
|
|
catch (error) {
|
|
|
|
return { status: 'error', response: error.toString() };
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
ipcMain.handle('write-file', (event, filePath, content) => {
|
|
|
|
if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' };
|
|
|
|
try {
|
|
|
|
fs.writeFileSync(filePath, content, 'utf-8');
|
|
|
|
return { status: 'success' };
|
|
|
|
}
|
|
|
|
catch (error) {
|
|
|
|
return { status: 'error', response: error.toString() };
|
|
|
|
}
|
|
|
|
});
|
2020-07-29 15:56:29 +02:00
|
|
|
};
|