mirror of https://github.com/zulip/zulip.git
settings: Add 'web_navigate_to_sent_message' setting.
In a2ef1d7e93
, we made changes so
that when you send a message, your view jumps to the conversation
where you sent it.
For some users it was an improvement, few reported that it
disrupts their workflows.
This prep commit adds a setting which will be used to allow users
to decide whether to automatically go to conversation where they
sent a message.
This commit is contained in:
parent
8782625f07
commit
83414db72e
|
@ -20,6 +20,13 @@ format used by the Zulip server that they are interacting with.
|
||||||
|
|
||||||
## Changes in Zulip 9.0
|
## Changes in Zulip 9.0
|
||||||
|
|
||||||
|
**Feature level 268**
|
||||||
|
|
||||||
|
* [`PATCH /realm/user_settings_defaults`](/api/update-realm-user-settings-defaults),
|
||||||
|
[`POST /register`](/api/register-queue), [`PATCH /settings`](/api/update-settings):
|
||||||
|
Added a new `web_navigate_to_sent_message` setting to allow users to decide
|
||||||
|
whether to automatically go to conversation where they sent a message.
|
||||||
|
|
||||||
**Feature level 267**
|
**Feature level 267**
|
||||||
|
|
||||||
* [`GET /invites`](/api/get-invites),[`POST /invites`](/api/send-invites): Added
|
* [`GET /invites`](/api/get-invites),[`POST /invites`](/api/send-invites): Added
|
||||||
|
|
|
@ -33,7 +33,7 @@ DESKTOP_WARNING_VERSION = "5.9.3"
|
||||||
# Changes should be accompanied by documentation explaining what the
|
# Changes should be accompanied by documentation explaining what the
|
||||||
# new level means in api_docs/changelog.md, as well as "**Changes**"
|
# new level means in api_docs/changelog.md, as well as "**Changes**"
|
||||||
# entries in the endpoint's documentation in `zulip.yaml`.
|
# entries in the endpoint's documentation in `zulip.yaml`.
|
||||||
API_FEATURE_LEVEL = 267
|
API_FEATURE_LEVEL = 268
|
||||||
|
|
||||||
# Bump the minor PROVISION_VERSION to indicate that folks should provision
|
# Bump the minor PROVISION_VERSION to indicate that folks should provision
|
||||||
# only when going from an old version of the code to a newer version. Bump
|
# only when going from an old version of the code to a newer version. Bump
|
||||||
|
|
|
@ -57,6 +57,7 @@ export const realm_default_settings_schema = z.object({
|
||||||
web_home_view: z.string(),
|
web_home_view: z.string(),
|
||||||
web_line_height_percent: z.number(),
|
web_line_height_percent: z.number(),
|
||||||
web_mark_read_on_scroll_policy: z.number(),
|
web_mark_read_on_scroll_policy: z.number(),
|
||||||
|
web_navigate_to_sent_message: z.boolean(),
|
||||||
web_stream_unreads_count_display_policy: z.number(),
|
web_stream_unreads_count_display_policy: z.number(),
|
||||||
wildcard_mentions_notify: z.boolean(),
|
wildcard_mentions_notify: z.boolean(),
|
||||||
});
|
});
|
||||||
|
|
|
@ -719,6 +719,7 @@ export function dispatch_normal_event(event) {
|
||||||
"send_stream_typing_notifications",
|
"send_stream_typing_notifications",
|
||||||
"send_private_typing_notifications",
|
"send_private_typing_notifications",
|
||||||
"send_read_receipts",
|
"send_read_receipts",
|
||||||
|
"web_navigate_to_sent_message",
|
||||||
];
|
];
|
||||||
|
|
||||||
const original_home_view = user_settings.web_home_view;
|
const original_home_view = user_settings.web_home_view;
|
||||||
|
|
|
@ -575,6 +575,9 @@ export const preferences_settings_labels = {
|
||||||
web_escape_navigates_to_home_view: $t({defaultMessage: "Escape key navigates to home view"}),
|
web_escape_navigates_to_home_view: $t({defaultMessage: "Escape key navigates to home view"}),
|
||||||
web_font_size_px: $t({defaultMessage: "Message-area font size (px)"}),
|
web_font_size_px: $t({defaultMessage: "Message-area font size (px)"}),
|
||||||
web_line_height_percent: $t({defaultMessage: "Message-area line height (%)"}),
|
web_line_height_percent: $t({defaultMessage: "Message-area line height (%)"}),
|
||||||
|
web_navigate_to_sent_message: $t({
|
||||||
|
defaultMessage: "Automatically go to conversation where you sent a message",
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const notification_settings_labels = {
|
export const notification_settings_labels = {
|
||||||
|
|
|
@ -76,6 +76,7 @@ export const user_settings_schema = stream_notification_settings_schema
|
||||||
web_home_view: z.enum(["inbox", "recent_topics", "all_messages"]),
|
web_home_view: z.enum(["inbox", "recent_topics", "all_messages"]),
|
||||||
web_line_height_percent: z.number(),
|
web_line_height_percent: z.number(),
|
||||||
web_mark_read_on_scroll_policy: z.number(),
|
web_mark_read_on_scroll_policy: z.number(),
|
||||||
|
web_navigate_to_sent_message: z.boolean(),
|
||||||
web_stream_unreads_count_display_policy: z.number(),
|
web_stream_unreads_count_display_policy: z.number(),
|
||||||
});
|
});
|
||||||
export type UserSettings = z.infer<typeof user_settings_schema>;
|
export type UserSettings = z.infer<typeof user_settings_schema>;
|
||||||
|
|
|
@ -139,6 +139,12 @@
|
||||||
label=settings_label.web_escape_navigates_to_home_view
|
label=settings_label.web_escape_navigates_to_home_view
|
||||||
prefix=prefix}}
|
prefix=prefix}}
|
||||||
|
|
||||||
|
{{> settings_checkbox
|
||||||
|
setting_name="web_navigate_to_sent_message"
|
||||||
|
is_checked=settings_object.web_navigate_to_sent_message
|
||||||
|
label=settings_label.web_navigate_to_sent_message
|
||||||
|
prefix=prefix}}
|
||||||
|
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="demote_inactive_streams" class="settings-field-label">{{t "Demote inactive channels" }}
|
<label for="demote_inactive_streams" class="settings-field-label">{{t "Demote inactive channels" }}
|
||||||
{{> ../help_link_widget link="/help/manage-inactive-channels" }}
|
{{> ../help_link_widget link="/help/manage-inactive-channels" }}
|
||||||
|
|
|
@ -1121,6 +1121,11 @@ run_test("user_settings", ({override}) => {
|
||||||
user_settings.email_address_visibility = 3;
|
user_settings.email_address_visibility = 3;
|
||||||
dispatch(event);
|
dispatch(event);
|
||||||
assert_same(user_settings.email_address_visibility, 5);
|
assert_same(user_settings.email_address_visibility, 5);
|
||||||
|
|
||||||
|
event = event_fixtures.user_settings__web_navigate_to_sent_message;
|
||||||
|
user_settings.web_navigate_to_sent_message = true;
|
||||||
|
dispatch(event);
|
||||||
|
assert_same(user_settings.web_navigate_to_sent_message, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
run_test("update_message (read)", ({override}) => {
|
run_test("update_message (read)", ({override}) => {
|
||||||
|
|
|
@ -1071,6 +1071,13 @@ exports.fixtures = {
|
||||||
value: 1,
|
value: 1,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
user_settings__web_navigate_to_sent_message: {
|
||||||
|
type: "user_settings",
|
||||||
|
op: "update",
|
||||||
|
property: "web_navigate_to_sent_message",
|
||||||
|
value: false,
|
||||||
|
},
|
||||||
|
|
||||||
user_settings__web_stream_unreads_count_display_policy: {
|
user_settings__web_stream_unreads_count_display_policy: {
|
||||||
type: "user_settings",
|
type: "user_settings",
|
||||||
op: "update",
|
op: "update",
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Generated by Django 5.0.6 on 2024-07-08 19:22
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("zerver", "0546_rename_huddle_directmessagegroup_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="realmuserdefault",
|
||||||
|
name="web_navigate_to_sent_message",
|
||||||
|
field=models.BooleanField(default=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="userprofile",
|
||||||
|
name="web_navigate_to_sent_message",
|
||||||
|
field=models.BooleanField(default=True),
|
||||||
|
),
|
||||||
|
]
|
|
@ -153,6 +153,10 @@ class UserBaseSettings(models.Model):
|
||||||
default=WEB_STREAM_UNREADS_COUNT_DISPLAY_POLICY_UNMUTED_STREAMS
|
default=WEB_STREAM_UNREADS_COUNT_DISPLAY_POLICY_UNMUTED_STREAMS
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Setting to control whether to automatically go to the
|
||||||
|
# conversation where message was sent.
|
||||||
|
web_navigate_to_sent_message = models.BooleanField(default=True)
|
||||||
|
|
||||||
### Notifications settings. ###
|
### Notifications settings. ###
|
||||||
|
|
||||||
email_notifications_batching_period_seconds = models.IntegerField(default=120)
|
email_notifications_batching_period_seconds = models.IntegerField(default=120)
|
||||||
|
@ -329,6 +333,7 @@ class UserBaseSettings(models.Model):
|
||||||
web_stream_unreads_count_display_policy=int,
|
web_stream_unreads_count_display_policy=int,
|
||||||
web_font_size_px=int,
|
web_font_size_px=int,
|
||||||
web_line_height_percent=int,
|
web_line_height_percent=int,
|
||||||
|
web_navigate_to_sent_message=bool,
|
||||||
)
|
)
|
||||||
|
|
||||||
modern_notification_settings: Dict[str, Any] = dict(
|
modern_notification_settings: Dict[str, Any] = dict(
|
||||||
|
|
|
@ -11552,6 +11552,15 @@ paths:
|
||||||
- 4
|
- 4
|
||||||
- 5
|
- 5
|
||||||
example: 1
|
example: 1
|
||||||
|
web_navigate_to_sent_message:
|
||||||
|
description: |
|
||||||
|
Web/desktop app setting for whether the user's view should
|
||||||
|
automatically go to the conversation where they sent a message.
|
||||||
|
|
||||||
|
**Changes**: New in Zulip 9.0 (feature level 268). Previously,
|
||||||
|
this behavior was not configurable.
|
||||||
|
type: boolean
|
||||||
|
example: true
|
||||||
encoding:
|
encoding:
|
||||||
dense_mode:
|
dense_mode:
|
||||||
contentType: application/json
|
contentType: application/json
|
||||||
|
@ -11649,6 +11658,8 @@ paths:
|
||||||
contentType: application/json
|
contentType: application/json
|
||||||
email_address_visibility:
|
email_address_visibility:
|
||||||
contentType: application/json
|
contentType: application/json
|
||||||
|
web_navigate_to_sent_message:
|
||||||
|
contentType: application/json
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
$ref: "#/components/responses/SuccessIgnoredParameters"
|
$ref: "#/components/responses/SuccessIgnoredParameters"
|
||||||
|
@ -14473,6 +14484,14 @@ paths:
|
||||||
**Changes**: New in Zulip 5.0 (feature level 105).
|
**Changes**: New in Zulip 5.0 (feature level 105).
|
||||||
email_address_visibility:
|
email_address_visibility:
|
||||||
$ref: "#/components/schemas/EmailAddressVisibility"
|
$ref: "#/components/schemas/EmailAddressVisibility"
|
||||||
|
web_navigate_to_sent_message:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Web/desktop app setting for whether the user's view should
|
||||||
|
automatically go to the conversation where they sent a message.
|
||||||
|
|
||||||
|
**Changes**: New in Zulip 9.0 (feature level 268). Previously,
|
||||||
|
this behavior was not configurable.
|
||||||
user_topics:
|
user_topics:
|
||||||
type: array
|
type: array
|
||||||
description: |
|
description: |
|
||||||
|
@ -16853,6 +16872,14 @@ paths:
|
||||||
**Changes**: New in Zulip 5.0 (feature level 105).
|
**Changes**: New in Zulip 5.0 (feature level 105).
|
||||||
email_address_visibility:
|
email_address_visibility:
|
||||||
$ref: "#/components/schemas/EmailAddressVisibility"
|
$ref: "#/components/schemas/EmailAddressVisibility"
|
||||||
|
web_navigate_to_sent_message:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Web/desktop app setting for whether the user's view should
|
||||||
|
automatically go to the conversation where they sent a message.
|
||||||
|
|
||||||
|
**Changes**: New in Zulip 9.0 (feature level 268). Previously,
|
||||||
|
this behavior was not configurable.
|
||||||
realm_users:
|
realm_users:
|
||||||
type: array
|
type: array
|
||||||
description: |
|
description: |
|
||||||
|
@ -18140,6 +18167,15 @@ paths:
|
||||||
- 4
|
- 4
|
||||||
- 5
|
- 5
|
||||||
example: 1
|
example: 1
|
||||||
|
web_navigate_to_sent_message:
|
||||||
|
description: |
|
||||||
|
Web/desktop app setting for whether the user's view should
|
||||||
|
automatically go to the conversation where they sent a message.
|
||||||
|
|
||||||
|
**Changes**: New in Zulip 9.0 (feature level 268). Previously,
|
||||||
|
this behavior was not configurable.
|
||||||
|
type: boolean
|
||||||
|
example: true
|
||||||
encoding:
|
encoding:
|
||||||
twenty_four_hour_time:
|
twenty_four_hour_time:
|
||||||
contentType: application/json
|
contentType: application/json
|
||||||
|
@ -18241,6 +18277,8 @@ paths:
|
||||||
contentType: application/json
|
contentType: application/json
|
||||||
email_address_visibility:
|
email_address_visibility:
|
||||||
contentType: application/json
|
contentType: application/json
|
||||||
|
web_navigate_to_sent_message:
|
||||||
|
contentType: application/json
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
$ref: "#/components/responses/SuccessIgnoredParameters"
|
$ref: "#/components/responses/SuccessIgnoredParameters"
|
||||||
|
|
|
@ -653,6 +653,7 @@ def update_realm_user_settings_defaults(
|
||||||
email_address_visibility: Optional[int] = REQ(
|
email_address_visibility: Optional[int] = REQ(
|
||||||
json_validator=check_int_in(UserProfile.EMAIL_ADDRESS_VISIBILITY_TYPES), default=None
|
json_validator=check_int_in(UserProfile.EMAIL_ADDRESS_VISIBILITY_TYPES), default=None
|
||||||
),
|
),
|
||||||
|
web_navigate_to_sent_message: Optional[bool] = REQ(json_validator=check_bool, default=None),
|
||||||
) -> HttpResponse:
|
) -> HttpResponse:
|
||||||
if notification_sound is not None or email_notifications_batching_period_seconds is not None:
|
if notification_sound is not None or email_notifications_batching_period_seconds is not None:
|
||||||
check_settings_values(notification_sound, email_notifications_batching_period_seconds)
|
check_settings_values(notification_sound, email_notifications_batching_period_seconds)
|
||||||
|
|
|
@ -315,6 +315,7 @@ def json_change_settings(
|
||||||
email_address_visibility: Optional[int] = REQ(
|
email_address_visibility: Optional[int] = REQ(
|
||||||
json_validator=check_int_in(UserProfile.EMAIL_ADDRESS_VISIBILITY_TYPES), default=None
|
json_validator=check_int_in(UserProfile.EMAIL_ADDRESS_VISIBILITY_TYPES), default=None
|
||||||
),
|
),
|
||||||
|
web_navigate_to_sent_message: Optional[bool] = REQ(json_validator=check_bool, default=None),
|
||||||
) -> HttpResponse:
|
) -> HttpResponse:
|
||||||
if (
|
if (
|
||||||
default_language is not None
|
default_language is not None
|
||||||
|
|
Loading…
Reference in New Issue