aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Vijay A <avijayr@protonmail.com>2021-08-11 22:32:58 +0530
committerLibravatar Vijay A <avijayr@protonmail.com>2021-08-11 22:32:58 +0530
commit3405e22bf2bcddef2de0d59453c978fd1ea03836 (patch)
tree4e74b051ce53000d88960484a7d9112a662a26af
parentrefactor: removed legacy properties from recipes (diff)
downloadferdium-app-3405e22bf2bcddef2de0d59453c978fd1ea03836.tar.gz
ferdium-app-3405e22bf2bcddef2de0d59453c978fd1ea03836.tar.zst
ferdium-app-3405e22bf2bcddef2de0d59453c978fd1ea03836.zip
feat: allow the user to enable/disable dark mode
(from the sidebar context menu)
-rw-r--r--src/actions/service.js3
-rw-r--r--src/components/layout/Sidebar.js1
-rw-r--r--src/components/services/tabs/TabBarSortableList.js3
-rw-r--r--src/components/services/tabs/TabItem.js16
-rw-r--r--src/components/services/tabs/Tabbar.js3
-rw-r--r--src/containers/layout/AppLayoutContainer.js2
-rw-r--r--src/i18n/locales/defaultMessages.json50
-rw-r--r--src/i18n/locales/en-US.json2
-rw-r--r--src/i18n/messages/src/components/services/tabs/TabItem.json50
-rw-r--r--src/internal-server/app/Controllers/Http/ServiceController.js6
-rw-r--r--src/stores/ServicesStore.js13
11 files changed, 122 insertions, 27 deletions
diff --git a/src/actions/service.js b/src/actions/service.js
index 578fdeca8..e56513f8f 100644
--- a/src/actions/service.js
+++ b/src/actions/service.js
@@ -91,6 +91,9 @@ export default {
91 toggleAudio: { 91 toggleAudio: {
92 serviceId: PropTypes.string.isRequired, 92 serviceId: PropTypes.string.isRequired,
93 }, 93 },
94 toggleDarkMode: {
95 serviceId: PropTypes.string.isRequired,
96 },
94 openDevTools: { 97 openDevTools: {
95 serviceId: PropTypes.string.isRequired, 98 serviceId: PropTypes.string.isRequired,
96 }, 99 },
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index a3dbc3539..daa5642c3 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -61,6 +61,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp
61 reload: PropTypes.func.isRequired, 61 reload: PropTypes.func.isRequired,
62 toggleNotifications: PropTypes.func.isRequired, 62 toggleNotifications: PropTypes.func.isRequired,
63 toggleAudio: PropTypes.func.isRequired, 63 toggleAudio: PropTypes.func.isRequired,
64 toggleDarkMode: PropTypes.func.isRequired,
64 showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired, 65 showMessageBadgeWhenMutedSetting: PropTypes.bool.isRequired,
65 showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired, 66 showMessageBadgesEvenWhenMuted: PropTypes.bool.isRequired,
66 deleteService: PropTypes.func.isRequired, 67 deleteService: PropTypes.func.isRequired,
diff --git a/src/components/services/tabs/TabBarSortableList.js b/src/components/services/tabs/TabBarSortableList.js
index 117d799d7..1a389991d 100644
--- a/src/components/services/tabs/TabBarSortableList.js
+++ b/src/components/services/tabs/TabBarSortableList.js
@@ -14,6 +14,7 @@ class TabBarSortableList extends Component {
14 reload: PropTypes.func.isRequired, 14 reload: PropTypes.func.isRequired,
15 toggleNotifications: PropTypes.func.isRequired, 15 toggleNotifications: PropTypes.func.isRequired,
16 toggleAudio: PropTypes.func.isRequired, 16 toggleAudio: PropTypes.func.isRequired,
17 toggleDarkMode: PropTypes.func.isRequired,
17 deleteService: PropTypes.func.isRequired, 18 deleteService: PropTypes.func.isRequired,
18 disableService: PropTypes.func.isRequired, 19 disableService: PropTypes.func.isRequired,
19 enableService: PropTypes.func.isRequired, 20 enableService: PropTypes.func.isRequired,
@@ -30,6 +31,7 @@ class TabBarSortableList extends Component {
30 reload, 31 reload,
31 toggleNotifications, 32 toggleNotifications,
32 toggleAudio, 33 toggleAudio,
34 toggleDarkMode,
33 deleteService, 35 deleteService,
34 disableService, 36 disableService,
35 enableService, 37 enableService,
@@ -54,6 +56,7 @@ class TabBarSortableList extends Component {
54 reload={() => reload({ serviceId: service.id })} 56 reload={() => reload({ serviceId: service.id })}
55 toggleNotifications={() => toggleNotifications({ serviceId: service.id })} 57 toggleNotifications={() => toggleNotifications({ serviceId: service.id })}
56 toggleAudio={() => toggleAudio({ serviceId: service.id })} 58 toggleAudio={() => toggleAudio({ serviceId: service.id })}
59 toggleDarkMode={() => toggleDarkMode({ serviceId: service.id })}
57 deleteService={() => deleteService({ serviceId: service.id })} 60 deleteService={() => deleteService({ serviceId: service.id })}
58 disableService={() => disableService({ serviceId: service.id })} 61 disableService={() => disableService({ serviceId: service.id })}
59 enableService={() => enableService({ serviceId: service.id })} 62 enableService={() => enableService({ serviceId: service.id })}
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js
index d4a4048eb..3c27cca73 100644
--- a/src/components/services/tabs/TabItem.js
+++ b/src/components/services/tabs/TabItem.js
@@ -41,6 +41,14 @@ const messages = defineMessages({
41 id: 'tabs.item.enableAudio', 41 id: 'tabs.item.enableAudio',
42 defaultMessage: '!!!Enable audio', 42 defaultMessage: '!!!Enable audio',
43 }, 43 },
44 enableDarkMode: {
45 id: 'tabs.item.enableDarkMode',
46 defaultMessage: '!!!Enable Dark mode',
47 },
48 disableDarkMode: {
49 id: 'tabs.item.disableDarkMode',
50 defaultMessage: '!!!Disable Dark mode',
51 },
44 disableService: { 52 disableService: {
45 id: 'tabs.item.disableService', 53 id: 'tabs.item.disableService',
46 defaultMessage: '!!!Disable Service', 54 defaultMessage: '!!!Disable Service',
@@ -118,6 +126,7 @@ class TabItem extends Component {
118 reload: PropTypes.func.isRequired, 126 reload: PropTypes.func.isRequired,
119 toggleNotifications: PropTypes.func.isRequired, 127 toggleNotifications: PropTypes.func.isRequired,
120 toggleAudio: PropTypes.func.isRequired, 128 toggleAudio: PropTypes.func.isRequired,
129 toggleDarkMode: PropTypes.func.isRequired,
121 openSettings: PropTypes.func.isRequired, 130 openSettings: PropTypes.func.isRequired,
122 deleteService: PropTypes.func.isRequired, 131 deleteService: PropTypes.func.isRequired,
123 disableService: PropTypes.func.isRequired, 132 disableService: PropTypes.func.isRequired,
@@ -169,6 +178,7 @@ class TabItem extends Component {
169 reload, 178 reload,
170 toggleNotifications, 179 toggleNotifications,
171 toggleAudio, 180 toggleAudio,
181 toggleDarkMode,
172 deleteService, 182 deleteService,
173 disableService, 183 disableService,
174 enableService, 184 enableService,
@@ -216,6 +226,12 @@ class TabItem extends Component {
216 click: () => toggleAudio(), 226 click: () => toggleAudio(),
217 }, 227 },
218 { 228 {
229 label: service.isDarkModeEnabled
230 ? intl.formatMessage(messages.enableDarkMode)
231 : intl.formatMessage(messages.disableDarkMode),
232 click: () => toggleDarkMode(),
233 },
234 {
219 label: intl.formatMessage( 235 label: intl.formatMessage(
220 service.isEnabled ? messages.disableService : messages.enableService, 236 service.isEnabled ? messages.disableService : messages.enableService,
221 ), 237 ),
diff --git a/src/components/services/tabs/Tabbar.js b/src/components/services/tabs/Tabbar.js
index 0f608c415..ab1e46c9f 100644
--- a/src/components/services/tabs/Tabbar.js
+++ b/src/components/services/tabs/Tabbar.js
@@ -15,6 +15,7 @@ export default @observer class TabBar extends Component {
15 reload: PropTypes.func.isRequired, 15 reload: PropTypes.func.isRequired,
16 toggleNotifications: PropTypes.func.isRequired, 16 toggleNotifications: PropTypes.func.isRequired,
17 toggleAudio: PropTypes.func.isRequired, 17 toggleAudio: PropTypes.func.isRequired,
18 toggleDarkMode: PropTypes.func.isRequired,
18 deleteService: PropTypes.func.isRequired, 19 deleteService: PropTypes.func.isRequired,
19 updateService: PropTypes.func.isRequired, 20 updateService: PropTypes.func.isRequired,
20 hibernateService: PropTypes.func.isRequired, 21 hibernateService: PropTypes.func.isRequired,
@@ -78,6 +79,7 @@ export default @observer class TabBar extends Component {
78 reload, 79 reload,
79 toggleNotifications, 80 toggleNotifications,
80 toggleAudio, 81 toggleAudio,
82 toggleDarkMode,
81 deleteService, 83 deleteService,
82 showMessageBadgeWhenMutedSetting, 84 showMessageBadgeWhenMutedSetting,
83 showMessageBadgesEvenWhenMuted, 85 showMessageBadgesEvenWhenMuted,
@@ -94,6 +96,7 @@ export default @observer class TabBar extends Component {
94 reload={reload} 96 reload={reload}
95 toggleNotifications={toggleNotifications} 97 toggleNotifications={toggleNotifications}
96 toggleAudio={toggleAudio} 98 toggleAudio={toggleAudio}
99 toggleDarkMode={toggleDarkMode}
97 deleteService={deleteService} 100 deleteService={deleteService}
98 disableService={(args) => this.disableService(args)} 101 disableService={(args) => this.disableService(args)}
99 enableService={(args) => this.enableService(args)} 102 enableService={(args) => this.enableService(args)}
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index fff628946..32b1f1cf7 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -54,6 +54,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
54 reload, 54 reload,
55 toggleNotifications, 55 toggleNotifications,
56 toggleAudio, 56 toggleAudio,
57 toggleDarkMode,
57 deleteService, 58 deleteService,
58 updateService, 59 updateService,
59 hibernate, 60 hibernate,
@@ -109,6 +110,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e
109 reload={reload} 110 reload={reload}
110 toggleNotifications={toggleNotifications} 111 toggleNotifications={toggleNotifications}
111 toggleAudio={toggleAudio} 112 toggleAudio={toggleAudio}
113 toggleDarkMode={toggleDarkMode}
112 deleteService={deleteService} 114 deleteService={deleteService}
113 updateService={updateService} 115 updateService={updateService}
114 hibernateService={hibernate} 116 hibernateService={hibernate}
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index 4279ba079..683ec4628 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -1771,81 +1771,107 @@
1771 } 1771 }
1772 }, 1772 },
1773 { 1773 {
1774 "defaultMessage": "!!!Disable Service", 1774 "defaultMessage": "!!!Enable Dark mode",
1775 "end": { 1775 "end": {
1776 "column": 3, 1776 "column": 3,
1777 "line": 47 1777 "line": 47
1778 }, 1778 },
1779 "file": "src/components/services/tabs/TabItem.js", 1779 "file": "src/components/services/tabs/TabItem.js",
1780 "id": "tabs.item.disableService", 1780 "id": "tabs.item.enableDarkMode",
1781 "start": { 1781 "start": {
1782 "column": 18, 1782 "column": 18,
1783 "line": 44 1783 "line": 44
1784 } 1784 }
1785 }, 1785 },
1786 { 1786 {
1787 "defaultMessage": "!!!Enable Service", 1787 "defaultMessage": "!!!Disable Dark mode",
1788 "end": { 1788 "end": {
1789 "column": 3, 1789 "column": 3,
1790 "line": 51 1790 "line": 51
1791 }, 1791 },
1792 "file": "src/components/services/tabs/TabItem.js", 1792 "file": "src/components/services/tabs/TabItem.js",
1793 "id": "tabs.item.disableDarkMode",
1794 "start": {
1795 "column": 19,
1796 "line": 48
1797 }
1798 },
1799 {
1800 "defaultMessage": "!!!Disable Service",
1801 "end": {
1802 "column": 3,
1803 "line": 55
1804 },
1805 "file": "src/components/services/tabs/TabItem.js",
1806 "id": "tabs.item.disableService",
1807 "start": {
1808 "column": 18,
1809 "line": 52
1810 }
1811 },
1812 {
1813 "defaultMessage": "!!!Enable Service",
1814 "end": {
1815 "column": 3,
1816 "line": 59
1817 },
1818 "file": "src/components/services/tabs/TabItem.js",
1793 "id": "tabs.item.enableService", 1819 "id": "tabs.item.enableService",
1794 "start": { 1820 "start": {
1795 "column": 17, 1821 "column": 17,
1796 "line": 48 1822 "line": 56
1797 } 1823 }
1798 }, 1824 },
1799 { 1825 {
1800 "defaultMessage": "!!!Hibernate Service", 1826 "defaultMessage": "!!!Hibernate Service",
1801 "end": { 1827 "end": {
1802 "column": 3, 1828 "column": 3,
1803 "line": 55 1829 "line": 63
1804 }, 1830 },
1805 "file": "src/components/services/tabs/TabItem.js", 1831 "file": "src/components/services/tabs/TabItem.js",
1806 "id": "tabs.item.hibernateService", 1832 "id": "tabs.item.hibernateService",
1807 "start": { 1833 "start": {
1808 "column": 20, 1834 "column": 20,
1809 "line": 52 1835 "line": 60
1810 } 1836 }
1811 }, 1837 },
1812 { 1838 {
1813 "defaultMessage": "!!!Wake Up Service", 1839 "defaultMessage": "!!!Wake Up Service",
1814 "end": { 1840 "end": {
1815 "column": 3, 1841 "column": 3,
1816 "line": 59 1842 "line": 67
1817 }, 1843 },
1818 "file": "src/components/services/tabs/TabItem.js", 1844 "file": "src/components/services/tabs/TabItem.js",
1819 "id": "tabs.item.wakeUpService", 1845 "id": "tabs.item.wakeUpService",
1820 "start": { 1846 "start": {
1821 "column": 17, 1847 "column": 17,
1822 "line": 56 1848 "line": 64
1823 } 1849 }
1824 }, 1850 },
1825 { 1851 {
1826 "defaultMessage": "!!!Delete Service", 1852 "defaultMessage": "!!!Delete Service",
1827 "end": { 1853 "end": {
1828 "column": 3, 1854 "column": 3,
1829 "line": 63 1855 "line": 71
1830 }, 1856 },
1831 "file": "src/components/services/tabs/TabItem.js", 1857 "file": "src/components/services/tabs/TabItem.js",
1832 "id": "tabs.item.deleteService", 1858 "id": "tabs.item.deleteService",
1833 "start": { 1859 "start": {
1834 "column": 17, 1860 "column": 17,
1835 "line": 60 1861 "line": 68
1836 } 1862 }
1837 }, 1863 },
1838 { 1864 {
1839 "defaultMessage": "!!!Do you really want to delete the {serviceName} service?", 1865 "defaultMessage": "!!!Do you really want to delete the {serviceName} service?",
1840 "end": { 1866 "end": {
1841 "column": 3, 1867 "column": 3,
1842 "line": 68 1868 "line": 76
1843 }, 1869 },
1844 "file": "src/components/services/tabs/TabItem.js", 1870 "file": "src/components/services/tabs/TabItem.js",
1845 "id": "tabs.item.confirmDeleteService", 1871 "id": "tabs.item.confirmDeleteService",
1846 "start": { 1872 "start": {
1847 "column": 24, 1873 "column": 24,
1848 "line": 64 1874 "line": 72
1849 } 1875 }
1850 } 1876 }
1851 ], 1877 ],
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 1705d20e8..002ea5655 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -434,10 +434,12 @@
434 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?", 434 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?",
435 "tabs.item.deleteService": "Delete service", 435 "tabs.item.deleteService": "Delete service",
436 "tabs.item.disableAudio": "Disable audio", 436 "tabs.item.disableAudio": "Disable audio",
437 "tabs.item.disableDarkMode": "Disable Dark mode",
437 "tabs.item.disableNotifications": "Disable notifications", 438 "tabs.item.disableNotifications": "Disable notifications",
438 "tabs.item.disableService": "Disable service", 439 "tabs.item.disableService": "Disable service",
439 "tabs.item.edit": "Edit", 440 "tabs.item.edit": "Edit",
440 "tabs.item.enableAudio": "Enable audio", 441 "tabs.item.enableAudio": "Enable audio",
442 "tabs.item.enableDarkMode": "Enable Dark mode",
441 "tabs.item.enableNotification": "Enable notifications", 443 "tabs.item.enableNotification": "Enable notifications",
442 "tabs.item.enableService": "Enable service", 444 "tabs.item.enableService": "Enable service",
443 "tabs.item.hibernateService": "Hibernate service", 445 "tabs.item.hibernateService": "Hibernate service",
diff --git a/src/i18n/messages/src/components/services/tabs/TabItem.json b/src/i18n/messages/src/components/services/tabs/TabItem.json
index 60cfde52d..92ff6fb14 100644
--- a/src/i18n/messages/src/components/services/tabs/TabItem.json
+++ b/src/i18n/messages/src/components/services/tabs/TabItem.json
@@ -78,8 +78,8 @@
78 } 78 }
79 }, 79 },
80 { 80 {
81 "id": "tabs.item.disableService", 81 "id": "tabs.item.enableDarkMode",
82 "defaultMessage": "!!!Disable Service", 82 "defaultMessage": "!!!Enable Dark mode",
83 "file": "src/components/services/tabs/TabItem.js", 83 "file": "src/components/services/tabs/TabItem.js",
84 "start": { 84 "start": {
85 "line": 44, 85 "line": 44,
@@ -91,15 +91,41 @@
91 } 91 }
92 }, 92 },
93 { 93 {
94 "id": "tabs.item.disableDarkMode",
95 "defaultMessage": "!!!Disable Dark mode",
96 "file": "src/components/services/tabs/TabItem.js",
97 "start": {
98 "line": 48,
99 "column": 19
100 },
101 "end": {
102 "line": 51,
103 "column": 3
104 }
105 },
106 {
107 "id": "tabs.item.disableService",
108 "defaultMessage": "!!!Disable Service",
109 "file": "src/components/services/tabs/TabItem.js",
110 "start": {
111 "line": 52,
112 "column": 18
113 },
114 "end": {
115 "line": 55,
116 "column": 3
117 }
118 },
119 {
94 "id": "tabs.item.enableService", 120 "id": "tabs.item.enableService",
95 "defaultMessage": "!!!Enable Service", 121 "defaultMessage": "!!!Enable Service",
96 "file": "src/components/services/tabs/TabItem.js", 122 "file": "src/components/services/tabs/TabItem.js",
97 "start": { 123 "start": {
98 "line": 48, 124 "line": 56,
99 "column": 17 125 "column": 17
100 }, 126 },
101 "end": { 127 "end": {
102 "line": 51, 128 "line": 59,
103 "column": 3 129 "column": 3
104 } 130 }
105 }, 131 },
@@ -108,11 +134,11 @@
108 "defaultMessage": "!!!Hibernate Service", 134 "defaultMessage": "!!!Hibernate Service",
109 "file": "src/components/services/tabs/TabItem.js", 135 "file": "src/components/services/tabs/TabItem.js",
110 "start": { 136 "start": {
111 "line": 52, 137 "line": 60,
112 "column": 20 138 "column": 20
113 }, 139 },
114 "end": { 140 "end": {
115 "line": 55, 141 "line": 63,
116 "column": 3 142 "column": 3
117 } 143 }
118 }, 144 },
@@ -121,11 +147,11 @@
121 "defaultMessage": "!!!Wake Up Service", 147 "defaultMessage": "!!!Wake Up Service",
122 "file": "src/components/services/tabs/TabItem.js", 148 "file": "src/components/services/tabs/TabItem.js",
123 "start": { 149 "start": {
124 "line": 56, 150 "line": 64,
125 "column": 17 151 "column": 17
126 }, 152 },
127 "end": { 153 "end": {
128 "line": 59, 154 "line": 67,
129 "column": 3 155 "column": 3
130 } 156 }
131 }, 157 },
@@ -134,11 +160,11 @@
134 "defaultMessage": "!!!Delete Service", 160 "defaultMessage": "!!!Delete Service",
135 "file": "src/components/services/tabs/TabItem.js", 161 "file": "src/components/services/tabs/TabItem.js",
136 "start": { 162 "start": {
137 "line": 60, 163 "line": 68,
138 "column": 17 164 "column": 17
139 }, 165 },
140 "end": { 166 "end": {
141 "line": 63, 167 "line": 71,
142 "column": 3 168 "column": 3
143 } 169 }
144 }, 170 },
@@ -147,11 +173,11 @@
147 "defaultMessage": "!!!Do you really want to delete the {serviceName} service?", 173 "defaultMessage": "!!!Do you really want to delete the {serviceName} service?",
148 "file": "src/components/services/tabs/TabItem.js", 174 "file": "src/components/services/tabs/TabItem.js",
149 "start": { 175 "start": {
150 "line": 64, 176 "line": 72,
151 "column": 24 177 "column": 24
152 }, 178 },
153 "end": { 179 "end": {
154 "line": 68, 180 "line": 76,
155 "column": 3 181 "column": 3
156 } 182 }
157 } 183 }
diff --git a/src/internal-server/app/Controllers/Http/ServiceController.js b/src/internal-server/app/Controllers/Http/ServiceController.js
index e4a7f0295..d98ba146e 100644
--- a/src/internal-server/app/Controllers/Http/ServiceController.js
+++ b/src/internal-server/app/Controllers/Http/ServiceController.js
@@ -52,7 +52,7 @@ class ServiceController {
52 isNotificationEnabled: true, 52 isNotificationEnabled: true,
53 isBadgeEnabled: true, 53 isBadgeEnabled: true,
54 isMuted: false, 54 isMuted: false,
55 isDarkModeEnabled: '', 55 isDarkModeEnabled: false,
56 spellcheckerLanguage: '', 56 spellcheckerLanguage: '',
57 order: 1, 57 order: 1,
58 customRecipe: false, 58 customRecipe: false,
@@ -79,7 +79,7 @@ class ServiceController {
79 customRecipe: false, 79 customRecipe: false,
80 hasCustomIcon: false, 80 hasCustomIcon: false,
81 isBadgeEnabled: true, 81 isBadgeEnabled: true,
82 isDarkModeEnabled: '', 82 isDarkModeEnabled: false,
83 isEnabled: true, 83 isEnabled: true,
84 isMuted: false, 84 isMuted: false,
85 isNotificationEnabled: true, 85 isNotificationEnabled: true,
@@ -253,7 +253,7 @@ class ServiceController {
253 customRecipe: false, 253 customRecipe: false,
254 hasCustomIcon: false, 254 hasCustomIcon: false,
255 isBadgeEnabled: true, 255 isBadgeEnabled: true,
256 isDarkModeEnabled: '', 256 isDarkModeEnabled: false,
257 isEnabled: true, 257 isEnabled: true,
258 isMuted: false, 258 isMuted: false,
259 isNotificationEnabled: true, 259 isNotificationEnabled: true,
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 499495d08..4ccb995ae 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -97,6 +97,7 @@ export default class ServicesStore extends Store {
97 this._toggleNotifications.bind(this), 97 this._toggleNotifications.bind(this),
98 ); 98 );
99 this.actions.service.toggleAudio.listen(this._toggleAudio.bind(this)); 99 this.actions.service.toggleAudio.listen(this._toggleAudio.bind(this));
100 this.actions.service.toggleDarkMode.listen(this._toggleDarkMode.bind(this));
100 this.actions.service.openDevTools.listen(this._openDevTools.bind(this)); 101 this.actions.service.openDevTools.listen(this._openDevTools.bind(this));
101 this.actions.service.openDevToolsForActiveService.listen( 102 this.actions.service.openDevToolsForActiveService.listen(
102 this._openDevToolsForActiveService.bind(this), 103 this._openDevToolsForActiveService.bind(this),
@@ -916,6 +917,18 @@ export default class ServicesStore extends Store {
916 }); 917 });
917 } 918 }
918 919
920 @action _toggleDarkMode({ serviceId }) {
921 const service = this.one(serviceId);
922
923 this.actions.service.updateService({
924 serviceId,
925 serviceData: {
926 isDarkModeEnabled: !service.isDarkModeEnabled,
927 },
928 redirect: false,
929 });
930 }
931
919 @action _openDevTools({ serviceId }) { 932 @action _openDevTools({ serviceId }) {
920 const service = this.one(serviceId); 933 const service = this.one(serviceId);
921 if (service.isTodosService) { 934 if (service.isTodosService) {