Skip to content

Commit 2862b48

Browse files
vik-13mgechev
authored andcommitted
refactor: use strict mode for electron app
1 parent 4b5a696 commit 2862b48

19 files changed

+329
-341
lines changed

main.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { isDev } from './utils';
88
import * as path from 'path';
99
import * as url from 'url';
1010

11-
let win: BrowserWindow = null;
11+
let win: BrowserWindow | null = null;
1212

1313
// Save userData in separate folders for each environment.
1414
// Thanks to this you can use production and development versions of the app
@@ -48,8 +48,7 @@ export const menus = Menu.buildFromTemplate(menuItems);
4848
function createWindow(): BrowserWindow {
4949
Menu.setApplicationMenu(menus);
5050

51-
const electronScreen = screen;
52-
const size = electronScreen.getPrimaryDisplay().workAreaSize;
51+
const size = screen.getPrimaryDisplay().workAreaSize;
5352

5453
// Create the browser window.
5554
win = new BrowserWindow({
@@ -59,7 +58,7 @@ function createWindow(): BrowserWindow {
5958
height: size.height,
6059
webPreferences: {
6160
nodeIntegration: true,
62-
allowRunningInsecureContent: (isDev) ? true : false,
61+
allowRunningInsecureContent: !!isDev,
6362
contextIsolation: false, // false if you want to run 2e2 test with Spectron
6463
enableRemoteModule : true // true if you want to run 2e2 test with Spectron or use remote module in renderer context (ie. Angular)
6564
},

src/electron/config.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@ import { readFileSync, readdirSync, writeFileSync } from 'fs';
44
import { join } from 'path';
55
import { app } from 'electron';
66

7-
87
// Handle the case when the theme is not there
98
const builtInThemesMap = readdirSync(join(__dirname, '..', 'assets'))
109
.filter(f => f.endsWith('.theme.json'))
1110
.map(f => JSON.parse(readFileSync(join(__dirname, '..', 'assets', f)).toString()))
12-
.reduce((a, theme) => {
11+
.reduce((a: Config['themes'], theme: Theme) => {
1312
a[theme.name] = theme;
1413
return a;
1514
}, {});
@@ -45,7 +44,7 @@ export const getConfig = (): Config => {
4544
showModules: config.showModules,
4645
theme: config.theme,
4746
themes: Object.assign(
48-
themes.reduce((a, t) => {
47+
themes.reduce((a: Config['themes'], t: Theme) => {
4948
a[t.name] = t;
5049
return a;
5150
}, {}),

src/electron/formatters/model-formatter.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,15 @@ export const getPipeMetadata = (pipe: PipeSymbol): Metadata => {
4545

4646
export const getDirectiveMetadata = (
4747
dir: DirectiveSymbol | ComponentSymbol
48-
): Metadata => {
48+
): Metadata | null => {
4949
const meta = dir.metadata;
50+
if (!meta) {
51+
return null;
52+
}
5053
const getChangeDetection = () => {
5154
if (dir instanceof ComponentSymbol) {
52-
return dir.metadata.changeDetection;
55+
// TODO: ngast doesn't export ComponentMetadata
56+
return (meta as ComponentSymbol['metadata'])?.changeDetection;
5357
}
5458
return undefined;
5559
};

src/electron/helpers/process.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,12 @@ export type IPCResponse =
110110
| ToggleLibsResponse
111111
| ToggleModulesResponse;
112112

113-
export interface Responder {
114-
(data: IPCResponse): void;
113+
export interface Responder<R> {
114+
(data: R): void;
115115
}
116116

117-
export interface RequestHandler {
118-
(request: IPCRequest, responder: Responder): void;
117+
export interface RequestHandler<T, R> {
118+
(request: T, responder: Responder<R>): void;
119119
}
120120

121121
export class ParentProcess {
@@ -127,12 +127,12 @@ export class ParentProcess {
127127
this.emitter.emit(request.topic, request, ((response: IPCResponse) => {
128128
console.log('Sending response for message:', request.topic);
129129
(process as any).send(response);
130-
}) as Responder);
130+
}) as Responder<IPCRequest>);
131131
});
132132
}
133133

134-
on(topic: Message, cb: RequestHandler): void {
135-
this.emitter.on(topic, (request: IPCRequest, responder: Responder) => {
134+
on<T extends IPCRequest, R extends IPCResponse>(topic: Message, cb: RequestHandler<T, R>): void {
135+
this.emitter.on(topic, (request: T, responder: Responder<R>) => {
136136
try {
137137
cb(request, responder);
138138
} catch (e) {
@@ -167,9 +167,9 @@ export class SlaveProcess {
167167
this.emitter.on('ready', cb);
168168
}
169169

170-
send(request: IPCRequest): Promise<IPCResponse> {
170+
send<R extends IPCResponse>(request: IPCRequest): Promise<R> {
171171
return new Promise((resolve) => {
172-
this.process.once('message', (data: IPCResponse) => {
172+
this.process.once('message', (data: R) => {
173173
console.log('Got message with topic', data.topic);
174174
resolve(data);
175175
});

src/electron/helpers/window.ts

Lines changed: 0 additions & 84 deletions
This file was deleted.

src/electron/menu/application_menu_template.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@ import { app, BrowserWindow, dialog, MenuItem, MenuItemConstructorOptions, Messa
22
import { Message } from "../../shared/ipc-constants";
33
import { getConfig } from "../config";
44

5+
export enum MenuIndex {
6+
Ngrev
7+
}
8+
9+
export enum SubmenuIndex {
10+
Themes = 0,
11+
ShowLibs = 1,
12+
ShowModulesOnly = 2,
13+
Export = 4,
14+
FitView = 6,
15+
Reset = 7,
16+
Quit = 8
17+
}
18+
519
export const applicationMenuTemplate = (
620
themeChange: (name: string) => void,
721
libsToggle: () => void,
@@ -74,8 +88,12 @@ export const applicationMenuTemplate = (
7488
label: "Reset",
7589
accelerator: "CmdOrCtrl+R",
7690
click() {
91+
const focusedWindow: BrowserWindow | null = BrowserWindow.getFocusedWindow();
92+
if (!focusedWindow) {
93+
return;
94+
}
7795
dialog
78-
.showMessageBox(BrowserWindow.getFocusedWindow(), {
96+
.showMessageBox(focusedWindow, {
7997
type: "warning",
8098
buttons: ["OK", "Cancel"],
8199
title: "Are you sure?",

0 commit comments

Comments
 (0)