mirror of
https://github.com/heyman/heynote.git
synced 2025-08-13 16:37:11 +02:00
Move theme/mode related preload code into it's own module
This commit is contained in:
27
electron/preload/theme-mode.ts
Normal file
27
electron/preload/theme-mode.ts
Normal file
@ -0,0 +1,27 @@
|
||||
const { ipcRenderer } = require('electron')
|
||||
|
||||
const getComputedTheme = () => window.matchMedia('(prefers-color-scheme: dark)').matches ? "dark" : "light"
|
||||
const mediaMatch = window.matchMedia('(prefers-color-scheme: dark)')
|
||||
let darkModeChangeListener = null
|
||||
|
||||
export default {
|
||||
set: (mode) => ipcRenderer.invoke('dark-mode:set', mode),
|
||||
get: async () => {
|
||||
const mode = await ipcRenderer.invoke('dark-mode:get')
|
||||
return {
|
||||
theme: mode,
|
||||
computed: getComputedTheme(),
|
||||
}
|
||||
},
|
||||
onChange: (callback) => {
|
||||
darkModeChangeListener = (event) => {
|
||||
callback(event.matches ? "dark" : "light")
|
||||
}
|
||||
mediaMatch.addEventListener('change', darkModeChangeListener)
|
||||
return mediaMatch
|
||||
},
|
||||
removeListener() {
|
||||
mediaMatch.removeEventListener('change', darkModeChangeListener)
|
||||
},
|
||||
initial: getComputedTheme(),
|
||||
}
|
Reference in New Issue
Block a user