mirror of
https://github.com/zulip/zulip.git
synced 2026-06-30 21:11:04 +08:00
settings: Toggle dense mode if font and line height values are changed.
This commit is contained in:
parent
b6905777d0
commit
17541ddacb
@ -479,6 +479,21 @@ def do_set_realm_user_default_setting(
|
||||
},
|
||||
)
|
||||
|
||||
if name in {"web_font_size_px", "web_line_height_percent"}:
|
||||
if (
|
||||
realm_user_default.web_font_size_px != RealmUserDefault.WEB_FONT_SIZE_PX_LEGACY
|
||||
or realm_user_default.web_line_height_percent
|
||||
!= RealmUserDefault.WEB_LINE_HEIGHT_PERCENT_LEGACY
|
||||
):
|
||||
expected_dense_mode = False
|
||||
else:
|
||||
expected_dense_mode = True
|
||||
|
||||
if realm_user_default.dense_mode != expected_dense_mode:
|
||||
do_set_realm_user_default_setting(
|
||||
realm_user_default, "dense_mode", expected_dense_mode, acting_user=acting_user
|
||||
)
|
||||
|
||||
event = dict(
|
||||
type="realm_user_settings_defaults",
|
||||
op="update",
|
||||
|
||||
@ -418,7 +418,7 @@ def update_scheduled_email_notifications_time(
|
||||
)
|
||||
|
||||
|
||||
@transaction.atomic(durable=True)
|
||||
@transaction.atomic(savepoint=False)
|
||||
def do_change_user_setting(
|
||||
user_profile: UserProfile,
|
||||
setting_name: str,
|
||||
@ -474,6 +474,20 @@ def do_change_user_setting(
|
||||
|
||||
send_event_on_commit(user_profile.realm, event, [user_profile.id])
|
||||
|
||||
if setting_name in {"web_font_size_px", "web_line_height_percent"}:
|
||||
if (
|
||||
user_profile.web_font_size_px != UserProfile.WEB_FONT_SIZE_PX_LEGACY
|
||||
or user_profile.web_line_height_percent != UserProfile.WEB_LINE_HEIGHT_PERCENT_LEGACY
|
||||
):
|
||||
expected_dense_mode = False
|
||||
else:
|
||||
expected_dense_mode = True
|
||||
|
||||
if user_profile.dense_mode != expected_dense_mode:
|
||||
do_change_user_setting(
|
||||
user_profile, "dense_mode", expected_dense_mode, acting_user=acting_user
|
||||
)
|
||||
|
||||
if setting_name in UserProfile.notification_settings_legacy:
|
||||
# This legacy event format is for backwards-compatibility with
|
||||
# clients that don't support the new user_settings event type.
|
||||
|
||||
@ -1989,6 +1989,33 @@ class RealmAPITest(ZulipTestCase):
|
||||
continue
|
||||
self.do_test_realm_default_setting_update_api(prop)
|
||||
|
||||
def test_update_default_information_density_settings(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
realm_user_default = RealmUserDefault.objects.get(realm=realm)
|
||||
self.assertEqual(realm_user_default.dense_mode, True)
|
||||
self.login("iago")
|
||||
|
||||
data = {"web_font_size_px": 16}
|
||||
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
||||
self.assert_json_success(result)
|
||||
realm_user_default = RealmUserDefault.objects.get(realm=realm)
|
||||
self.assertEqual(realm_user_default.web_font_size_px, 16)
|
||||
self.assertEqual(realm_user_default.dense_mode, False)
|
||||
|
||||
data = {"web_font_size_px": 14}
|
||||
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
||||
self.assert_json_success(result)
|
||||
realm_user_default = RealmUserDefault.objects.get(realm=realm)
|
||||
self.assertEqual(realm_user_default.web_font_size_px, 14)
|
||||
self.assertEqual(realm_user_default.dense_mode, True)
|
||||
|
||||
data = {"web_line_height_percent": 140}
|
||||
result = self.client_patch("/json/realm/user_settings_defaults", data)
|
||||
self.assert_json_success(result)
|
||||
realm_user_default = RealmUserDefault.objects.get(realm=realm)
|
||||
self.assertEqual(realm_user_default.web_line_height_percent, 140)
|
||||
self.assertEqual(realm_user_default.dense_mode, False)
|
||||
|
||||
def test_invalid_default_notification_sound_value(self) -> None:
|
||||
result = self.client_patch(
|
||||
"/json/realm/user_settings_defaults", {"notification_sound": "invalid"}
|
||||
|
||||
@ -501,6 +501,32 @@ class ChangeSettingsTest(ZulipTestCase):
|
||||
hamlet = self.example_user("hamlet")
|
||||
self.assertEqual(hamlet.enable_stream_desktop_notifications, True)
|
||||
|
||||
def test_changing_information_density_settings(self) -> None:
|
||||
hamlet = self.example_user("hamlet")
|
||||
self.assertEqual(hamlet.dense_mode, True)
|
||||
self.login("hamlet")
|
||||
|
||||
data = {"web_font_size_px": 16}
|
||||
result = self.client_patch("/json/settings", data)
|
||||
self.assert_json_success(result)
|
||||
hamlet = self.example_user("hamlet")
|
||||
self.assertEqual(hamlet.web_font_size_px, 16)
|
||||
self.assertEqual(hamlet.dense_mode, False)
|
||||
|
||||
data = {"web_font_size_px": 14}
|
||||
result = self.client_patch("/json/settings", data)
|
||||
self.assert_json_success(result)
|
||||
hamlet = self.example_user("hamlet")
|
||||
self.assertEqual(hamlet.web_font_size_px, 14)
|
||||
self.assertEqual(hamlet.dense_mode, True)
|
||||
|
||||
data = {"web_line_height_percent": 140}
|
||||
result = self.client_patch("/json/settings", data)
|
||||
self.assert_json_success(result)
|
||||
hamlet = self.example_user("hamlet")
|
||||
self.assertEqual(hamlet.web_line_height_percent, 140)
|
||||
self.assertEqual(hamlet.dense_mode, False)
|
||||
|
||||
|
||||
class UserChangesTest(ZulipTestCase):
|
||||
def test_update_api_key(self) -> None:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user