Browse Source

Add DarkReader support:

For both Rambox UI and Rambox Services (tabs)
Added checkbox in preferences enabling dark theme globally

Needs work:
- add dynamic update of services when toggled
(now they need to be reloaded)
- toggle global dark mode with hotkey
- add toggle per service (now it's global)
-- and a hotkey for that too; toggle current tab
-- toggle from the top, hideable menus bar or to the services row
pull/2823/head
Karol Putra 5 years ago
parent
commit
e4fe6efb85
  1. 7
      app/view/main/MainController.js
  2. 6
      app/view/preferences/Preferences.js
  3. 1
      electron/main.js
  4. 1
      package.json
  5. 14
      resources/js/darkreader.js
  6. 2
      resources/js/rambox-service-api.js
  7. 2
      resources/languages/en.js

7
app/view/main/MainController.js

@ -1,3 +1,5 @@
const darkreader = require('darkreader');
Ext.define('Rambox.view.main.MainController', {
extend: 'Ext.app.ViewController'
@ -6,6 +8,11 @@ Ext.define('Rambox.view.main.MainController', {
,initialize: function( tabPanel ) {
const config = ipc.sendSync('getConfig');
if (config.darkreader) {
darkreader.enable();
} else {
darkreader.disable();
}
tabPanel.setTabPosition(config.tabbar_location);
tabPanel.setTabRotation(0);

6
app/view/preferences/Preferences.js

@ -147,6 +147,12 @@ Ext.define('Rambox.view.preferences.Preferences',{
,boxLabel: locale['preferences[4]']
,value: config.start_minimized
}
,{
xtype: 'checkbox'
,name: 'darkreader'
,boxLabel: locale['preferences[29]']
,value: config.darkreader
}
,{
xtype: 'checkbox'
,name: 'hide_menu_bar'

1
electron/main.js

@ -29,6 +29,7 @@ const config = new Config({
,flash_frame: true
,window_close_behavior: 'keep_in_tray'
,start_minimized: false
,darkreader: true
,systemtray_indicator: true
,master_password: false
,dont_disturb: false

1
package.json

@ -209,6 +209,7 @@
"auth0-js": "9.13.2",
"auto-launch-patched": "5.0.2",
"crypto": "1.0.1",
"darkreader": "4.9.17",
"electron-contextmenu-wrapper": "2.0.0",
"electron-is-dev": "0.3.0",
"electron-log": "2.2.17",

14
resources/js/darkreader.js

@ -0,0 +1,14 @@
const { ipcRenderer } = require('electron');
const darkreader = require('darkreader');
darkreader.setFetchMethod(window.fetch);
const getIsEnabled = () => ipcRenderer.sendSync('getConfig').darkreader;
const canEnable = () => document.readyState === 'complete' || document.readyState === 'interactive';
document.addEventListener('readystatechange', () => {
console.log(document.readyState)
if (canEnable()) {
getIsEnabled()? darkreader.enable(): darkreader.disable();
}
});

2
resources/js/rambox-service-api.js

@ -1,7 +1,7 @@
/**
* This file is loaded in the service web views to provide a Rambox API.
*/
require("./darkreader.js")
const { ipcRenderer } = require('electron');
const { ContextMenuBuilder, ContextMenuListener } = require('electron-contextmenu-wrapper');

2
resources/languages/en.js

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save