diff options
Diffstat (limited to 'src/containers/settings/EditServiceScreen.js')
-rw-r--r-- | src/containers/settings/EditServiceScreen.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js index 191ef447b..c26195a1e 100644 --- a/src/containers/settings/EditServiceScreen.js +++ b/src/containers/settings/EditServiceScreen.js | |||
@@ -26,6 +26,10 @@ const messages = defineMessages({ | |||
26 | id: 'settings.service.form.enableNotification', | 26 | id: 'settings.service.form.enableNotification', |
27 | defaultMessage: '!!!Enable Notifications', | 27 | defaultMessage: '!!!Enable Notifications', |
28 | }, | 28 | }, |
29 | enableBadge: { | ||
30 | id: 'settings.service.form.enableBadge', | ||
31 | defaultMessage: '!!!Show unread message badges', | ||
32 | }, | ||
29 | enableAudio: { | 33 | enableAudio: { |
30 | id: 'settings.service.form.enableAudio', | 34 | id: 'settings.service.form.enableAudio', |
31 | defaultMessage: '!!!Enable audio', | 35 | defaultMessage: '!!!Enable audio', |
@@ -42,6 +46,10 @@ const messages = defineMessages({ | |||
42 | id: 'settings.service.form.indirectMessages', | 46 | id: 'settings.service.form.indirectMessages', |
43 | defaultMessage: '!!!Show message badge for all new messages', | 47 | defaultMessage: '!!!Show message badge for all new messages', |
44 | }, | 48 | }, |
49 | icon: { | ||
50 | id: 'settings.service.form.icon', | ||
51 | defaultMessage: '!!!Custom icon', | ||
52 | }, | ||
45 | }); | 53 | }); |
46 | 54 | ||
47 | @inject('stores', 'actions') @observer | 55 | @inject('stores', 'actions') @observer |
@@ -88,11 +96,22 @@ export default class EditServiceScreen extends Component { | |||
88 | value: service.isNotificationEnabled, | 96 | value: service.isNotificationEnabled, |
89 | default: true, | 97 | default: true, |
90 | }, | 98 | }, |
99 | isBadgeEnabled: { | ||
100 | label: intl.formatMessage(messages.enableBadge), | ||
101 | value: service.isBadgeEnabled, | ||
102 | default: true, | ||
103 | }, | ||
91 | isMuted: { | 104 | isMuted: { |
92 | label: intl.formatMessage(messages.enableAudio), | 105 | label: intl.formatMessage(messages.enableAudio), |
93 | value: !service.isMuted, | 106 | value: !service.isMuted, |
94 | default: true, | 107 | default: true, |
95 | }, | 108 | }, |
109 | customIcon: { | ||
110 | label: intl.formatMessage(messages.icon), | ||
111 | value: service.hasCustomUploadedIcon ? service.icon : false, | ||
112 | default: null, | ||
113 | type: 'file', | ||
114 | }, | ||
96 | }, | 115 | }, |
97 | }; | 116 | }; |
98 | 117 | ||
@@ -118,11 +137,22 @@ export default class EditServiceScreen extends Component { | |||
118 | }); | 137 | }); |
119 | } | 138 | } |
120 | 139 | ||
140 | // More fine grained and use case specific validation rules | ||
121 | if (recipe.hasTeamId && recipe.hasCustomUrl) { | 141 | if (recipe.hasTeamId && recipe.hasCustomUrl) { |
122 | config.fields.team.validate = [oneRequired(['team', 'customUrl'])]; | 142 | config.fields.team.validate = [oneRequired(['team', 'customUrl'])]; |
123 | config.fields.customUrl.validate = [url, oneRequired(['team', 'customUrl'])]; | 143 | config.fields.customUrl.validate = [url, oneRequired(['team', 'customUrl'])]; |
124 | } | 144 | } |
125 | 145 | ||
146 | // If a service can be hosted and has a teamId or customUrl | ||
147 | if (recipe.hasHostedOption && (recipe.hasTeamId || recipe.hasCustomUrl)) { | ||
148 | if (config.fields.team) { | ||
149 | config.fields.team.validate = []; | ||
150 | } | ||
151 | if (config.fields.customUrl) { | ||
152 | config.fields.customUrl.validate = [url]; | ||
153 | } | ||
154 | } | ||
155 | |||
126 | if (recipe.hasIndirectMessages) { | 156 | if (recipe.hasIndirectMessages) { |
127 | Object.assign(config.fields, { | 157 | Object.assign(config.fields, { |
128 | isIndirectMessageBadgeEnabled: { | 158 | isIndirectMessageBadgeEnabled: { |
@@ -179,6 +209,12 @@ export default class EditServiceScreen extends Component { | |||
179 | return (<div>Loading...</div>); | 209 | return (<div>Loading...</div>); |
180 | } | 210 | } |
181 | 211 | ||
212 | if (!recipe) { | ||
213 | return ( | ||
214 | <div>something went wrong</div> | ||
215 | ); | ||
216 | } | ||
217 | |||
182 | const form = this.prepareForm(recipe, service); | 218 | const form = this.prepareForm(recipe, service); |
183 | 219 | ||
184 | return ( | 220 | return ( |