Skip to content

Commit 5c0eb20

Browse files
committed
Follow system theme by default
1 parent 009966a commit 5c0eb20

File tree

4 files changed

+46
-37
lines changed

4 files changed

+46
-37
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- Please read https://github.com/ajbura/cinny/CONTRIBUTING.md before submitting your pull request -->
1+
<!-- Please read https://github.com/ajbura/cinny/blob/dev/CONTRIBUTING.md before submitting your pull request -->
22

33
### Description
44
<!-- Please include a summary of the change. Please also include relevant motivation and context. List any dependencies that are required for this change. -->

src/app/organisms/settings/Settings.jsx

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,23 +57,25 @@ function AppearanceSection() {
5757
)}
5858
content={<Text variant="b3">Use light or dark mode based on the system settings.</Text>}
5959
/>
60-
{!settings.useSystemTheme && (
61-
<SettingTile
62-
title="Theme"
63-
content={(
64-
<SegmentedControls
65-
selected={settings.getThemeIndex()}
66-
segments={[
67-
{ text: 'Light' },
68-
{ text: 'Silver' },
69-
{ text: 'Dark' },
70-
{ text: 'Butter' },
71-
]}
72-
onSelect={(index) => settings.setTheme(index)}
73-
/>
74-
)}
75-
/>
60+
<SettingTile
61+
title="Theme"
62+
content={(
63+
<SegmentedControls
64+
selected={settings.useSystemTheme ? -1 : settings.getThemeIndex()}
65+
segments={[
66+
{ text: 'Light' },
67+
{ text: 'Silver' },
68+
{ text: 'Dark' },
69+
{ text: 'Butter' },
70+
]}
71+
onSelect={(index) => {
72+
if (settings.useSystemTheme) toggleSystemTheme();
73+
settings.setTheme(index);
74+
updateState({});
75+
}}
76+
/>
7677
)}
78+
/>
7779
</div>
7880
<div className="settings-appearance__card">
7981
<MenuHeader>Room messages</MenuHeader>

src/client/state/settings.js

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,31 +48,43 @@ class Settings extends EventEmitter {
4848
return this.themes[this.themeIndex];
4949
}
5050

51-
setTheme(themeIndex) {
52-
const appBody = document.getElementById('appBody');
53-
54-
appBody.classList.remove('system-theme');
51+
_clearTheme() {
52+
document.body.classList.remove('system-theme');
5553
this.themes.forEach((themeName) => {
5654
if (themeName === '') return;
57-
appBody.classList.remove(themeName);
55+
document.body.classList.remove(themeName);
5856
});
59-
// If use system theme is enabled
60-
// we will override current theme choice with system theme
57+
}
58+
59+
applyTheme() {
60+
this._clearTheme();
6161
if (this.useSystemTheme) {
62-
appBody.classList.add('system-theme');
63-
} else if (this.themes[themeIndex] !== '') {
64-
appBody.classList.add(this.themes[themeIndex]);
62+
document.body.classList.add('system-theme');
63+
} else if (this.themes[this.themeIndex]) {
64+
document.body.classList.add(this.themes[this.themeIndex]);
6565
}
66-
setSettings('themeIndex', themeIndex);
66+
}
67+
68+
setTheme(themeIndex) {
6769
this.themeIndex = themeIndex;
70+
setSettings('themeIndex', this.themeIndex);
71+
this.applyTheme();
72+
}
73+
74+
toggleUseSystemTheme() {
75+
this.useSystemTheme = !this.useSystemTheme;
76+
setSettings('useSystemTheme', this.useSystemTheme);
77+
this.applyTheme();
78+
79+
this.emit(cons.events.settings.SYSTEM_THEME_TOGGLED, this.useSystemTheme);
6880
}
6981

7082
getUseSystemTheme() {
7183
if (typeof this.useSystemTheme === 'boolean') return this.useSystemTheme;
7284

7385
const settings = getSettings();
74-
if (settings === null) return false;
75-
if (typeof settings.useSystemTheme === 'undefined') return false;
86+
if (settings === null) return true;
87+
if (typeof settings.useSystemTheme === 'undefined') return true;
7688
return settings.useSystemTheme;
7789
}
7890

@@ -138,12 +150,7 @@ class Settings extends EventEmitter {
138150
setter(action) {
139151
const actions = {
140152
[cons.actions.settings.TOGGLE_SYSTEM_THEME]: () => {
141-
this.useSystemTheme = !this.useSystemTheme;
142-
143-
setSettings('useSystemTheme', this.useSystemTheme);
144-
this.setTheme(this.themeIndex);
145-
146-
this.emit(cons.events.settings.SYSTEM_THEME_TOGGLED, this.useSystemTheme);
153+
this.toggleUseSystemTheme();
147154
},
148155
[cons.actions.settings.TOGGLE_MARKDOWN]: () => {
149156
this.isMarkdown = !this.isMarkdown;

src/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import settings from './client/state/settings';
77

88
import App from './app/pages/App';
99

10-
settings.setTheme(settings.getThemeIndex());
10+
settings.applyTheme();
1111

1212
ReactDom.render(
1313
<App />,

0 commit comments

Comments
 (0)