diff options
-rw-r--r-- | src/components/services/tabs/TabItem.js | 2 | ||||
-rw-r--r-- | src/components/settings/services/EditServiceForm.js | 52 | ||||
-rw-r--r-- | src/containers/settings/EditServiceScreen.js | 9 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 4 | ||||
-rw-r--r-- | src/models/Service.js | 4 | ||||
-rw-r--r-- | src/stores/ServicesStore.js | 8 | ||||
-rw-r--r-- | src/styles/settings.scss | 23 |
7 files changed, 77 insertions, 25 deletions
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js index 8403d9462..7aed8fda7 100644 --- a/src/components/services/tabs/TabItem.js +++ b/src/components/services/tabs/TabItem.js | |||
@@ -126,7 +126,7 @@ class TabItem extends Component { | |||
126 | const menu = Menu.buildFromTemplate(menuTemplate); | 126 | const menu = Menu.buildFromTemplate(menuTemplate); |
127 | 127 | ||
128 | let notificationBadge = null; | 128 | let notificationBadge = null; |
129 | if ((showMessageBadgeWhenMutedSetting || service.isNotificationEnabled) && showMessageBadgesEvenWhenMuted) { | 129 | if ((showMessageBadgeWhenMutedSetting || service.isNotificationEnabled) && showMessageBadgesEvenWhenMuted && service.isBadgeEnabled) { |
130 | notificationBadge = ( | 130 | notificationBadge = ( |
131 | <span> | 131 | <span> |
132 | {service.unreadDirectMessageCount > 0 && ( | 132 | {service.unreadDirectMessageCount > 0 && ( |
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index 36cefe87c..32f9d72f0 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js | |||
@@ -67,6 +67,18 @@ const messages = defineMessages({ | |||
67 | id: 'settings.service.form.isMutedInfo', | 67 | id: 'settings.service.form.isMutedInfo', |
68 | defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted', | 68 | defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted', |
69 | }, | 69 | }, |
70 | headlineNotifications: { | ||
71 | id: 'settings.service.form.headlineNotifications', | ||
72 | defaultMessage: '!!!Notifications', | ||
73 | }, | ||
74 | headlineBadges: { | ||
75 | id: 'settings.service.form.headlineBadges', | ||
76 | defaultMessage: '!!!Unread message dadges', | ||
77 | }, | ||
78 | headlineGeneral: { | ||
79 | id: 'settings.service.form.headlineGeneral', | ||
80 | defaultMessage: '!!!General', | ||
81 | }, | ||
70 | }); | 82 | }); |
71 | 83 | ||
72 | @observer | 84 | @observer |
@@ -231,20 +243,32 @@ export default class EditServiceForm extends Component { | |||
231 | </Tabs> | 243 | </Tabs> |
232 | )} | 244 | )} |
233 | <div className="settings__options"> | 245 | <div className="settings__options"> |
234 | <Toggle field={form.$('isNotificationEnabled')} /> | 246 | <div className="settings__settings-group"> |
235 | {recipe.hasIndirectMessages && ( | 247 | <h3>{intl.formatMessage(messages.headlineNotifications)}</h3> |
236 | <div> | 248 | <Toggle field={form.$('isNotificationEnabled')} /> |
237 | <Toggle field={form.$('isIndirectMessageBadgeEnabled')} /> | 249 | <Toggle field={form.$('isMuted')} /> |
238 | <p className="settings__help"> | 250 | <p className="settings__help"> |
239 | {intl.formatMessage(messages.indirectMessageInfo)} | 251 | {intl.formatMessage(messages.isMutedInfo)} |
240 | </p> | 252 | </p> |
241 | </div> | 253 | </div> |
242 | )} | 254 | |
243 | <Toggle field={form.$('isMuted')} /> | 255 | <div className="settings__settings-group"> |
244 | <p className="settings__help"> | 256 | <h3>{intl.formatMessage(messages.headlineBadges)}</h3> |
245 | {intl.formatMessage(messages.isMutedInfo)} | 257 | <Toggle field={form.$('isBadgeEnabled')} /> |
246 | </p> | 258 | {recipe.hasIndirectMessages && form.$('isBadgeEnabled').value && ( |
247 | <Toggle field={form.$('isEnabled')} /> | 259 | <div> |
260 | <Toggle field={form.$('isIndirectMessageBadgeEnabled')} /> | ||
261 | <p className="settings__help"> | ||
262 | {intl.formatMessage(messages.indirectMessageInfo)} | ||
263 | </p> | ||
264 | </div> | ||
265 | )} | ||
266 | </div> | ||
267 | |||
268 | <div className="settings__settings-group"> | ||
269 | <h3>{intl.formatMessage(messages.headlineGeneral)}</h3> | ||
270 | <Toggle field={form.$('isEnabled')} /> | ||
271 | </div> | ||
248 | </div> | 272 | </div> |
249 | {recipe.message && ( | 273 | {recipe.message && ( |
250 | <p className="settings__message"> | 274 | <p className="settings__message"> |
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js index 191ef447b..cdde292b0 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', |
@@ -88,6 +92,11 @@ export default class EditServiceScreen extends Component { | |||
88 | value: service.isNotificationEnabled, | 92 | value: service.isNotificationEnabled, |
89 | default: true, | 93 | default: true, |
90 | }, | 94 | }, |
95 | isBadgeEnabled: { | ||
96 | label: intl.formatMessage(messages.enableBadge), | ||
97 | value: service.isBadgeEnabled, | ||
98 | default: true, | ||
99 | }, | ||
91 | isMuted: { | 100 | isMuted: { |
92 | label: intl.formatMessage(messages.enableAudio), | 101 | label: intl.formatMessage(messages.enableAudio), |
93 | value: !service.isMuted, | 102 | value: !service.isMuted, |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 48b408e59..a6da0f61d 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -117,11 +117,15 @@ | |||
117 | "settings.service.form.name": "Name", | 117 | "settings.service.form.name": "Name", |
118 | "settings.service.form.enableService": "Enable service", | 118 | "settings.service.form.enableService": "Enable service", |
119 | "settings.service.form.enableNotification": "Enable notifications", | 119 | "settings.service.form.enableNotification": "Enable notifications", |
120 | "settings.service.form.enableBadge": "Show unread message badges", | ||
120 | "settings.service.form.team": "Team", | 121 | "settings.service.form.team": "Team", |
121 | "settings.service.form.customUrl": "Custom server", | 122 | "settings.service.form.customUrl": "Custom server", |
122 | "settings.service.form.indirectMessages": "Show message badge for all new messages", | 123 | "settings.service.form.indirectMessages": "Show message badge for all new messages", |
123 | "settings.service.form.enableAudio": "Enable audio", | 124 | "settings.service.form.enableAudio": "Enable audio", |
124 | "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", | 125 | "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", |
126 | "settings.service.form.headlineNotifications": "Notifications", | ||
127 | "settings.service.form.headlineBadges": "Unread message badges", | ||
128 | "settings.service.form.headlineGeneral": "General", | ||
125 | "settings.service.error.headline": "Error", | 129 | "settings.service.error.headline": "Error", |
126 | "settings.service.error.goBack": "Back to services", | 130 | "settings.service.error.goBack": "Back to services", |
127 | "settings.service.error.message": "Could not load service recipe.", | 131 | "settings.service.error.message": "Could not load service recipe.", |
diff --git a/src/models/Service.js b/src/models/Service.js index 958e4b11e..0b19440e7 100644 --- a/src/models/Service.js +++ b/src/models/Service.js | |||
@@ -22,6 +22,7 @@ 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 customIconUrl = ''; |
27 | @observable hasCrashed = false; | 28 | @observable hasCrashed = false; |
@@ -52,6 +53,9 @@ export default class Service { | |||
52 | this.isNotificationEnabled = data.isNotificationEnabled !== undefined | 53 | this.isNotificationEnabled = data.isNotificationEnabled !== undefined |
53 | ? data.isNotificationEnabled : this.isNotificationEnabled; | 54 | ? data.isNotificationEnabled : this.isNotificationEnabled; |
54 | 55 | ||
56 | this.isBadgeEnabled = data.isBadgeEnabled !== undefined | ||
57 | ? data.isBadgeEnabled : this.isBadgeEnabled; | ||
58 | |||
55 | this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined | 59 | this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined |
56 | ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled; | 60 | ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled; |
57 | 61 | ||
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 113df6d55..66f37af26 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -491,13 +491,13 @@ export default class ServicesStore extends Store { | |||
491 | const showMessageBadgeWhenMuted = this.stores.settings.all.showMessageBadgeWhenMuted; | 491 | const showMessageBadgeWhenMuted = this.stores.settings.all.showMessageBadgeWhenMuted; |
492 | const showMessageBadgesEvenWhenMuted = this.stores.ui.showMessageBadgesEvenWhenMuted; | 492 | const showMessageBadgesEvenWhenMuted = this.stores.ui.showMessageBadgesEvenWhenMuted; |
493 | 493 | ||
494 | const unreadDirectMessageCount = this.enabled | 494 | const unreadDirectMessageCount = this.allDisplayed |
495 | .filter(s => (showMessageBadgeWhenMuted || s.isNotificationEnabled) && showMessageBadgesEvenWhenMuted) | 495 | .filter(s => (showMessageBadgeWhenMuted || s.isNotificationEnabled) && showMessageBadgesEvenWhenMuted && s.isBadgeEnabled) |
496 | .map(s => s.unreadDirectMessageCount) | 496 | .map(s => s.unreadDirectMessageCount) |
497 | .reduce((a, b) => a + b, 0); | 497 | .reduce((a, b) => a + b, 0); |
498 | 498 | ||
499 | const unreadIndirectMessageCount = this.enabled | 499 | const unreadIndirectMessageCount = this.allDisplayed |
500 | .filter(s => (showMessageBadgeWhenMuted || s.isIndirectMessageBadgeEnabled) && showMessageBadgesEvenWhenMuted) | 500 | .filter(s => (showMessageBadgeWhenMuted || s.isIndirectMessageBadgeEnabled) && showMessageBadgesEvenWhenMuted && s.isBadgeEnabled) |
501 | .map(s => s.unreadIndirectMessageCount) | 501 | .map(s => s.unreadIndirectMessageCount) |
502 | .reduce((a, b) => a + b, 0); | 502 | .reduce((a, b) => a + b, 0); |
503 | 503 | ||
diff --git a/src/styles/settings.scss b/src/styles/settings.scss index 73cef0813..b29ed5468 100644 --- a/src/styles/settings.scss +++ b/src/styles/settings.scss | |||
@@ -151,8 +151,23 @@ | |||
151 | } | 151 | } |
152 | } | 152 | } |
153 | 153 | ||
154 | .settings__options { | 154 | &__options { |
155 | margin-top: 30px; | 155 | margin-top: 20px; |
156 | } | ||
157 | |||
158 | &__settings-group { | ||
159 | margin-top: 10px; | ||
160 | |||
161 | h3 { | ||
162 | font-weight: bold; | ||
163 | margin: 25px 0 15px; | ||
164 | color: $theme-gray-light; | ||
165 | letter-spacing: -0.1px; | ||
166 | |||
167 | &:first-of-type { | ||
168 | margin-top: 0; | ||
169 | } | ||
170 | } | ||
156 | } | 171 | } |
157 | 172 | ||
158 | .settings__message { | 173 | .settings__message { |
@@ -173,10 +188,6 @@ | |||
173 | margin: -10px 0 20px 55px;; | 188 | margin: -10px 0 20px 55px;; |
174 | font-size: 12px; | 189 | font-size: 12px; |
175 | color: $theme-gray-light; | 190 | color: $theme-gray-light; |
176 | |||
177 | &:last-of-type { | ||
178 | margin-bottom: 30px; | ||
179 | } | ||
180 | } | 191 | } |
181 | 192 | ||
182 | .settings__controls { | 193 | .settings__controls { |