settings: Remove autoscroll_forever setting.

Fixes #6845
This commit is contained in:
YJDave 2017-12-27 17:47:58 +05:30 committed by showell
parent c2248a81dc
commit fa44d2ea69
15 changed files with 32 additions and 80 deletions

View File

@ -55,7 +55,6 @@ i18n.init({
enable_offline_push_notifications: false, enable_offline_push_notifications: false,
enable_online_push_notifications: false, enable_online_push_notifications: false,
enable_digest_emails: false, enable_digest_emails: false,
autoscroll_forever: false,
default_desktop_notifications: false, default_desktop_notifications: false,
}, },
}; };

View File

@ -958,7 +958,7 @@ function render(template_name, args) {
enable_sounds: true, enable_offline_email_notifications: true, enable_sounds: true, enable_offline_email_notifications: true,
enable_offline_push_notifications: true, enable_online_push_notifications: true, enable_offline_push_notifications: true, enable_online_push_notifications: true,
enable_digest_emails: true, enable_digest_emails: true,
autoscroll_forever: true, default_desktop_notifications: true, default_desktop_notifications: true,
}; };
var page_params = $.extend(page_param_checkbox_options, { var page_params = $.extend(page_param_checkbox_options, {
full_name: "Alyssa P. Hacker", password_auth_enabled: true, full_name: "Alyssa P. Hacker", password_auth_enabled: true,
@ -970,7 +970,7 @@ function render(template_name, args) {
"enable_stream_sounds", "enable_desktop_notifications", "enable_stream_sounds", "enable_desktop_notifications",
"enable_sounds", "enable_offline_push_notifications", "enable_sounds", "enable_offline_push_notifications",
"enable_online_push_notifications", "enable_online_push_notifications",
"enable_digest_emails", "autoscroll_forever", "enable_digest_emails",
"default_desktop_notifications"]; "default_desktop_notifications"];
// Render with all booleans set to true. // Render with all booleans set to true.

View File

@ -475,8 +475,6 @@ MessageListView.prototype = {
var list = this.list; // for convenience var list = this.list; // for convenience
var table_name = this.table_name; var table_name = this.table_name;
var table = rows.get_table(table_name); var table = rows.get_table(table_name);
// we we record if last_message_was_selected before updating the table
var last_message_was_selected = rows.id(rows.last_visible()) === list.selected_id();
var orig_scrolltop_offset; var orig_scrolltop_offset;
var message_containers; var message_containers;
@ -654,13 +652,12 @@ MessageListView.prototype = {
} }
if (list === current_msg_list && messages_are_new) { if (list === current_msg_list && messages_are_new) {
self._maybe_autoscroll(new_dom_elements, last_message_was_selected); self._maybe_autoscroll(new_dom_elements);
} }
}, },
_maybe_autoscroll: function MessageListView__maybe_autoscroll(rendered_elems, _maybe_autoscroll: function MessageListView__maybe_autoscroll(rendered_elems) {
last_message_was_selected) {
// If we are near the bottom of our feed (the bottom is visible) and can // If we are near the bottom of our feed (the bottom is visible) and can
// scroll up without moving the pointer out of the viewport, do so, by // scroll up without moving the pointer out of the viewport, do so, by
// up to the amount taken up by the new message. // up to the amount taken up by the new message.
@ -686,14 +683,6 @@ MessageListView.prototype = {
} }
}, this); }, this);
// autoscroll_forever: if we're on the last message, keep us on the last message
if (last_message_was_selected && page_params.autoscroll_forever) {
this.list.select_id(this.list.last().id, {from_rendering: true});
navigate.scroll_to_selected();
this.list.reselect_selected_id();
return;
}
var selected_row = this.selected_row(); var selected_row = this.selected_row();
var last_visible = rows.last_visible(); var last_visible = rows.last_visible();
@ -706,16 +695,6 @@ MessageListView.prototype = {
var info = message_viewport.message_viewport_info(); var info = message_viewport.message_viewport_info();
var available_space_for_scroll = selected_row_offset - info.visible_top; var available_space_for_scroll = selected_row_offset - info.visible_top;
var rows_offset = rows.last_visible().offset().top - this.list.selected_row().offset().top;
// autoscroll_forever: if we've sent a message, move pointer at least that far.
if (page_params.autoscroll_forever && id_of_last_message_sent_by_us > -1 &&
rows_offset < (message_viewport.height())) {
this.list.select_id(id_of_last_message_sent_by_us, {from_rendering: true});
navigate.scroll_to_selected();
return;
}
// Don't scroll if we can't move the pointer up. // Don't scroll if we can't move the pointer up.
if (available_space_for_scroll <= 0) { if (available_space_for_scroll <= 0) {
return; return;

View File

@ -495,10 +495,7 @@ exports.received_messages = function (messages) {
if (!message_is_notifiable(message)) { if (!message_is_notifiable(message)) {
return; return;
} }
// checking for unread flags here is basically proxy for if (!unread.message_unread(message)) {
// "is Zulip currently in focus". In the case of auto-scroll forever,
// we don't care
if (!unread.message_unread(message) && !page_params.autoscroll_forever) {
return; return;
} }

View File

@ -203,9 +203,7 @@ exports.watch_manual_resize = function (element) {
}; };
exports.resize_bottom_whitespace = function (h) { exports.resize_bottom_whitespace = function (h) {
if (page_params.autoscroll_forever) { if (h !== undefined) {
$("#bottom_whitespace").height($("#compose-container")[0].offsetHeight);
} else if (h !== undefined) {
$("#bottom_whitespace").height(h.bottom_whitespace_height); $("#bottom_whitespace").height(h.bottom_whitespace_height);
} }
}; };

View File

@ -8,7 +8,7 @@ exports.set_up = function () {
$("#ui-settings .change-setting").change(function (e) { $("#ui-settings .change-setting").change(function (e) {
e.preventDefault(); e.preventDefault();
var labs_updates = {}; var labs_updates = {};
_.each(["autoscroll_forever", "default_desktop_notifications"], _.each(["default_desktop_notifications"],
function (setting) { function (setting) {
labs_updates[setting] = $("#" + setting).is(":checked"); labs_updates[setting] = $("#" + setting).is(":checked");
}); });
@ -16,16 +16,10 @@ exports.set_up = function () {
channel.patch({ channel.patch({
url: '/json/settings/ui', url: '/json/settings/ui',
data: labs_updates, data: labs_updates,
success: function (resp, statusText, xhr) { success: function () {
var message = i18n.t("Updated settings! You will need to reload for these changes to take effect.", page_params); var message = i18n.t("Updated settings! You will need to reload for these changes to take effect.", page_params);
var result = JSON.parse(xhr.responseText);
var ui_settings_status = $('#ui-settings-status').expectOne(); var ui_settings_status = $('#ui-settings-status').expectOne();
if (result.autoscroll_forever !== undefined) {
page_params.autoscroll_forever = result.autoscroll_forever;
resize.resize_page_components();
}
ui_report.success(message, ui_settings_status); ui_report.success(message, ui_settings_status);
}, },
error: function (xhr) { error: function (xhr) {

View File

@ -6,18 +6,6 @@
<h3 class="light">{{t "UI Settings"}}</h3> <h3 class="light">{{t "UI Settings"}}</h3>
<div class="side-padded-container"> <div class="side-padded-container">
<div class="input-group">
<label class="checkbox">
<input type="checkbox" class="inline-block change-setting" name="autoscroll_forever" id="autoscroll_forever"
{{#if page_params.autoscroll_forever}}
checked="checked"
{{/if}} />
<span></span>
</label>
<label for="autoscroll_forever" class="inline-block">
{{t "Always auto-scroll to new messages" }}
</label>
</div>
<div class="input-group"> <div class="input-group">
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" class="inline-block change-setting" name="default_desktop_notifications" id="default_desktop_notifications" <input type="checkbox" class="inline-block change-setting" name="default_desktop_notifications" id="default_desktop_notifications"

View File

@ -2888,16 +2888,6 @@ def do_change_notification_settings(user_profile: UserProfile, name: str, value:
log_event(event) log_event(event)
send_event(event, [user_profile.id]) send_event(event, [user_profile.id])
def do_change_autoscroll_forever(user_profile: UserProfile, autoscroll_forever: bool,
log: bool=True) -> None:
user_profile.autoscroll_forever = autoscroll_forever
user_profile.save(update_fields=["autoscroll_forever"])
if log:
log_event({'type': 'autoscroll_forever',
'user': user_profile.email,
'autoscroll_forever': autoscroll_forever})
def do_change_enter_sends(user_profile: UserProfile, enter_sends: bool) -> None: def do_change_enter_sends(user_profile: UserProfile, enter_sends: bool) -> None:
user_profile.enter_sends = enter_sends user_profile.enter_sends = enter_sends
user_profile.save(update_fields=["enter_sends"]) user_profile.save(update_fields=["enter_sends"])

View File

@ -247,7 +247,6 @@ def fetch_initial_state_data(user_profile: UserProfile,
for prop in UserProfile.property_types: for prop in UserProfile.property_types:
state[prop] = getattr(user_profile, prop) state[prop] = getattr(user_profile, prop)
state['emojiset_choices'] = user_profile.emojiset_choices() state['emojiset_choices'] = user_profile.emojiset_choices()
state['autoscroll_forever'] = user_profile.autoscroll_forever
if want('update_global_notifications'): if want('update_global_notifications'):
for notification in UserProfile.notification_setting_types: for notification in UserProfile.notification_setting_types:

View File

@ -80,7 +80,6 @@ def users_to_zerver_userprofile(slack_dir: str, realm_id: int, timestamp: Any,
avatar_source=avatar_source, avatar_source=avatar_source,
is_bot=user.get('is_bot', False), is_bot=user.get('is_bot', False),
avatar_version=1, avatar_version=1,
autoscroll_forever=False,
default_desktop_notifications=True, default_desktop_notifications=True,
timezone=timezone, timezone=timezone,
default_sending_stream=None, default_sending_stream=None,

View File

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-12-27 17:55
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('zerver', '0128_scheduledemail_realm'),
]
operations = [
migrations.RemoveField(
model_name='userprofile',
name='autoscroll_forever',
),
]

View File

@ -576,7 +576,6 @@ class UserProfile(AbstractBaseUser, PermissionsMixin):
# UI vars # UI vars
enter_sends = models.NullBooleanField(default=False) # type: Optional[bool] enter_sends = models.NullBooleanField(default=False) # type: Optional[bool]
autoscroll_forever = models.BooleanField(default=False) # type: bool
left_side_userlist = models.BooleanField(default=False) # type: bool left_side_userlist = models.BooleanField(default=False) # type: bool
emoji_alt_code = models.BooleanField(default=False) # type: bool emoji_alt_code = models.BooleanField(default=False) # type: bool

View File

@ -44,7 +44,6 @@ class HomeTest(ZulipTestCase):
expected_keys = [ expected_keys = [
"alert_words", "alert_words",
"attachments", "attachments",
"autoscroll_forever",
"avatar_source", "avatar_source",
"avatar_url", "avatar_url",
"avatar_url_medium", "avatar_url_medium",

View File

@ -121,7 +121,6 @@ class ChangeSettingsTest(ZulipTestCase):
notification_setting) notification_setting)
def test_ui_settings(self) -> None: def test_ui_settings(self) -> None:
self.check_for_toggle_param_patch("/json/settings/ui", "autoscroll_forever")
self.check_for_toggle_param_patch("/json/settings/ui", "default_desktop_notifications") self.check_for_toggle_param_patch("/json/settings/ui", "default_desktop_notifications")
def test_toggling_boolean_user_display_settings(self) -> None: def test_toggling_boolean_user_display_settings(self) -> None:

View File

@ -9,12 +9,11 @@ from django.urls import reverse
from zerver.decorator import has_request_variables, \ from zerver.decorator import has_request_variables, \
zulip_login_required, REQ, human_users_only zulip_login_required, REQ, human_users_only
from zerver.lib.actions import do_change_password, \ from zerver.lib.actions import do_change_password, do_change_notification_settings, \
do_change_enter_sends, do_change_notification_settings, \ do_change_enter_sends, do_change_default_desktop_notifications, \
do_change_default_desktop_notifications, do_change_autoscroll_forever, \ do_regenerate_api_key, do_change_avatar_fields, \
do_regenerate_api_key, do_change_avatar_fields, do_set_user_display_setting, \ do_set_user_display_setting, validate_email, do_change_user_email, \
validate_email, do_change_user_email, do_start_email_change_process, \ do_start_email_change_process, check_change_full_name
check_change_full_name
from zerver.lib.avatar import avatar_url from zerver.lib.avatar import avatar_url
from zerver.lib.send_email import send_email, FromAddress from zerver.lib.send_email import send_email, FromAddress
from zerver.lib.i18n import get_available_language_codes from zerver.lib.i18n import get_available_language_codes
@ -57,16 +56,10 @@ def confirm_email_change(request: HttpRequest, confirmation_key: str) -> HttpRes
@has_request_variables @has_request_variables
def json_change_ui_settings( def json_change_ui_settings(
request: HttpRequest, user_profile: UserProfile, request: HttpRequest, user_profile: UserProfile,
autoscroll_forever: Optional[bool]=REQ(validator=check_bool, default=None),
default_desktop_notifications: Optional[bool]=REQ(validator=check_bool, default=None) default_desktop_notifications: Optional[bool]=REQ(validator=check_bool, default=None)
) -> HttpResponse: ) -> HttpResponse:
result = {} result = {}
if autoscroll_forever is not None and \
user_profile.autoscroll_forever != autoscroll_forever:
do_change_autoscroll_forever(user_profile, autoscroll_forever)
result['autoscroll_forever'] = autoscroll_forever
if default_desktop_notifications is not None and \ if default_desktop_notifications is not None and \
user_profile.default_desktop_notifications != default_desktop_notifications: user_profile.default_desktop_notifications != default_desktop_notifications:
do_change_default_desktop_notifications(user_profile, default_desktop_notifications) do_change_default_desktop_notifications(user_profile, default_desktop_notifications)