mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 08:26:11 +00:00
Pass global stream notification settings between frontend and backend.
(imported from commit 28ec021e8e5166d3b270c81c5a4ad543d2185aa5)
This commit is contained in:
@@ -1084,6 +1084,17 @@ $(function () {
|
|||||||
var message = "Updated notification settings!";
|
var message = "Updated notification settings!";
|
||||||
var result = $.parseJSON(xhr.responseText);
|
var result = $.parseJSON(xhr.responseText);
|
||||||
|
|
||||||
|
// Stream notification settings.
|
||||||
|
|
||||||
|
if (result.enable_stream_desktop_notifications !== undefined) {
|
||||||
|
page_params.stream_desktop_notifications_enabled = result.enable_stream_desktop_notifications;
|
||||||
|
}
|
||||||
|
if (result.enable_stream_sounds !== undefined) {
|
||||||
|
page_params.stream_sounds_enabled = result.enable_stream_sounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PM and @-mention notification settings.
|
||||||
|
|
||||||
if (result.enable_desktop_notifications !== undefined) {
|
if (result.enable_desktop_notifications !== undefined) {
|
||||||
page_params.desktop_notifications_enabled = result.enable_desktop_notifications;
|
page_params.desktop_notifications_enabled = result.enable_desktop_notifications;
|
||||||
}
|
}
|
||||||
@@ -1099,6 +1110,8 @@ $(function () {
|
|||||||
page_params.enable_offline_push_notifications = result.enable_offline_push_notifications;
|
page_params.enable_offline_push_notifications = result.enable_offline_push_notifications;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Other notification settings.
|
||||||
|
|
||||||
if (result.enable_digest_emails !== undefined) {
|
if (result.enable_digest_emails !== undefined) {
|
||||||
page_params.enable_digest_emails = result.enable_digest_emails;
|
page_params.enable_digest_emails = result.enable_digest_emails;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,6 +94,43 @@
|
|||||||
<div class="settings-section-title"><i class="icon-vector-warning-sign settings-section-icon"></i>Notifications <i class="tiny icon-vector-question-sign" id="notification-docs"></i></div>
|
<div class="settings-section-title"><i class="icon-vector-warning-sign settings-section-icon"></i>Notifications <i class="tiny icon-vector-question-sign" id="notification-docs"></i></div>
|
||||||
<div class="alert" id="notify-settings-status"></div>
|
<div class="alert" id="notify-settings-status"></div>
|
||||||
<div class="notification-settings-form">
|
<div class="notification-settings-form">
|
||||||
|
<h4>Stream messages</h4>
|
||||||
|
|
||||||
|
<p>Unless I say otherwise for a particular stream, I want:</p>
|
||||||
|
|
||||||
|
<div class="control-group">
|
||||||
|
<div class="controls">
|
||||||
|
<input type="checkbox" name="enable_stream_desktop_notifications"
|
||||||
|
id="enable_stream_desktop_notifications"
|
||||||
|
{% if user_profile.enable_stream_desktop_notifications %}
|
||||||
|
checked="yes"
|
||||||
|
{% endif %} />
|
||||||
|
</div>
|
||||||
|
<label for="enable_stream_desktop_notifications" class="control-label">
|
||||||
|
Desktop notifications
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="control-group">
|
||||||
|
<div class="controls">
|
||||||
|
<input type="checkbox" name="enable_stream_sounds" id="enable_stream_sounds"
|
||||||
|
{% if user_profile.enable_stream_sounds %}
|
||||||
|
checked="yes"
|
||||||
|
{% endif %} />
|
||||||
|
</div>
|
||||||
|
<label for="enable_stream_sounds" class="control-label">
|
||||||
|
Audible notifications
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="notification-settings-note">Change notification settings for
|
||||||
|
individual streams on your <a href="/#subscriptions">Streams
|
||||||
|
page</a>.</p>
|
||||||
|
|
||||||
|
<h4>Private messages and @-mentions</h4>
|
||||||
|
|
||||||
|
<p>I want:</p>
|
||||||
|
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input type="checkbox" name="enable_desktop_notifications" id="enable_desktop_notifications"
|
<input type="checkbox" name="enable_desktop_notifications" id="enable_desktop_notifications"
|
||||||
@@ -142,6 +179,10 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<h4>Other notifications</h4>
|
||||||
|
|
||||||
|
<p>I want:</p>
|
||||||
|
|
||||||
<div class="control-group" id="digest_container">
|
<div class="control-group" id="digest_container">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input type="checkbox" name="enable_digest_emails" id="enable_digest_emails"
|
<input type="checkbox" name="enable_digest_emails" id="enable_digest_emails"
|
||||||
@@ -154,8 +195,6 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="notification-settings-note">Change notification settings for individual streams on your <a href="/#subscriptions">Streams page</a>.</p>
|
|
||||||
|
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="controls notification-submission">
|
<div class="controls notification-submission">
|
||||||
<input type="submit" name="change_settings" value="Save changes" class="btn btn-big btn-primary" />
|
<input type="submit" name="change_settings" value="Save changes" class="btn btn-big btn-primary" />
|
||||||
|
|||||||
@@ -1373,6 +1373,24 @@ This is a message on stream `zulip` with the topic `welcome`. We'll use this str
|
|||||||
"signups", domain, signup_message)
|
"signups", domain, signup_message)
|
||||||
return (realm, created)
|
return (realm, created)
|
||||||
|
|
||||||
|
def do_change_enable_stream_desktop_notifications(user_profile,
|
||||||
|
enable_stream_desktop_notifications,
|
||||||
|
log=True):
|
||||||
|
user_profile.enable_stream_desktop_notifications = enable_stream_desktop_notifications
|
||||||
|
user_profile.save(update_fields=["enable_stream_desktop_notifications"])
|
||||||
|
if log:
|
||||||
|
log_event({'type': 'enable_stream_desktop_notifications_changed',
|
||||||
|
'user': user_profile.email,
|
||||||
|
'enable_stream_desktop_notifications': enable_stream_desktop_notifications})
|
||||||
|
|
||||||
|
def do_change_enable_stream_sounds(user_profile, enable_stream_sounds, log=True):
|
||||||
|
user_profile.enable_stream_sounds = enable_stream_sounds
|
||||||
|
user_profile.save(update_fields=["enable_stream_sounds"])
|
||||||
|
if log:
|
||||||
|
log_event({'type': 'enable_stream_sounds_changed',
|
||||||
|
'user': user_profile.email,
|
||||||
|
'enable_stream_sounds': enable_stream_sounds})
|
||||||
|
|
||||||
def do_change_enable_desktop_notifications(user_profile, enable_desktop_notifications, log=True):
|
def do_change_enable_desktop_notifications(user_profile, enable_desktop_notifications, log=True):
|
||||||
user_profile.enable_desktop_notifications = enable_desktop_notifications
|
user_profile.enable_desktop_notifications = enable_desktop_notifications
|
||||||
user_profile.save(update_fields=["enable_desktop_notifications"])
|
user_profile.save(update_fields=["enable_desktop_notifications"])
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ from zerver.lib.actions import bulk_remove_subscriptions, do_change_password, \
|
|||||||
notify_for_streams_by_default, do_change_enable_offline_push_notifications, \
|
notify_for_streams_by_default, do_change_enable_offline_push_notifications, \
|
||||||
do_deactivate_stream, do_change_autoscroll_forever, do_make_stream_public, \
|
do_deactivate_stream, do_change_autoscroll_forever, do_make_stream_public, \
|
||||||
do_make_stream_private, do_change_default_desktop_notifications, \
|
do_make_stream_private, do_change_default_desktop_notifications, \
|
||||||
|
do_change_enable_stream_desktop_notifications, do_change_enable_stream_sounds, \
|
||||||
do_change_stream_description, do_update_pointer, do_add_default_stream, do_remove_default_stream
|
do_change_stream_description, do_update_pointer, do_add_default_stream, do_remove_default_stream
|
||||||
from zerver.lib.create_user import random_api_key
|
from zerver.lib.create_user import random_api_key
|
||||||
from zerver.lib.push_notifications import num_push_devices_for_user
|
from zerver.lib.push_notifications import num_push_devices_for_user
|
||||||
@@ -879,14 +880,22 @@ def home(request):
|
|||||||
needs_tutorial = needs_tutorial,
|
needs_tutorial = needs_tutorial,
|
||||||
first_in_realm = first_in_realm,
|
first_in_realm = first_in_realm,
|
||||||
prompt_for_invites = prompt_for_invites,
|
prompt_for_invites = prompt_for_invites,
|
||||||
desktop_notifications_enabled = desktop_notifications_enabled,
|
|
||||||
notifications_stream = notifications_stream,
|
notifications_stream = notifications_stream,
|
||||||
|
|
||||||
|
# Stream message notification settings:
|
||||||
|
stream_desktop_notifications_enabled =
|
||||||
|
user_profile.enable_stream_desktop_notifications,
|
||||||
|
stream_sounds_enabled = user_profile.enable_stream_sounds,
|
||||||
|
|
||||||
|
# Private message and @-mention notification settings:
|
||||||
|
desktop_notifications_enabled = desktop_notifications_enabled,
|
||||||
sounds_enabled =
|
sounds_enabled =
|
||||||
user_profile.enable_sounds,
|
user_profile.enable_sounds,
|
||||||
enable_offline_email_notifications =
|
enable_offline_email_notifications =
|
||||||
user_profile.enable_offline_email_notifications,
|
user_profile.enable_offline_email_notifications,
|
||||||
enable_offline_push_notifications =
|
enable_offline_push_notifications =
|
||||||
user_profile.enable_offline_push_notifications,
|
user_profile.enable_offline_push_notifications,
|
||||||
|
|
||||||
enable_digest_emails = user_profile.enable_digest_emails,
|
enable_digest_emails = user_profile.enable_digest_emails,
|
||||||
event_queue_id = register_ret['queue_id'],
|
event_queue_id = register_ret['queue_id'],
|
||||||
last_event_id = register_ret['last_event_id'],
|
last_event_id = register_ret['last_event_id'],
|
||||||
@@ -1466,8 +1475,13 @@ def json_change_settings(request, user_profile,
|
|||||||
@authenticated_json_post_view
|
@authenticated_json_post_view
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def json_change_notify_settings(request, user_profile,
|
def json_change_notify_settings(request, user_profile,
|
||||||
# enable_desktop_notification needs to default to False
|
# Notifications default to False because
|
||||||
# because browsers POST nothing for an unchecked checkbox
|
# browsers POST nothing for an unchecked
|
||||||
|
# checkbox.
|
||||||
|
enable_stream_desktop_notifications=REQ(converter=lambda x: x == "on",
|
||||||
|
default=False),
|
||||||
|
enable_stream_sounds=REQ(converter=lambda x: x == "on",
|
||||||
|
default=False),
|
||||||
enable_desktop_notifications=REQ(converter=lambda x: x == "on",
|
enable_desktop_notifications=REQ(converter=lambda x: x == "on",
|
||||||
default=False),
|
default=False),
|
||||||
enable_sounds=REQ(converter=lambda x: x == "on",
|
enable_sounds=REQ(converter=lambda x: x == "on",
|
||||||
@@ -1481,6 +1495,19 @@ def json_change_notify_settings(request, user_profile,
|
|||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
|
|
||||||
|
# Stream notification settings.
|
||||||
|
|
||||||
|
if user_profile.enable_stream_desktop_notifications != enable_stream_desktop_notifications:
|
||||||
|
do_change_enable_stream_desktop_notifications(
|
||||||
|
user_profile, enable_stream_desktop_notifications)
|
||||||
|
result['enable_stream_desktop_notifications'] = enable_stream_desktop_notifications
|
||||||
|
|
||||||
|
if user_profile.enable_stream_sounds != enable_stream_sounds:
|
||||||
|
do_change_enable_stream_sounds(user_profile, enable_stream_sounds)
|
||||||
|
result['enable_stream_sounds'] = enable_stream_sounds
|
||||||
|
|
||||||
|
# PM and @-mention settings.
|
||||||
|
|
||||||
if user_profile.enable_desktop_notifications != enable_desktop_notifications:
|
if user_profile.enable_desktop_notifications != enable_desktop_notifications:
|
||||||
do_change_enable_desktop_notifications(user_profile, enable_desktop_notifications)
|
do_change_enable_desktop_notifications(user_profile, enable_desktop_notifications)
|
||||||
result['enable_desktop_notifications'] = enable_desktop_notifications
|
result['enable_desktop_notifications'] = enable_desktop_notifications
|
||||||
|
|||||||
Reference in New Issue
Block a user