dmux
Version:
Tmux pane manager with AI agent integration for parallel development workflows
46 lines • 1.79 kB
JavaScript
import { useEffect, useState } from 'react';
import fs from 'fs/promises';
export default function useProjectSettings(settingsFile) {
const [projectSettings, setProjectSettings] = useState({});
useEffect(() => {
const load = async () => {
try {
const content = await fs.readFile(settingsFile, 'utf-8');
const parsed = JSON.parse(content);
// Handle both old format (direct settings) and new format (config with settings field)
if (parsed.settings !== undefined || parsed.panes !== undefined) {
// New config format
const config = parsed;
setProjectSettings(config.settings || {});
}
else {
// Old format or direct settings
setProjectSettings(parsed);
}
}
catch {
setProjectSettings({});
}
};
load();
}, [settingsFile]);
const saveSettings = async (settings) => {
// Read existing config to preserve other fields
let config = {};
try {
const content = await fs.readFile(settingsFile, 'utf-8');
const parsed = JSON.parse(content);
if (parsed.panes !== undefined || parsed.settings !== undefined) {
config = parsed;
}
}
catch { }
// Update settings in config
config.settings = settings;
config.lastUpdated = new Date().toISOString();
await fs.writeFile(settingsFile, JSON.stringify(config, null, 2));
setProjectSettings(settings);
};
return { projectSettings, saveSettings };
}
//# sourceMappingURL=useProjectSettings.js.map