diff options
Diffstat (limited to 'src/features')
-rw-r--r-- | src/features/accentColor/index.js | 55 | ||||
-rw-r--r-- | src/features/announcements/api.js | 5 | ||||
-rw-r--r-- | src/features/announcements/index.js | 7 | ||||
-rw-r--r-- | src/features/todos/components/TodosWebview.js | 2 |
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 @@ | |||
1 | import { reaction } from 'mobx'; | ||
2 | import themeInfo from '../../assets/themeInfo.json'; | ||
3 | import { DEFAULT_APP_SETTINGS } from '../../config'; | ||
4 | |||
5 | const STYLE_ELEMENT_ID = 'accent-color'; | ||
6 | |||
7 | function createAccentStyleElement() { | ||
8 | const styles = document.createElement('style'); | ||
9 | styles.id = STYLE_ELEMENT_ID; | ||
10 | |||
11 | document.querySelector('head').appendChild(styles); | ||
12 | } | ||
13 | |||
14 | function setAccentStyle(style) { | ||
15 | const styleElement = document.getElementById(STYLE_ELEMENT_ID); | ||
16 | styleElement.innerHTML = style; | ||
17 | } | ||
18 | |||
19 | function 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 | |||
33 | export 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 @@ | |||
1 | import { remote } from 'electron'; | 1 | import { remote } from 'electron'; |
2 | import Request from '../../stores/lib/Request'; | 2 | import Request from '../../stores/lib/Request'; |
3 | import apiBase from '../../api/apiBase'; | ||
4 | 3 | ||
5 | const debug = require('debug')('Ferdi:feature:announcements:api'); | 4 | const 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 | ||
14 | export default function initAnnouncements(stores, actions) { | 14 | export 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 |
83 | class TodosWebview extends Component { | 83 | class TodosWebview extends Component { |
84 | static propTypes = { | 84 | static propTypes = { |
85 | classes: PropTypes.object.isRequired, | 85 | classes: PropTypes.object.isRequired, |