Skip to content

Commit e4cc258

Browse files
committed
WIP move to ESM
1 parent 0b015d5 commit e4cc258

48 files changed

Lines changed: 660 additions & 450 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/break-preload.mjs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { contextBridge, ipcRenderer } from 'electron'
2+
import humanizeDuration from 'humanize-duration'
3+
import * as utils from './utils/utils.js'
4+
import './expose-process.js'
5+
6+
contextBridge.exposeInMainWorld('i18next', {
7+
t: (key, options) => ipcRenderer.invoke('i18next-translate', key, options),
8+
dir: () => ipcRenderer.invoke('i18next-dir')
9+
})
10+
11+
contextBridge.exposeInMainWorld('settings', {
12+
get: (key) => ipcRenderer.invoke('settings-get', key)
13+
})
14+
15+
contextBridge.exposeInMainWorld('breaks', {
16+
sendBreakData: () => ipcRenderer.invoke('send-break-data'),
17+
finishBreak: () => ipcRenderer.send('finish-break', false),
18+
postponeBreak: () => ipcRenderer.send('postpone-break'),
19+
signalLoaded: () => ipcRenderer.send('long-break-loaded'),
20+
formatKeyboardShortcut: utils.formatKeyboardShortcut,
21+
formatTimeRemaining: async (milliseconds, locale) => {
22+
const i18n = {
23+
t: (key, options) => ipcRenderer.invoke('i18next-translate', key, options)
24+
}
25+
return utils.formatTimeRemaining(milliseconds, locale, i18n, humanizeDuration)
26+
},
27+
canPostpone: utils.canPostpone,
28+
canSkip: utils.canSkip
29+
})

app/break-renderer.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import HtmlTranslate from './utils/htmlTranslate.js'
2+
import './platform.js'
3+
4+
window.onload = async (event) => {
5+
const [idea, started, duration, strictMode, postpone,
6+
postponePercent, backgroundColor] = await window.breaks.sendBreakData()
7+
8+
new HtmlTranslate(document).translate()
9+
10+
document.ondragover = event =>
11+
event.preventDefault()
12+
13+
document.ondrop = event =>
14+
event.preventDefault()
15+
16+
document.querySelector('#close').onclick = async event =>
17+
await window.breaks.finishBreak()
18+
19+
document.querySelector('#postpone').onclick = async event =>
20+
await window.breaks.postponeBreak()
21+
22+
document.querySelector('.break-idea').textContent = idea[0]
23+
document.querySelector('.break-text').textContent = idea[1]
24+
25+
const progress = document.querySelector('#progress')
26+
const progressTime = document.querySelector('#progress-time')
27+
const postponeElement = document.querySelector('#postpone')
28+
const closeElement = document.querySelector('#close')
29+
const mainColor = await window.settings.get('mainColor')
30+
document.body.classList.add(mainColor.substring(1))
31+
document.body.style.backgroundColor = backgroundColor
32+
33+
document.querySelectorAll('.tiptext').forEach(async tt => {
34+
const keyboardShortcut = await window.settings.get('endBreakShortcut')
35+
tt.innerHTML = await window.breaks.formatKeyboardShortcut(keyboardShortcut)
36+
})
37+
38+
window.setInterval(async () => {
39+
if (await window.settings.get('currentTimeInBreaks')) {
40+
document.querySelector('.breaks > :last-child').innerHTML =
41+
(new Date()).toLocaleTimeString()
42+
}
43+
if (Date.now() - started < duration) {
44+
const passedPercent = (Date.now() - started) / duration * 100
45+
await window.breaks.canSkip(strictMode, postpone, passedPercent, postponePercent)
46+
postponeElement.style.display =
47+
await window.breaks.canPostpone(postpone, passedPercent, postponePercent) ? 'flex' : 'none'
48+
closeElement.style.display =
49+
await window.breaks.canSkip(strictMode, postpone, passedPercent, postponePercent) ? 'flex' : 'none'
50+
progress.value = (100 - passedPercent) * progress.max / 100
51+
progressTime.innerHTML = await window.breaks.formatTimeRemaining(Math.trunc(duration - Date.now() + started),
52+
await window.settings.get('language'))
53+
}
54+
}, 100)
55+
await window.breaks.signalLoaded()
56+
}

app/break.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,5 @@
3434
</div>
3535
</div>
3636
</body>
37+
<script type="module" src="./break-renderer.js"></script>
3738
</html>

app/break.js

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

app/breaksPlanner.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
const Scheduler = require('./utils/scheduler')
2-
const EventEmitter = require('events')
3-
const NaturalBreaksManager = require('./utils/naturalBreaksManager')
4-
const DndManager = require('./utils/dndManager')
5-
const AppExclusionsManager = require('./utils/appExclusionsManager')
6-
const log = require('electron-log/main')
1+
import Scheduler from './utils/scheduler.js'
2+
import EventEmitter from 'events'
3+
import NaturalBreaksManager from './utils/naturalBreaksManager.js'
4+
import DndManager from './utils/dndManager.js'
5+
import AppExclusionsManager from './utils/appExclusionsManager.js'
6+
import log from 'electron-log/main.js'
77

88
class BreaksPlanner extends EventEmitter {
99
constructor (settings) {
@@ -289,4 +289,4 @@ class BreaksPlanner extends EventEmitter {
289289
}
290290
}
291291

292-
module.exports = BreaksPlanner
292+
export default BreaksPlanner

app/contributor-preferences.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
const { ipcRenderer } = require('electron')
2-
const HtmlTranslate = require('./utils/htmlTranslate')
3-
const { setSameWidths } = require('./utils/sameWidths')
4-
const remote = require('@electron/remote')
5-
const i18next = remote.require('i18next')
1+
import { ipcRenderer } from 'electron'
2+
import HtmlTranslate from './utils/htmlTranslate.js'
3+
import { setSameWidths } from './utils/sameWidths.js'
4+
import { require as remoteRequire } from '@electron/remote'
5+
const i18next = remoteRequire('i18next')
66

77
const htmlTranslate = new HtmlTranslate(document)
88
let eventsAttached = false
99

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

app/electron-bridge.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const { ipcRenderer, shell, contextBridge } = require('electron')
2-
const remote = require('@electron/remote')
1+
import { ipcRenderer, shell, contextBridge } from 'electron'
2+
import remote from '@electron/remote'
33

44
contextBridge.exposeInMainWorld('ElectronBridge', {
55
// helloWorld: () {

app/expose-process.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { contextBridge } from 'electron'
2+
3+
contextBridge.exposeInMainWorld('process', {
4+
platform: () => process.platform,
5+
windowsStore: () => process.windowsStore
6+
})

0 commit comments

Comments
 (0)