Refactor drag-and-drop functionality in main.js and renderer.js
This commit is contained in:
30
main.js
30
main.js
@@ -664,36 +664,6 @@ async function main() {
|
||||
const tray = createTray(win);
|
||||
|
||||
|
||||
// (1) Die Kernfunktion
|
||||
async function addFolderByPath(newFolder) {
|
||||
await initGitRepo(newFolder);
|
||||
let folders = store.get('folders') || [];
|
||||
let folderObj = folders.find(f => f.path === newFolder);
|
||||
if (!folderObj) {
|
||||
folderObj = { path: newFolder, monitoring: true, linesChanged: 0, llmCandidates: [] };
|
||||
folders.push(folderObj);
|
||||
store.set('folders', folders);
|
||||
}
|
||||
store.set('selected', newFolder);
|
||||
watchRepo(newFolder, win);
|
||||
startMonitoringWatcher(newFolder, win);
|
||||
return store.get('folders');
|
||||
}
|
||||
|
||||
// (2) Die IPC-Handler anpassen:
|
||||
ipcMain.handle('add-folder', async () => {
|
||||
const { canceled, filePaths } = await dialog.showOpenDialog({
|
||||
properties: ['openDirectory']
|
||||
});
|
||||
if (canceled || !filePaths[0]) {
|
||||
return store.get('folders');
|
||||
}
|
||||
return await addFolderByPath(filePaths[0]);
|
||||
});
|
||||
|
||||
ipcMain.handle('add-folder-by-path', async (_e, folderPath) => {
|
||||
return await addFolderByPath(folderPath);
|
||||
});
|
||||
|
||||
|
||||
// --- Context Menu bauen ---
|
||||
|
||||
23
renderer.js
23
renderer.js
@@ -71,6 +71,29 @@ window.addEventListener('DOMContentLoaded', async () => {
|
||||
return folders.find(f => f.path === path) || null;
|
||||
}
|
||||
|
||||
document.body.addEventListener('dragover', e => {
|
||||
e.preventDefault();
|
||||
e.dataTransfer.dropEffect = 'copy';
|
||||
});
|
||||
|
||||
document.body.addEventListener('drop', async e => {
|
||||
e.preventDefault();
|
||||
const files = [...e.dataTransfer.files];
|
||||
if (!files.length) return;
|
||||
// Prüfe, ob Ordner:
|
||||
for (let f of files) {
|
||||
// f ist File, hat .path und .type, aber bei Folders oft type="" (leerer String)
|
||||
if (f.type === "" /* = Ordner (bei DnD) */) {
|
||||
await window.electronAPI.addFolderByPath(f.path);
|
||||
await renderSidebar();
|
||||
const sel = await window.electronAPI.getSelected();
|
||||
if (sel) await renderContent(sel);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
async function renderSidebar() {
|
||||
const folders = await window.electronAPI.getFolders();
|
||||
console.log("Renderer-Folders:", folders);
|
||||
|
||||
Reference in New Issue
Block a user