aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-05-25 19:11:23 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-05-26 15:49:42 +0200
commit888277e49db9f5831f0afe4dd3bcc82b7b84465f (patch)
tree0fed21d4e77eab19662ab841ed514318e3855ca2 /packages
parentbuild(renderer): use modern MUI build (diff)
downloadsophie-888277e49db9f5831f0afe4dd3bcc82b7b84465f.tar.gz
sophie-888277e49db9f5831f0afe4dd3bcc82b7b84465f.tar.zst
sophie-888277e49db9f5831f0afe4dd3bcc82b7b84465f.zip
refactor: use setBackgroundColor instead of CSS
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
Diffstat (limited to 'packages')
-rw-r--r--packages/main/src/infrastructure/electron/impl/ElectronMainWindow.ts17
-rw-r--r--packages/renderer/src/index.tsx1
-rw-r--r--packages/renderer/src/style.css29
3 files changed, 17 insertions, 30 deletions
diff --git a/packages/main/src/infrastructure/electron/impl/ElectronMainWindow.ts b/packages/main/src/infrastructure/electron/impl/ElectronMainWindow.ts
index c4b3823..f1e3c7e 100644
--- a/packages/main/src/infrastructure/electron/impl/ElectronMainWindow.ts
+++ b/packages/main/src/infrastructure/electron/impl/ElectronMainWindow.ts
@@ -25,9 +25,11 @@ import {
25 Translation, 25 Translation,
26} from '@sophie/shared'; 26} from '@sophie/shared';
27import { BrowserWindow, ipcMain, IpcMainEvent } from 'electron'; 27import { BrowserWindow, ipcMain, IpcMainEvent } from 'electron';
28import { reaction } from 'mobx';
28import type { IJsonPatch } from 'mobx-state-tree'; 29import type { IJsonPatch } from 'mobx-state-tree';
29 30
30import type MainStore from '../../../stores/MainStore.js'; 31import type MainStore from '../../../stores/MainStore.js';
32import Disposer from '../../../utils/Disposer.js';
31import getLogger from '../../../utils/getLogger.js'; 33import getLogger from '../../../utils/getLogger.js';
32import RendererBridge from '../RendererBridge.js'; 34import RendererBridge from '../RendererBridge.js';
33import type { MainWindow, ServiceView } from '../types.js'; 35import type { MainWindow, ServiceView } from '../types.js';
@@ -39,6 +41,10 @@ import lockWebContentsToFile from './lockWebContentsToFile.js';
39 41
40const log = getLogger('ElectronMainWindow'); 42const log = getLogger('ElectronMainWindow');
41 43
44function getBackroundColor(useDarkTheme: boolean): string {
45 return useDarkTheme ? '#121212' : '#FFF';
46}
47
42export default class ElectronMainWindow implements MainWindow { 48export default class ElectronMainWindow implements MainWindow {
43 private readonly browserWindow: BrowserWindow; 49 private readonly browserWindow: BrowserWindow;
44 50
@@ -66,6 +72,8 @@ export default class ElectronMainWindow implements MainWindow {
66 } 72 }
67 }; 73 };
68 74
75 private readonly disposeBackgroundColorReaction: Disposer;
76
69 constructor( 77 constructor(
70 private readonly store: MainStore, 78 private readonly store: MainStore,
71 private readonly parent: ElectronViewFactory, 79 private readonly parent: ElectronViewFactory,
@@ -74,6 +82,7 @@ export default class ElectronMainWindow implements MainWindow {
74 show: false, 82 show: false,
75 autoHideMenuBar: true, 83 autoHideMenuBar: true,
76 darkTheme: store.shared.shouldUseDarkColors, 84 darkTheme: store.shared.shouldUseDarkColors,
85 backgroundColor: getBackroundColor(store.shared.shouldUseDarkColors),
77 webPreferences: { 86 webPreferences: {
78 sandbox: true, 87 sandbox: true,
79 devTools: parent.devMode, 88 devTools: parent.devMode,
@@ -126,6 +135,13 @@ export default class ElectronMainWindow implements MainWindow {
126 135
127 webContents.userAgent = parent.userAgents.mainWindowUserAgent; 136 webContents.userAgent = parent.userAgents.mainWindowUserAgent;
128 137
138 this.disposeBackgroundColorReaction = reaction(
139 () => store.shared.shouldUseDarkColors,
140 (useDarkTheme) => {
141 this.browserWindow.setBackgroundColor(getBackroundColor(useDarkTheme));
142 },
143 );
144
129 this.browserWindow.on('ready-to-show', () => this.browserWindow.show()); 145 this.browserWindow.on('ready-to-show', () => this.browserWindow.show());
130 146
131 this.browserWindow.on('close', () => this.dispose()); 147 this.browserWindow.on('close', () => this.dispose());
@@ -171,6 +187,7 @@ export default class ElectronMainWindow implements MainWindow {
171 187
172 dispose() { 188 dispose() {
173 this.bridge.dispose(); 189 this.bridge.dispose();
190 this.disposeBackgroundColorReaction();
174 this.browserWindow.destroy(); 191 this.browserWindow.destroy();
175 ipcMain.removeHandler(RendererToMainIpcMessage.GetSharedStoreSnapshot); 192 ipcMain.removeHandler(RendererToMainIpcMessage.GetSharedStoreSnapshot);
176 ipcMain.removeListener( 193 ipcMain.removeListener(
diff --git a/packages/renderer/src/index.tsx b/packages/renderer/src/index.tsx
index 32fcee6..f1e8542 100644
--- a/packages/renderer/src/index.tsx
+++ b/packages/renderer/src/index.tsx
@@ -24,7 +24,6 @@ import { addDisposer } from 'mobx-state-tree';
24import React, { Suspense, lazy } from 'react'; 24import React, { Suspense, lazy } from 'react';
25import { createRoot } from 'react-dom/client'; 25import { createRoot } from 'react-dom/client';
26 26
27import './style.css';
28import Loading from './components/Loading.js'; 27import Loading from './components/Loading.js';
29import ThemeProvider from './components/ThemeProvider.js'; 28import ThemeProvider from './components/ThemeProvider.js';
30import { exposeToReduxDevtools, hotReload } from './devTools.js'; 29import { exposeToReduxDevtools, hotReload } from './devTools.js';
diff --git a/packages/renderer/src/style.css b/packages/renderer/src/style.css
deleted file mode 100644
index d0bf2fb..0000000
--- a/packages/renderer/src/style.css
+++ /dev/null
@@ -1,29 +0,0 @@
1/*
2 * Copyright (C) 2022 Kristóf Marussy <kristof@marussy.com>
3 *
4 * This file is part of Sophie.
5 *
6 * Sophie is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 *
18 * SPDX-License-Identifier: AGPL-3.0-only
19 */
20
21body {
22 background-color: #fff;
23}
24
25@media (prefers-color-scheme: dark) {
26 body {
27 background-color: #121212;
28 }
29}