From 362745f31c2473ebdca2efc01e4811bba2a7a6fa Mon Sep 17 00:00:00 2001 From: thecodrr Date: Mon, 2 Aug 2021 20:44:56 +0500 Subject: [PATCH] feat: make splash screen & app window follow theme --- apps/web/desktop/electron.js | 2 + .../web/desktop/ipc/actions/changeAppTheme.js | 12 ++ apps/web/desktop/package.json | 1 + apps/web/desktop/theme.js | 17 ++ apps/web/desktop/yarn.lock | 5 + apps/web/public/index.html | 60 ++++--- apps/web/src/assets/logo-dark.svg | 162 ++---------------- apps/web/src/assets/logo.svg | 74 ++------ apps/web/src/commands/change-app-theme.js | 5 + apps/web/src/stores/theme-store.js | 7 + 10 files changed, 122 insertions(+), 223 deletions(-) create mode 100644 apps/web/desktop/ipc/actions/changeAppTheme.js create mode 100644 apps/web/desktop/theme.js create mode 100644 apps/web/src/commands/change-app-theme.js diff --git a/apps/web/desktop/electron.js b/apps/web/desktop/electron.js index b86ee02f9..9f1bcea88 100644 --- a/apps/web/desktop/electron.js +++ b/apps/web/desktop/electron.js @@ -4,6 +4,7 @@ const os = require("os"); const { isDevelopment } = require("./utils"); const { registerProtocol, URL } = require("./protocol"); const { configureAutoUpdater } = require("./autoupdate"); +const { getTheme, getBackgroundColor } = require("./theme"); require("./ipc/index.js"); try { require("electron-reloader")(module); @@ -13,6 +14,7 @@ let mainWindow; async function createWindow() { mainWindow = new BrowserWindow({ + backgroundColor: getBackgroundColor(), autoHideMenuBar: true, icon: path.join( __dirname, diff --git a/apps/web/desktop/ipc/actions/changeAppTheme.js b/apps/web/desktop/ipc/actions/changeAppTheme.js new file mode 100644 index 000000000..b90dbb67d --- /dev/null +++ b/apps/web/desktop/ipc/actions/changeAppTheme.js @@ -0,0 +1,12 @@ +const { setTheme, getBackgroundColor } = require("../../theme"); + +module.exports = { + type: "changeAppTheme", + action: async (args) => { + console.log("args", args); + if (!global.win) return; + const { theme } = args; + await setTheme(theme); + global.win.setBackgroundColor(getBackgroundColor()); + }, +}; diff --git a/apps/web/desktop/package.json b/apps/web/desktop/package.json index 10a6ca27a..56ffd9379 100644 --- a/apps/web/desktop/package.json +++ b/apps/web/desktop/package.json @@ -8,6 +8,7 @@ "homepage": "https://notesnook.com/", "repository": "https://github.com/streetwriters/notesnook", "dependencies": { + "electron-data-storage": "^1.0.7", "electron-serve": "^1.1.0", "electron-updater": "^4.3.8", "node-fetch": "^2.6.1" diff --git a/apps/web/desktop/theme.js b/apps/web/desktop/theme.js new file mode 100644 index 000000000..fcb341b6d --- /dev/null +++ b/apps/web/desktop/theme.js @@ -0,0 +1,17 @@ +const storage = require("electron-data-storage").default; + +function getTheme() { + return storage.getSync("theme") || "light"; +} + +function setTheme(theme) { + return storage.set("theme", theme); +} + +function getBackgroundColor() { + const theme = getTheme(); + console.log("THEME", theme); + return theme === "dark" ? "#0f0f0f" : "#fff"; +} + +module.exports = { getTheme, setTheme, getBackgroundColor }; diff --git a/apps/web/desktop/yarn.lock b/apps/web/desktop/yarn.lock index 830473156..799be521c 100644 --- a/apps/web/desktop/yarn.lock +++ b/apps/web/desktop/yarn.lock @@ -803,6 +803,11 @@ electron-builder@^22.11.7: update-notifier "^5.1.0" yargs "^17.0.1" +electron-data-storage@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/electron-data-storage/-/electron-data-storage-1.0.7.tgz#983322d44f9af0bb6f5c9cb66eccc291e14ff486" + integrity sha512-dTT1l2DlEk2DqUVgOpaftJLMjRt0AkOGHR9tA2VUUFfs6ORRL+O0JJR93zjQngZCA9U9g/N0VBbsINdZDiVQGg== + electron-is-dev@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e" diff --git a/apps/web/public/index.html b/apps/web/public/index.html index bbb3b7f1f..9a9470cd3 100644 --- a/apps/web/public/index.html +++ b/apps/web/public/index.html @@ -69,11 +69,34 @@ Notesnook - Your private note taking space + @@ -107,7 +121,7 @@
- + - + -

- Taking too long? -
- Reload the app by pressing Shift + - F5 -
-
- If it still takes too long, please reload your browser. -