Skip to content

Commit cea7a5c

Browse files
committed
feat(Service): Add option to completely disable message badges
1 parent 246132a commit cea7a5c

File tree

5 files changed

+69
-20
lines changed

5 files changed

+69
-20
lines changed

src/components/settings/services/EditServiceForm.js

+38-14
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,18 @@ const messages = defineMessages({
6767
id: 'settings.service.form.isMutedInfo',
6868
defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted',
6969
},
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+
},
7082
});
7183

7284
@observer
@@ -231,20 +243,32 @@ export default class EditServiceForm extends Component {
231243
</Tabs>
232244
)}
233245
<div className="settings__options">
234-
<Toggle field={form.$('isNotificationEnabled')} />
235-
{recipe.hasIndirectMessages && (
236-
<div>
237-
<Toggle field={form.$('isIndirectMessageBadgeEnabled')} />
238-
<p className="settings__help">
239-
{intl.formatMessage(messages.indirectMessageInfo)}
240-
</p>
241-
</div>
242-
)}
243-
<Toggle field={form.$('isMuted')} />
244-
<p className="settings__help">
245-
{intl.formatMessage(messages.isMutedInfo)}
246-
</p>
247-
<Toggle field={form.$('isEnabled')} />
246+
<div className="settings__settings-group">
247+
<h3>{intl.formatMessage(messages.headlineNotifications)}</h3>
248+
<Toggle field={form.$('isNotificationEnabled')} />
249+
<Toggle field={form.$('isMuted')} />
250+
<p className="settings__help">
251+
{intl.formatMessage(messages.isMutedInfo)}
252+
</p>
253+
</div>
254+
255+
<div className="settings__settings-group">
256+
<h3>{intl.formatMessage(messages.headlineBadges)}</h3>
257+
<Toggle field={form.$('isBadgeEnabled')} />
258+
{recipe.hasIndirectMessages && form.$('isBadgeEnabled').value && (
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>
248272
</div>
249273
{recipe.message && (
250274
<p className="settings__message">

src/containers/settings/EditServiceScreen.js

+9
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ const messages = defineMessages({
2626
id: 'settings.service.form.enableNotification',
2727
defaultMessage: '!!!Enable Notifications',
2828
},
29+
enableBadge: {
30+
id: 'settings.service.form.enableBadge',
31+
defaultMessage: '!!!Show unread message badges',
32+
},
2933
enableAudio: {
3034
id: 'settings.service.form.enableAudio',
3135
defaultMessage: '!!!Enable audio',
@@ -88,6 +92,11 @@ export default class EditServiceScreen extends Component {
8892
value: service.isNotificationEnabled,
8993
default: true,
9094
},
95+
isBadgeEnabled: {
96+
label: intl.formatMessage(messages.enableBadge),
97+
value: service.isBadgeEnabled,
98+
default: true,
99+
},
91100
isMuted: {
92101
label: intl.formatMessage(messages.enableAudio),
93102
value: !service.isMuted,

src/i18n/locales/en-US.json

+4
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,15 @@
117117
"settings.service.form.name": "Name",
118118
"settings.service.form.enableService": "Enable service",
119119
"settings.service.form.enableNotification": "Enable notifications",
120+
"settings.service.form.enableBadge": "Show unread message badges",
120121
"settings.service.form.team": "Team",
121122
"settings.service.form.customUrl": "Custom server",
122123
"settings.service.form.indirectMessages": "Show message badge for all new messages",
123124
"settings.service.form.enableAudio": "Enable audio",
124125
"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",
125129
"settings.service.error.headline": "Error",
126130
"settings.service.error.goBack": "Back to services",
127131
"settings.service.error.message": "Could not load service recipe.",

src/models/Service.js

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export default class Service {
2222
@observable team = '';
2323
@observable customUrl = '';
2424
@observable isNotificationEnabled = true;
25+
@observable isBadgeEnabled = true;
2526
@observable isIndirectMessageBadgeEnabled = true;
2627
@observable customIconUrl = '';
2728
@observable hasCrashed = false;

src/styles/settings.scss

+17-6
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,23 @@
151151
}
152152
}
153153

154-
.settings__options {
155-
margin-top: 30px;
154+
&__options {
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+
}
156171
}
157172

158173
.settings__message {
@@ -173,10 +188,6 @@
173188
margin: -10px 0 20px 55px;;
174189
font-size: 12px;
175190
color: $theme-gray-light;
176-
177-
&:last-of-type {
178-
margin-bottom: 30px;
179-
}
180191
}
181192

182193
.settings__controls {

0 commit comments

Comments
 (0)