Skip to content
This repository was archived by the owner on May 20, 2023. It is now read-only.

Commit df25236

Browse files
author
HarshKhandeparkar
committed
feat: working electron persistent settings support
1 parent 9010efb commit df25236

File tree

12 files changed

+111
-92
lines changed

12 files changed

+111
-92
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"homepage": ".",
1212
"website": "https://harshkhandeparkar.github.io/rainbow-board",
1313
"dependencies": {
14-
"electron-is-dev": "^1.2.0"
14+
"electron-is-dev": "^1.2.0",
15+
"electron-settings": "^4.0.2"
1516
},
1617
"scripts": {
1718
"start": "concurrently 'BROWSER=none react-scripts start' 'wait-on tcp:3000 && electron-forge start'",
@@ -24,6 +25,7 @@
2425
"pack": "electron-builder --dir",
2526
"dist": "yarn build && electron-builder",
2627
"ship": "yarn build && electron-forge make && electron-builder",
28+
"ebuild": "yarn build && electron-builder",
2729
"postinstall": "electron-builder install-app-deps"
2830
},
2931
"eslintConfig": {

public/electron.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ const isDev = require('electron-is-dev');
55
function createMainWindow() {
66
const win = new BrowserWindow({
77
webPreferences: {
8-
devTools: isDev
8+
devTools: isDev,
9+
enableRemoteModule: true,
10+
nodeIntegration: true
911
},
1012
icon: path.join(__dirname, 'public', 'logo512.png')
1113
})

src/App.jsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Pages from './components/Pages/Pages.jsx';
55
import Credits from './components/Credits/Credits';
66
import WhatsNew from './components/WhatsNew/WhatsNew';
77

8-
import { setCookie } from './util/cookies';
8+
import { setSetting } from './util/settings';
99

1010
class App extends Component {
1111
whiteTheme = {
@@ -31,22 +31,22 @@ class App extends Component {
3131
setTheme(theme) {
3232
if (theme === 'white') {
3333
this.setState({theme: this.whiteTheme});
34-
setCookie('theme', theme);
34+
setSetting('theme', theme);
3535
}
3636
else if (theme === 'dark') {
3737
this.setState({theme: this.darkTheme});
38-
setCookie('theme', theme);
38+
setSetting('theme', theme);
3939
}
4040
}
4141

4242
toggleTheme() {
4343
if (this.state.theme === this.whiteTheme) {
4444
this.setState({theme: this.darkTheme});
45-
setCookie('theme', 'dark');
45+
setSetting('theme', 'dark');
4646
}
4747
else {
4848
this.setState({theme: this.whiteTheme});
49-
setCookie('theme', 'white');
49+
setSetting('theme', 'white');
5050
}
5151
}
5252

src/components/Download/Download.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import M from 'materialize-css';
33
import { gt } from 'semver';
44
import { version } from '../../../package.json';
55

6+
import { isElectron } from '../../util/isElectron';
7+
68
export default class Download extends Component {
79
state = {
810
latestVersion: version,
@@ -19,13 +21,13 @@ export default class Download extends Component {
1921
return (
2022
<div>
2123
{
22-
(!navigator.userAgent.toLowerCase().includes('electron') || gt(this.state.latestVersion, version)) &&
24+
(!isElectron || gt(this.state.latestVersion, version)) &&
2325
(
2426
<div>
2527
<button className="dropdown-trigger btn center brand-text" data-target="download-dropdown">
2628
<i className="fa fa-download left" />
2729
Download {
28-
navigator.userAgent.toLowerCase().includes('electron') ? 'New Version' : 'Desktop App'
30+
isElectron ? 'New Version' : 'Desktop App'
2931
}
3032
</button>
3133

src/components/Main.jsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,17 @@ import { NavLink, useHistory } from 'react-router-dom';
22
import { version } from '../../package.json';
33
import Download from './Download/Download';
44

5-
import { hasCookie, getCookie } from '../util/cookies';
5+
import { hasSetting, getSetting } from '../util/settings';
66

77
function Main({toggleTheme, getTheme}) {
88
const history = useHistory();
9+
let doShowChangelog = true;
910

10-
hasCookie('lastVersionChangelogShown').then((doesHaveCookie) => {
11-
if (doesHaveCookie) {
12-
getCookie('lastVersionChangelogShown').then((cookie) => {
13-
if (cookie !== version) history.push('/new');
14-
})
15-
}
16-
else history.push('/new');
17-
})
11+
if (hasSetting('lastVersionChangelogShown')) {
12+
if (getSetting('lastVersionChangelogShown') === version) doShowChangelog = false;
13+
}
1814

15+
if (doShowChangelog) history.push('/new');
1916

2017
return (
2118
<div id="main">

src/components/Page/Page.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import SVGSaver from 'svgsaver';
77
import { Toolbar } from './Toolbar/Toolbar';
88

99
import '../Page/Page.css';
10+
import { isElectron } from '../../util/isElectron';
1011

1112
export class Page extends Component {
1213
constructor(...props) {
@@ -58,7 +59,7 @@ export class Page extends Component {
5859
}
5960
})
6061

61-
if (!navigator.userAgent.toLowerCase().includes('electron')) {
62+
if (!isElectron) {
6263
window.onbeforeunload = function() {
6364
return `Do you want to leave this page? You may lose saved changes.`;
6465
}

src/components/WhatsNew/WhatsNew.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
22
import { NavLink } from 'react-router-dom';
33
import './WhatsNew.css';
44

5-
import { setCookie } from '../../util/cookies';
5+
import { setSetting } from '../../util/settings';
66
import { version } from '../../../package.json';
77

88
function New({title, desc, version, link}) {
@@ -30,7 +30,7 @@ function New({title, desc, version, link}) {
3030

3131
export default class WhatsNew extends Component {
3232
componentDidMount() {
33-
setCookie('lastVersionChangelogShown', version);
33+
setSetting('lastVersionChangelogShown', version);
3434
}
3535

3636
render() {

src/index.js

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,18 @@ import './css/index.css';
88
import './css/font-awesome.min.css';
99
import 'material-icons/iconfont/material-icons.css';
1010

11-
import { getCookie, hasCookie } from './util/cookies';
11+
import { getSetting, hasSetting } from './util/settings';
1212

1313
let theme = 'white';
1414

15-
hasCookie('theme').then((doesHaveCookie) => {
16-
if (doesHaveCookie) getCookie('theme').then((cookie) => {
17-
theme = cookie;
18-
ReactDOM.render(
19-
<React.StrictMode>
20-
<App theme={theme} />
21-
</React.StrictMode>,
22-
document.getElementById('root')
23-
)
24-
})
25-
else ReactDOM.render(
26-
<React.StrictMode>
27-
<App theme={theme} />
28-
</React.StrictMode>,
29-
document.getElementById('root')
30-
)
31-
})
15+
if (hasSetting('theme')) theme = getSetting('theme');
16+
17+
ReactDOM.render(
18+
<React.StrictMode>
19+
<App theme={theme} />
20+
</React.StrictMode>,
21+
document.getElementById('root')
22+
)
3223

3324
// If you want to start measuring performance in your app, pass a function
3425
// to log results (for example: reportWebVitals(console.log))

src/util/cookies.js

Lines changed: 0 additions & 51 deletions
This file was deleted.

src/util/isElectron.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const isElectron = navigator.userAgent.toLowerCase().includes('electron');

0 commit comments

Comments
 (0)