notification settings: Add UI for stream email notifications.

Previous commits have fully implemented the logic for stream email
notifications; this final commit adds support for configuring it to
the UI.

Fixes #6511.
This commit is contained in:
Sarah
2017-11-20 20:58:26 -08:00
committed by Tim Abbott
parent de947445ca
commit de2ec8a05c
8 changed files with 39 additions and 0 deletions

View File

@@ -79,6 +79,12 @@ run_test('update_property', () => {
checkbox = $(".subscription_settings[data-stream-id='1'] #sub_push_notifications_setting .sub_setting_control");
assert.equal(checkbox.prop('checked'), true);
// Tests email notifications
stream_events.update_property(1, 'email_notifications', true);
assert.equal(frontend.email_notifications, true);
checkbox = $(".subscription_settings[data-stream-id='1'] #sub_email_notifications_setting .sub_setting_control");
assert.equal(checkbox.prop('checked'), true);
// Test name change
with_overrides(function (override) {
global.with_stub(function (stub) {

View File

@@ -90,6 +90,7 @@ function setup_settings_label() {
enable_stream_desktop_notifications: i18n.t("Visual desktop notifications"),
enable_stream_sounds: i18n.t("Audible desktop notifications"),
enable_stream_push_notifications: i18n.t("Mobile notifications"),
enable_stream_email_notifications: i18n.t("Email notifications"),
// pm_mention_notification_settings
enable_desktop_notifications: i18n.t("Visual desktop notifications"),

View File

@@ -6,6 +6,7 @@ var stream_notification_settings = [
{setting: "enable_stream_desktop_notifications", notifications:"desktop_notifications"},
{setting: "enable_stream_push_notifications", notifications:"push_notifications"},
{setting: "enable_stream_sounds", notifications:"audible_notifications"},
{setting: "enable_stream_email_notifications", notifications:"email_notifications"},
];
var pm_mention_notification_settings = [

View File

@@ -439,6 +439,7 @@ exports.create_sub_from_server_data = function (stream_name, attrs) {
desktop_notifications: page_params.enable_stream_desktop_notifications,
audible_notifications: page_params.enable_stream_sounds,
push_notifications: page_params.enable_stream_push_notifications,
email_notifications: page_params.enable_stream_email_notifications,
description: '',
});

View File

@@ -414,6 +414,12 @@ function stream_push_notifications_clicked(e) {
exports.set_stream_property(sub, 'push_notifications', sub.push_notifications);
}
function stream_email_notifications_clicked(e) {
var sub = get_sub_for_target(e.target);
sub.email_notifications = !sub.email_notifications;
exports.set_stream_property(sub, 'email_notifications', sub.email_notifications);
}
function stream_pin_clicked(e) {
var sub = get_sub_for_target(e.target);
if (!sub) {
@@ -540,6 +546,8 @@ exports.initialize = function () {
stream_audible_notifications_clicked);
$("#subscriptions_table").on("click", "#sub_push_notifications_setting",
stream_push_notifications_clicked);
$("#subscriptions_table").on("click", "#sub_email_notifications_setting",
stream_email_notifications_clicked);
$("#subscriptions_table").on("click", "#sub_pin_setting",
stream_pin_clicked);

View File

@@ -26,6 +26,12 @@ function update_stream_push_notifications(sub, value) {
sub.push_notifications = value;
}
function update_stream_email_notifications(sub, value) {
var email_notifications_checkbox = $(".subscription_settings[data-stream-id='" + sub.stream_id + "'] #sub_email_notifications_setting .sub_setting_control");
email_notifications_checkbox.prop('checked', value);
sub.email_notifications = value;
}
function update_stream_pin(sub, value) {
var pin_checkbox = $('#pinstream-' + sub.stream_id);
pin_checkbox.prop('checked', value);
@@ -58,6 +64,9 @@ exports.update_property = function (stream_id, property, value) {
case 'push_notifications':
update_stream_push_notifications(sub, value);
break;
case 'email_notifications':
update_stream_email_notifications(sub, value);
break;
case 'name':
subs.update_stream_name(sub, value);
break;

View File

@@ -26,6 +26,12 @@
"label" settings_label.enable_stream_push_notifications
"end_content" '<div class="propagate_stream_notifications_change"></div>'}}
{{partial "settings_checkbox"
"setting_name" "enable_stream_email_notifications"
"is_checked" page_params.enable_stream_email_notifications
"label" settings_label.enable_stream_email_notifications
"end_content" '<div class="propagate_stream_notifications_change"></div>'}}
<p class="notification-settings-note">
{{#tr this}}Change notification settings for individual streams on your <a href="/#streams">Streams page</a>.{{/tr}}
</p>

View File

@@ -70,6 +70,13 @@
<label class="subscription-control-label">{{t "Mobile notifications" }}</label>
</div>
</li>
<li>
<div id="sub_email_notifications_setting"
class="sub_setting_checkbox sub_notification_setting {{#unless in_home_view}}muted-sub{{/unless}}">
<input id="email-notifystream-{{stream_id}}" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if email_notifications}}checked{{/if}} {{#unless in_home_view}}disabled="disabled"{{/unless}}/>
<label class="subscription-control-label">{{t "Email notifications" }}</label>
</div>
</li>
<li>
<div id="sub_pin_setting" class="sub_setting_checkbox">
<input id="pinstream-{{stream_id}}" class="sub_setting_control" type="checkbox" tabindex="-1" {{#if pin_to_top}}checked{{/if}} />