diff options
author | Stefan Malzner <stefan@adlk.io> | 2018-01-11 10:41:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-11 10:41:34 +0100 |
commit | a4b665ef5f218313e524f0582d08cde6aa5d7049 (patch) | |
tree | 64f2a8046b544d98fe9125ea499c040f67482e01 /src/models | |
parent | Fix link to service request form (diff) | |
parent | Merge branch 'develop' of github.com:meetfranz/franz into develop (diff) | |
download | ferdium-app-a4b665ef5f218313e524f0582d08cde6aa5d7049.tar.gz ferdium-app-a4b665ef5f218313e524f0582d08cde6aa5d7049.tar.zst ferdium-app-a4b665ef5f218313e524f0582d08cde6aa5d7049.zip |
Merge pull request #561 from meetfranz/developv5.0.0-beta.15
Franz Beta 15
Diffstat (limited to 'src/models')
-rw-r--r-- | src/models/Recipe.js | 9 | ||||
-rw-r--r-- | src/models/Service.js | 18 | ||||
-rw-r--r-- | src/models/Settings.js | 7 |
3 files changed, 27 insertions, 7 deletions
diff --git a/src/models/Recipe.js b/src/models/Recipe.js index 9971df77c..1fc23ac89 100644 --- a/src/models/Recipe.js +++ b/src/models/Recipe.js | |||
@@ -1,10 +1,11 @@ | |||
1 | import emailParser from 'address-rfc2822'; | 1 | import emailParser from 'address-rfc2822'; |
2 | import semver from 'semver'; | ||
2 | 3 | ||
3 | export default class Recipe { | 4 | export default class Recipe { |
4 | id = ''; | 5 | id = ''; |
5 | name = ''; | 6 | name = ''; |
6 | description = ''; | 7 | description = ''; |
7 | version = '1.0'; | 8 | version = ''; |
8 | path = ''; | 9 | path = ''; |
9 | 10 | ||
10 | serviceURL = ''; | 11 | serviceURL = ''; |
@@ -15,6 +16,7 @@ export default class Recipe { | |||
15 | hasTeamId = false; | 16 | hasTeamId = false; |
16 | hasPredefinedUrl = false; | 17 | hasPredefinedUrl = false; |
17 | hasCustomUrl = false; | 18 | hasCustomUrl = false; |
19 | hasHostedOption = false; | ||
18 | urlInputPrefix = ''; | 20 | urlInputPrefix = ''; |
19 | urlInputSuffix = ''; | 21 | urlInputSuffix = ''; |
20 | 22 | ||
@@ -30,6 +32,10 @@ export default class Recipe { | |||
30 | throw Error(`Recipe '${data.name}' requires Id`); | 32 | throw Error(`Recipe '${data.name}' requires Id`); |
31 | } | 33 | } |
32 | 34 | ||
35 | if (!semver.valid(data.version)) { | ||
36 | throw Error(`Version ${data.version} of recipe '${data.name}' is not a valid semver version`); | ||
37 | } | ||
38 | |||
33 | this.id = data.id || this.id; | 39 | this.id = data.id || this.id; |
34 | this.name = data.name || this.name; | 40 | this.name = data.name || this.name; |
35 | this.rawAuthor = data.author || this.author; | 41 | this.rawAuthor = data.author || this.author; |
@@ -45,6 +51,7 @@ export default class Recipe { | |||
45 | this.hasTeamId = data.config.hasTeamId || this.hasTeamId; | 51 | this.hasTeamId = data.config.hasTeamId || this.hasTeamId; |
46 | this.hasPredefinedUrl = data.config.hasPredefinedUrl || this.hasPredefinedUrl; | 52 | this.hasPredefinedUrl = data.config.hasPredefinedUrl || this.hasPredefinedUrl; |
47 | this.hasCustomUrl = data.config.hasCustomUrl || this.hasCustomUrl; | 53 | this.hasCustomUrl = data.config.hasCustomUrl || this.hasCustomUrl; |
54 | this.hasHostedOption = data.config.hasHostedOption || this.hasHostedOption; | ||
48 | 55 | ||
49 | this.urlInputPrefix = data.config.urlInputPrefix || this.urlInputPrefix; | 56 | this.urlInputPrefix = data.config.urlInputPrefix || this.urlInputPrefix; |
50 | this.urlInputSuffix = data.config.urlInputSuffix || this.urlInputSuffix; | 57 | this.urlInputSuffix = data.config.urlInputSuffix || this.urlInputSuffix; |
diff --git a/src/models/Service.js b/src/models/Service.js index 958e4b11e..423510c7d 100644 --- a/src/models/Service.js +++ b/src/models/Service.js | |||
@@ -22,8 +22,10 @@ export default class Service { | |||
22 | @observable team = ''; | 22 | @observable team = ''; |
23 | @observable customUrl = ''; | 23 | @observable customUrl = ''; |
24 | @observable isNotificationEnabled = true; | 24 | @observable isNotificationEnabled = true; |
25 | @observable isBadgeEnabled = true; | ||
25 | @observable isIndirectMessageBadgeEnabled = true; | 26 | @observable isIndirectMessageBadgeEnabled = true; |
26 | @observable customIconUrl = ''; | 27 | @observable iconUrl = ''; |
28 | @observable hasCustomUploadedIcon = false; | ||
27 | @observable hasCrashed = false; | 29 | @observable hasCrashed = false; |
28 | 30 | ||
29 | constructor(data, recipe) { | 31 | constructor(data, recipe) { |
@@ -41,7 +43,8 @@ export default class Service { | |||
41 | this.name = data.name || this.name; | 43 | this.name = data.name || this.name; |
42 | this.team = data.team || this.team; | 44 | this.team = data.team || this.team; |
43 | this.customUrl = data.customUrl || this.customUrl; | 45 | this.customUrl = data.customUrl || this.customUrl; |
44 | this.customIconUrl = data.customIconUrl || this.customIconUrl; | 46 | // this.customIconUrl = data.customIconUrl || this.customIconUrl; |
47 | this.iconUrl = data.iconUrl || this.iconUrl; | ||
45 | 48 | ||
46 | this.order = data.order !== undefined | 49 | this.order = data.order !== undefined |
47 | ? data.order : this.order; | 50 | ? data.order : this.order; |
@@ -52,11 +55,16 @@ export default class Service { | |||
52 | this.isNotificationEnabled = data.isNotificationEnabled !== undefined | 55 | this.isNotificationEnabled = data.isNotificationEnabled !== undefined |
53 | ? data.isNotificationEnabled : this.isNotificationEnabled; | 56 | ? data.isNotificationEnabled : this.isNotificationEnabled; |
54 | 57 | ||
58 | this.isBadgeEnabled = data.isBadgeEnabled !== undefined | ||
59 | ? data.isBadgeEnabled : this.isBadgeEnabled; | ||
60 | |||
55 | this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined | 61 | this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined |
56 | ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled; | 62 | ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled; |
57 | 63 | ||
58 | this.isMuted = data.isMuted !== undefined ? data.isMuted : this.isMuted; | 64 | this.isMuted = data.isMuted !== undefined ? data.isMuted : this.isMuted; |
59 | 65 | ||
66 | this.hasCustomUploadedIcon = data.hasCustomIcon !== undefined ? data.hasCustomIcon : this.hasCustomUploadedIcon; | ||
67 | |||
60 | this.recipe = recipe; | 68 | this.recipe = recipe; |
61 | 69 | ||
62 | autorun(() => { | 70 | autorun(() => { |
@@ -93,15 +101,15 @@ export default class Service { | |||
93 | } | 101 | } |
94 | 102 | ||
95 | @computed get icon() { | 103 | @computed get icon() { |
96 | if (this.hasCustomIcon) { | 104 | if (this.iconUrl) { |
97 | return this.customIconUrl; | 105 | return this.iconUrl; |
98 | } | 106 | } |
99 | 107 | ||
100 | return path.join(this.recipe.path, 'icon.svg'); | 108 | return path.join(this.recipe.path, 'icon.svg'); |
101 | } | 109 | } |
102 | 110 | ||
103 | @computed get hasCustomIcon() { | 111 | @computed get hasCustomIcon() { |
104 | return (this.customIconUrl !== ''); | 112 | return Boolean(this.iconUrl); |
105 | } | 113 | } |
106 | 114 | ||
107 | @computed get iconPNG() { | 115 | @computed get iconPNG() { |
diff --git a/src/models/Settings.js b/src/models/Settings.js index 3b352f9aa..ca44da258 100644 --- a/src/models/Settings.js +++ b/src/models/Settings.js | |||
@@ -1,4 +1,4 @@ | |||
1 | import { observable } from 'mobx'; | 1 | import { observable, extendObservable } from 'mobx'; |
2 | import { DEFAULT_APP_SETTINGS } from '../config'; | 2 | import { DEFAULT_APP_SETTINGS } from '../config'; |
3 | 3 | ||
4 | export default class Settings { | 4 | export default class Settings { |
@@ -8,6 +8,7 @@ export default class Settings { | |||
8 | @observable enableSystemTray = DEFAULT_APP_SETTINGS.enableSystemTray; | 8 | @observable enableSystemTray = DEFAULT_APP_SETTINGS.enableSystemTray; |
9 | @observable minimizeToSystemTray = DEFAULT_APP_SETTINGS.minimizeToSystemTray; | 9 | @observable minimizeToSystemTray = DEFAULT_APP_SETTINGS.minimizeToSystemTray; |
10 | @observable showDisabledServices = DEFAULT_APP_SETTINGS.showDisabledServices; | 10 | @observable showDisabledServices = DEFAULT_APP_SETTINGS.showDisabledServices; |
11 | @observable showMessageBadgeWhenMuted = DEFAULT_APP_SETTINGS.showMessageBadgeWhenMuted; | ||
11 | @observable enableSpellchecking = DEFAULT_APP_SETTINGS.enableSpellchecking; | 12 | @observable enableSpellchecking = DEFAULT_APP_SETTINGS.enableSpellchecking; |
12 | @observable locale = DEFAULT_APP_SETTINGS.locale; | 13 | @observable locale = DEFAULT_APP_SETTINGS.locale; |
13 | @observable beta = DEFAULT_APP_SETTINGS.beta; | 14 | @observable beta = DEFAULT_APP_SETTINGS.beta; |
@@ -16,4 +17,8 @@ export default class Settings { | |||
16 | constructor(data) { | 17 | constructor(data) { |
17 | Object.assign(this, data); | 18 | Object.assign(this, data); |
18 | } | 19 | } |
20 | |||
21 | update(data) { | ||
22 | extendObservable(this, data); | ||
23 | } | ||
19 | } | 24 | } |