diff options
Diffstat (limited to 'packages/main/src/controllers/NativeThemeController.ts')
-rw-r--r-- | packages/main/src/controllers/NativeThemeController.ts | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/packages/main/src/controllers/NativeThemeController.ts b/packages/main/src/controllers/NativeThemeController.ts index a50d41e..931660c 100644 --- a/packages/main/src/controllers/NativeThemeController.ts +++ b/packages/main/src/controllers/NativeThemeController.ts | |||
@@ -20,30 +20,23 @@ | |||
20 | 20 | ||
21 | import { nativeTheme } from 'electron'; | 21 | import { nativeTheme } from 'electron'; |
22 | import { autorun } from 'mobx'; | 22 | import { autorun } from 'mobx'; |
23 | import { IDisposer } from 'mobx-state-tree'; | ||
24 | 23 | ||
25 | import type { MainStore } from '../stores/MainStore'; | 24 | import type { MainStore } from '../stores/MainStore'; |
25 | import { DisposeHelper } from '../utils'; | ||
26 | 26 | ||
27 | export class NativeThemeController { | 27 | export class NativeThemeController extends DisposeHelper { |
28 | private autorunDisposer: IDisposer | null = null; | ||
29 | |||
30 | private shouldUseDarkColorsListener: (() => void) | null = null; | ||
31 | |||
32 | connect(store: MainStore): void { | 28 | connect(store: MainStore): void { |
33 | this.autorunDisposer = autorun(() => { | 29 | this.registerDisposable(autorun(() => { |
34 | nativeTheme.themeSource = store.config.themeSource; | 30 | nativeTheme.themeSource = store.config.themeSource; |
35 | }); | 31 | })); |
32 | |||
36 | store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); | 33 | store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); |
37 | this.shouldUseDarkColorsListener = () => { | 34 | const shouldUseDarkColorsListener = () => { |
38 | store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); | 35 | store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); |
39 | }; | 36 | }; |
40 | nativeTheme.on('updated', this.shouldUseDarkColorsListener); | 37 | nativeTheme.on('updated', shouldUseDarkColorsListener); |
41 | } | 38 | this.registerDisposable(() => { |
42 | 39 | nativeTheme.off('updated', shouldUseDarkColorsListener); | |
43 | dispose(): void { | 40 | }); |
44 | if (this.shouldUseDarkColorsListener !== null) { | ||
45 | nativeTheme.off('updated', this.shouldUseDarkColorsListener); | ||
46 | } | ||
47 | this.autorunDisposer?.(); | ||
48 | } | 41 | } |
49 | } | 42 | } |