-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.js
84 lines (66 loc) · 2.25 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Modules
const {app, BrowserWindow, shell} = require('electron')
const windowStateKeeper = require('electron-window-state')
const appMenu = require('./menu')
const fs = require('fs')
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win
// Create the main BrowserWindow
const createWindow = () => {
// Add main menu to app
appMenu.create()
// Load the previous state with fallback to defaults
let winState = windowStateKeeper({
defaultWidth: 1000,
defaultHeight: 800
})
// Create the window using the state information
win = new BrowserWindow({
x: winState.x,
y: winState.y,
width: winState.width,
height: winState.height,
backgroundColor: '#E8E8E8',
title: 'Google Keep'
})
// Open the DevTools.
// win.webContents.openDevTools()
// and load the index.html of the app.
win.loadURL(`file://${__dirname}/index.html`)
// Let us register listeners on the window, so we can update the state
// automatically (the listeners will be removed when the window is closed)
// and restore the maximized or full screen state
winState.manage(win)
// Emitted when the window is closed.
win.on('closed', () => win = null )
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on('ready', createWindow)
// On OS X re-create a window when the dock icon is clicked
// and there are no other windows open.
app.on('activate', () => {
if (win === null) createWindow()
})
// Open url externally if not "keep.google.com"
const openExternal = (e, url) => {
if ( !url.includes('keep.google.com') ) {
e.preventDefault()
shell.openExternal(url)
}
}
// Listen for web contents being rendered
app.on('web-contents-created', (e, contents) => {
// Check for webview (keep.google.com)
if (contents.getType() == 'webview') {
// Listen for any navigation or new window events
contents.on('will-navigate', openExternal)
contents.on('new-window', openExternal)
}
})
// Quit when all windows are closed.
app.on('window-all-closed', () => {
// On OS X stay active until the user quits explicitly
if (process.platform !== 'darwin') app.quit()
})