aboutsummaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
Diffstat (limited to 'src/features')
-rw-r--r--src/features/accentColor/index.js55
-rw-r--r--src/features/announcements/api.js5
-rw-r--r--src/features/announcements/index.js7
-rw-r--r--src/features/todos/components/TodosWebview.js2
4 files changed, 61 insertions, 8 deletions
diff --git a/src/features/accentColor/index.js b/src/features/accentColor/index.js
new file mode 100644
index 000000000..a0f57a2fa
--- /dev/null
+++ b/src/features/accentColor/index.js
@@ -0,0 +1,55 @@
1import { reaction } from 'mobx';
2import themeInfo from '../../assets/themeInfo.json';
3import { DEFAULT_APP_SETTINGS } from '../../config';
4
5const STYLE_ELEMENT_ID = 'accent-color';
6
7function createAccentStyleElement() {
8 const styles = document.createElement('style');
9 styles.id = STYLE_ELEMENT_ID;
10
11 document.querySelector('head').appendChild(styles);
12}
13
14function setAccentStyle(style) {
15 const styleElement = document.getElementById(STYLE_ELEMENT_ID);
16 styleElement.innerHTML = style;
17}
18
19function generateAccentStyle(color) {
20 let style = '';
21
22 Object.keys(themeInfo).forEach((property) => {
23 style += `
24 ${themeInfo[property]} {
25 ${property}: ${color};
26 }
27 `;
28 });
29
30 return style;
31}
32
33export default function initAccentColor(stores) {
34 const { settings } = stores;
35 createAccentStyleElement();
36
37 // Update accent color
38 reaction(
39 () => (
40 settings.all.app.accentColor
41 ),
42 (color) => {
43 if (color === DEFAULT_APP_SETTINGS.accentColor) {
44 // Reset accent style to return to default color scheme
45 setAccentStyle('');
46 } else {
47 const style = generateAccentStyle(color);
48 setAccentStyle(style);
49 }
50 },
51 {
52 fireImmediately: true,
53 },
54 );
55}
diff --git a/src/features/announcements/api.js b/src/features/announcements/api.js
index a7995d6db..e5c5a7d6f 100644
--- a/src/features/announcements/api.js
+++ b/src/features/announcements/api.js
@@ -1,6 +1,5 @@
1import { remote } from 'electron'; 1import { remote } from 'electron';
2import Request from '../../stores/lib/Request'; 2import Request from '../../stores/lib/Request';
3import apiBase from '../../api/apiBase';
4 3
5const debug = require('debug')('Ferdi:feature:announcements:api'); 4const debug = require('debug')('Ferdi:feature:announcements:api');
6 5
@@ -12,7 +11,7 @@ export const announcementsApi = {
12 11
13 async getChangelog(version) { 12 async getChangelog(version) {
14 debug('fetching release changelog from Github'); 13 debug('fetching release changelog from Github');
15 const url = `https://api.github.com/repos/meetfranz/franz/releases/tags/v${version}`; 14 const url = `https://api.github.com/repos/getferdi/ferdi/releases/tags/v${version}`;
16 const request = await window.fetch(url, { method: 'GET' }); 15 const request = await window.fetch(url, { method: 'GET' });
17 if (!request.ok) return null; 16 if (!request.ok) return null;
18 const data = await request.json(); 17 const data = await request.json();
@@ -21,7 +20,7 @@ export const announcementsApi = {
21 20
22 async getAnnouncement(version) { 21 async getAnnouncement(version) {
23 debug('fetching release announcement from api'); 22 debug('fetching release announcement from api');
24 const url = `${apiBase()}/announcements/${version}`; 23 const url = `https://api.getferdi.com/v1/announcements/${version}`;
25 const response = await window.fetch(url, { method: 'GET' }); 24 const response = await window.fetch(url, { method: 'GET' });
26 if (!response.ok) return null; 25 if (!response.ok) return null;
27 return response.json(); 26 return response.json();
diff --git a/src/features/announcements/index.js b/src/features/announcements/index.js
index 42823e74c..10f081bb1 100644
--- a/src/features/announcements/index.js
+++ b/src/features/announcements/index.js
@@ -12,13 +12,12 @@ export const ANNOUNCEMENTS_ROUTES = {
12}; 12};
13 13
14export default function initAnnouncements(stores, actions) { 14export default function initAnnouncements(stores, actions) {
15 // const { features } = stores; 15 const { features } = stores;
16 16
17 // Toggle workspace feature 17 // Toggle announcement feature
18 reaction( 18 reaction(
19 () => ( 19 () => (
20 true 20 features.features.isAnnouncementsEnabled
21 // features.features.isAnnouncementsEnabled
22 ), 21 ),
23 (isEnabled) => { 22 (isEnabled) => {
24 if (isEnabled) { 23 if (isEnabled) {
diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js
index 35c102220..e9b1963f7 100644
--- a/src/features/todos/components/TodosWebview.js
+++ b/src/features/todos/components/TodosWebview.js
@@ -79,7 +79,7 @@ const styles = theme => ({
79 }, 79 },
80}); 80});
81 81
82@injectSheet(styles) @observer @inject('stores') 82@injectSheet(styles) @inject('stores') @observer
83class TodosWebview extends Component { 83class TodosWebview extends Component {
84 static propTypes = { 84 static propTypes = {
85 classes: PropTypes.object.isRequired, 85 classes: PropTypes.object.isRequired,