onedrive_sync/main.js

76 lines
1.6 KiB
JavaScript

const { app, BrowserWindow, ipcMain, dialog } = require('electron');
const path = require('path');
let store;
let mainWindow;
// Initialize store using dynamic import
(async () => {
const Store = await import('electron-store');
store = new Store.default();
})();
function createWindow() {
mainWindow = new BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
webviewTag: true
}
});
mainWindow.loadFile(path.join(__dirname, 'renderer/index.html'));
mainWindow.setTitle('OneDrive Photos');
}
app.whenReady().then(createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
// Modified IPC handlers
ipcMain.on('toggle-config', () => {
mainWindow.webContents.send('toggle-config');
});
ipcMain.on('set-config', (event, config) => {
if (store) {
store.set('destFolder', config.destFolder);
store.set('onedriveSource', config.onedriveSource);
console.log('Configuration saved:', config);
}
});
ipcMain.on('load-config', (event) => {
if (store) {
const config = {
destFolder: store.get('destFolder', ''),
onedriveSource: store.get('onedriveSource', '')
};
event.reply('config-loaded', config);
}
});
ipcMain.on('select-folder', (event) => {
dialog.showOpenDialog({
properties: ['openDirectory']
}).then(result => {
if (!result.canceled) {
event.reply('folder-selected', result.filePaths[0]);
}
}).catch(err => {
console.log(err);
});
});