Skip to content

Commit 05f8431

Browse files
committed
added app settings, updated details screen
1 parent 0fe758a commit 05f8431

26 files changed

+582
-135
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
'react/function-component-definition': 'off',
1919
'react/require-default-props': 'off',
2020
'import/no-cycle': 'off',
21+
'jsx-a11y/label-has-associated-control': 'off',
2122
},
2223
parserOptions: {
2324
ecmaVersion: 2022,

assets/icons/folder.svg

Lines changed: 3 additions & 0 deletions
Loading

assets/icons/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import settings from './settings.svg';
22
import add from './add.svg';
3+
import folder from './folder.svg';
34

4-
export const icons = { settings, add };
5+
export const icons = { settings, add, folder };

assets/icons/search.svg

Lines changed: 3 additions & 0 deletions
Loading

src/main/ipcHandlers/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
import registerCliHandlers from './cli.ipcHandlers';
22
import registerProjectHandlers from './project.ipcHandlers';
3+
import registerSettingsHandlers from './setting.ipcHandlers';
34

4-
export { registerCliHandlers, registerProjectHandlers };
5+
export {
6+
registerCliHandlers,
7+
registerProjectHandlers,
8+
registerSettingsHandlers,
9+
};

src/main/ipcHandlers/project.ipcHandlers.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
11
import { ipcMain } from 'electron';
2-
import { initializeDataStorage } from '../utils/setupHelpers';
32
import { ProjectsService } from '../services';
43
import { Project } from '../../types/backend';
54

65
const registerProjectHandlers = () => {
7-
initializeDataStorage();
8-
//
9-
// ipcMain.removeHandler('project:list');
10-
// ipcMain.removeHandler('project:update');
11-
// ipcMain.removeHandler('project:delete');
12-
// ipcMain.removeHandler('project:add');
13-
146
ipcMain.handle('project:list', async () => {
157
return ProjectsService.loadProjects();
168
});
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { BrowserWindow, dialog, ipcMain } from 'electron';
2+
import { initializeDataStorage } from '../utils/setupHelpers';
3+
import { SettingsService } from '../services';
4+
import { FileDialogProperties, SettingsType } from '../../types/backend';
5+
6+
const registerSettingsHandlers = (mainWindow: BrowserWindow) => {
7+
initializeDataStorage();
8+
9+
ipcMain.handle('settings:load', async () => {
10+
return SettingsService.loadSettings();
11+
});
12+
13+
ipcMain.handle('settings:save', async (_event, body: SettingsType) => {
14+
return SettingsService.saveSettings(body);
15+
});
16+
17+
ipcMain.handle(
18+
'settings:dialog',
19+
async (_event, body: { property: FileDialogProperties }) => {
20+
console.log('property', body.property);
21+
const result = await dialog.showOpenDialog(mainWindow, {
22+
properties: [body.property],
23+
});
24+
return result.filePaths;
25+
},
26+
);
27+
};
28+
29+
export default registerSettingsHandlers;

src/main/ipcSetup.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import { BrowserWindow } from 'electron';
2-
import { registerCliHandlers, registerProjectHandlers } from './ipcHandlers';
2+
import {
3+
registerCliHandlers,
4+
registerProjectHandlers,
5+
registerSettingsHandlers,
6+
} from './ipcHandlers';
37

48
const registerHandlers = (mainWindow: BrowserWindow) => {
59
registerCliHandlers(mainWindow);
10+
registerSettingsHandlers(mainWindow);
611
registerProjectHandlers();
712
};
813

src/main/services/cli.service.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,15 @@
11
import { spawn, ChildProcessWithoutNullStreams } from 'child_process';
2-
import { BrowserWindow, app } from 'electron';
2+
import { BrowserWindow } from 'electron';
33
import path from 'path';
4-
import { DATA_DIR } from '../utils/setupHelpers';
4+
import SettingsService from './settings.service';
55

66
export default class CliService {
77
private cliPath: string;
88

99
private process: ChildProcessWithoutNullStreams | null = null;
1010

1111
constructor() {
12-
this.cliPath = app.isPackaged
13-
? path.join(
14-
process.resourcesPath,
15-
'bin',
16-
'rosetta',
17-
'rosetta-2.7.0-mac_aarch64',
18-
'bin',
19-
'rosetta',
20-
)
21-
: path.join(
22-
__dirname,
23-
'../../bin/rosetta/rosetta-2.7.0-mac_aarch64/bin/rosetta',
24-
);
12+
this.cliPath = SettingsService.loadSettings().rosettaPath;
2513
}
2614

2715
setPath(value: string) {
@@ -42,7 +30,10 @@ export default class CliService {
4230
if (args.length !== 2) {
4331
throw new Error('Invalid number of arguments');
4432
}
45-
args[1] = path.join(DATA_DIR, args[1]);
33+
args[1] = path.join(
34+
SettingsService.loadSettings().projectsDirectory,
35+
args[1],
36+
);
4637

4738
return new Promise<void>((resolve, reject) => {
4839
if (this.process) {

src/main/services/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import CliService from './cli.service';
22
import ProjectsService from './projects.service';
3+
import SettingsService from './settings.service';
34

4-
export { CliService, ProjectsService };
5+
export { CliService, ProjectsService, SettingsService };

0 commit comments

Comments
 (0)