Skip to content

Commit 3618483

Browse files
committed
Fixup WelcomeWIn
1 parent e4cc258 commit 3618483

6 files changed

Lines changed: 85 additions & 64 deletions

File tree

app/contributor-preferences.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ let eventsAttached = false
99

1010
window.onload = (event) => {
1111
import('./platform')
12-
ipcRenderer.send('send-settings')
12+
ipcRenderer.send('current-settings')
1313
htmlTranslate.translate()
1414
setTimeout(() => { eventsAttached = true }, 500)
1515

app/main.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -330,12 +330,12 @@ function startI18next () {
330330
})
331331
}
332332

333-
i18next.on('languageChanged', async function (lng) {
333+
i18next.on('languageChanged', () => {
334334
if (welcomeWin) {
335-
welcomeWin.send('translate', await settingsToSend())
335+
welcomeWin.webContents.send('translate')
336336
}
337337
if (preferencesWin) {
338-
preferencesWin.send('translate', await settingsToSend())
338+
preferencesWin.webContents.send('translate')
339339
}
340340
updateTray()
341341
loadIdeas()
@@ -570,8 +570,7 @@ function createWelcomeWindow (isAppStart = true) {
570570
icon: windowIconPath(),
571571
backgroundColor: 'EDEDED',
572572
webPreferences: {
573-
preload: join(__dirname, './welcome.js'),
574-
enableRemoteModule: true,
573+
preload: join(__dirname, './welcome-preload.mjs'),
575574
sandbox: false
576575
}
577576
})
@@ -1495,14 +1494,6 @@ ipcMain.on('restore-defaults', (event) => {
14951494
})
14961495
})
14971496

1498-
ipcMain.on('send-settings', async function (event) {
1499-
event.sender.send('renderSettings', await settingsToSend())
1500-
})
1501-
1502-
async function settingsToSend () {
1503-
return Object.assign({}, settings.store, { openAtLogin: await autostartManager.autoLaunchStatus() })
1504-
}
1505-
15061497
ipcMain.on('play-sound', function (event, sound) {
15071498
processWin.webContents.send('play-sound', sound, settings.get('volume'))
15081499
})
@@ -1582,10 +1573,14 @@ ipcMain.on('open-sync-preferences', (event) => {
15821573
createSyncPreferencesWindow()
15831574
})
15841575

1585-
ipcMain.handle('current-settings', (event) => {
1586-
return settings.store
1576+
ipcMain.handle('current-settings', async (event) => {
1577+
return await settingsToSend()
15871578
})
15881579

1580+
async function settingsToSend () {
1581+
return Object.assign({}, settings.store, { openAtLogin: await autostartManager.autoLaunchStatus() })
1582+
}
1583+
15891584
ipcMain.handle('restore-remote-settings', (event, remoteSettings) => {
15901585
log.info('Stretchly: restoring remote settings')
15911586
settings.store = remoteSettings
@@ -1603,3 +1598,9 @@ ipcMain.handle('i18next-dir', (event) => {
16031598
ipcMain.handle('settings-get', (event, key) => {
16041599
return settings.get(key)
16051600
})
1601+
1602+
ipcMain.on('close-welcome-window', () => {
1603+
if (welcomeWin) {
1604+
welcomeWin.close()
1605+
}
1606+
})

app/preferences.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let eventsAttached = false
1212

1313
window.onload = (e) => {
1414
import('./platform.js')
15-
ipcRenderer.send('send-settings')
15+
ipcRenderer.send('current-settings')
1616
htmlTranslate.translate()
1717
setWindowHeight()
1818
setTimeout(() => { eventsAttached = true }, 500)

app/welcome-preload.mjs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { ipcRenderer, shell, contextBridge } from 'electron'
2+
import './expose-process.js'
3+
4+
contextBridge.exposeInMainWorld('settings', {
5+
currentSettings: async () => {
6+
return await ipcRenderer.invoke('current-settings')
7+
},
8+
saveSettings: async (key, value) => {
9+
ipcRenderer.send('save-setting', key, value)
10+
}
11+
})
12+
13+
contextBridge.exposeInMainWorld('i18next', {
14+
t: (key, options) => ipcRenderer.invoke('i18next-translate', key, options),
15+
dir: () => ipcRenderer.invoke('i18next-dir')
16+
})
17+
18+
contextBridge.exposeInMainWorld('electronAPI', {
19+
onTranslate: (callback) => ipcRenderer.on('translate',
20+
(_event) => callback()),
21+
openExternal: (path) => shell.openExternal(path),
22+
openPreferences: () => ipcRenderer.send('open-preferences'),
23+
closeWindow: () => ipcRenderer.send('close-welcome-window')
24+
})

app/welcome.js renamed to app/welcome-renderer.js

Lines changed: 42 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
import { ipcRenderer, shell } from 'electron'
2-
import remote from '@electron/remote'
31
import HtmlTranslate from './utils/htmlTranslate.js'
42
import { setSameWidths } from './utils/sameWidths.js'
5-
const htmlTranslate = new HtmlTranslate(document)
3+
import './platform.js'
4+
5+
window.onload = async (event) => {
6+
new HtmlTranslate(document).translate()
7+
const settings = await window.settings.currentSettings()
8+
9+
document.ondragover = event =>
10+
event.preventDefault()
11+
12+
document.ondrop = event =>
13+
event.preventDefault()
614

7-
window.onload = (e) => {
8-
import('./platform')
9-
htmlTranslate.translate()
10-
ipcRenderer.send('send-settings')
11-
setSameWidths()
1215
setTimeout(() => { eventsAttached = true }, 500)
1316
let eventsAttached = false
1417

@@ -36,64 +39,56 @@ window.onload = (e) => {
3639
}
3740
})
3841

39-
document.ondragover = event =>
40-
event.preventDefault()
41-
42-
document.ondrop = event =>
43-
event.preventDefault()
44-
45-
ipcRenderer.on('translate', (event) => {
46-
htmlTranslate.translate()
42+
window.electronAPI.onTranslate(() => {
43+
new HtmlTranslate(document).translate()
4744
setSameWidths()
4845
})
4946

50-
ipcRenderer.on('renderSettings', (event, settings) => {
51-
document.querySelectorAll('input[type="radio"]').forEach(radio => {
52-
let value
53-
switch (radio.value) {
54-
case 'true':
55-
value = true
56-
break
57-
case 'false':
58-
value = false
59-
break
60-
default:
61-
value = radio.value
62-
}
63-
radio.checked = settings[radio.name] === value
64-
if (!eventsAttached) {
65-
radio.onchange = (event) => {
66-
ipcRenderer.send('save-setting', radio.name, value)
67-
setSameWidths()
68-
}
69-
}
70-
})
71-
72-
document.querySelector('#language').value = settings.language
73-
document.querySelector('#language').focus()
47+
document.querySelectorAll('input[type="radio"]').forEach(radio => {
48+
let value
49+
switch (radio.value) {
50+
case 'true':
51+
value = true
52+
break
53+
case 'false':
54+
value = false
55+
break
56+
default:
57+
value = radio.value
58+
}
59+
radio.checked = settings[radio.name] === value
7460
if (!eventsAttached) {
75-
document.querySelector('#language').onchange = (event) => {
76-
ipcRenderer.send('save-setting', 'language', event.target.value)
61+
radio.onchange = (event) => {
62+
window.settings.saveSettings(radio.name, value)
63+
setSameWidths()
7764
}
7865
}
79-
setSameWidths()
8066
})
8167

68+
document.querySelector('#language').value = settings.language
69+
document.querySelector('#language').focus()
70+
if (!eventsAttached) {
71+
document.querySelector('#language').onchange = (event) => {
72+
window.settings.saveSettings('language', event.target.value)
73+
}
74+
}
75+
setSameWidths()
76+
8277
document.querySelectorAll('button').forEach(button => {
8378
if (!eventsAttached) {
8479
button.onclick = () => {
85-
ipcRenderer.send('save-setting', 'isFirstRun', false)
80+
window.settings.saveSettings('isFirstRun', false)
8681
switch (button.getAttribute('data-location')) {
8782
case 'tutorial':
88-
shell.openExternal('https://hovancik.net/stretchly/about')
83+
window.electronAPI.openExternal('https://hovancik.net/stretchly/about')
8984
break
9085
case 'preferences':
91-
ipcRenderer.send('open-preferences')
86+
window.electronAPI.openPreferences()
9287
break
9388
default:
9489
break
9590
}
96-
remote.getCurrentWindow().close()
91+
window.electronAPI.closeWindow()
9792
}
9893
}
9994
})

app/welcome.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,5 @@
8686
</div>
8787
</div>
8888
</body>
89+
<script type="module" src="./welcome-renderer.js"></script>
8990
</html>

0 commit comments

Comments
 (0)