summaryrefslogtreecommitdiffstats
path: root/src/containers/settings/EditServiceScreen.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/containers/settings/EditServiceScreen.js')
-rw-r--r--src/containers/settings/EditServiceScreen.js36
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 (