Files
markdown-converter/src/main/files/git.js
T
amitwh 772a791d9a fix(git): git-status IPC returns a flat array, not wrapped object
GitOperations.getStatus returns { files: [...] } but the renderer's
ipc.file.gitStatus type declares Array<...> and calls result.data.map().
The mismatch made GitStatusPanel.tsx throw 'n.map is not a function'
on mount, which blanked the entire React tree.

Unwrap result.files in the IPC handler so it returns the array the
renderer expects. Add tests covering the success, empty, and non-git
branches so this regression cannot recur.

Refs: blank-screen-on-md-open
2026-07-23 09:34:57 +05:30

47 lines
1.6 KiB
JavaScript

// src/main/files/git.js
// Git IPC handlers — thin wrapper over GitOperations
const { ipcMain } = require('electron');
const GitOperations = require('../GitOperations');
function register(currentFileRef) {
ipcMain.handle('git-status', async (_event, rootPath) => {
const dir =
rootPath ||
(currentFileRef.current ? require('path').dirname(currentFileRef.current) : process.cwd());
const result = GitOperations.getStatus(dir);
return Array.isArray(result?.files) ? result.files : [];
});
ipcMain.handle('git-stage', async (_event, { rootPath, files }) => {
const dir =
rootPath ||
(currentFileRef.current ? require('path').dirname(currentFileRef.current) : process.cwd());
return GitOperations.stage(dir, files);
});
ipcMain.handle('git-commit', async (_event, { rootPath, message }) => {
const dir =
rootPath ||
(currentFileRef.current ? require('path').dirname(currentFileRef.current) : process.cwd());
return GitOperations.commit(dir, message);
});
ipcMain.handle('git-log', async (_event, rootPath) => {
const dir =
rootPath ||
(currentFileRef.current ? require('path').dirname(currentFileRef.current) : process.cwd());
return GitOperations.log(dir);
});
ipcMain.handle('git-diff', async (_event, filePath) => {
const dir = filePath
? require('path').dirname(filePath)
: currentFileRef.current
? require('path').dirname(currentFileRef.current)
: process.cwd();
return GitOperations.diff(dir, filePath);
});
}
module.exports = { register };