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 @@
- Taking too long?
-
- Reload the app by pressing Shift +
- F5
-
-
- If it still takes too long, please reload your browser.
-