mirror of
https://github.com/zulip/zulip.git
synced 2025-11-08 07:52:19 +00:00
stream_settings: Fix stream row switching behavior.
Add a rule to the switch_rows(event) function to avoid switching stream row when pressing up/down key by checking the current URL hash and the add_subscribers_pill focus state. Add a utility function to hash_parser to help implement new switch_rows behavior mentioned above. Fixes #29690.
This commit is contained in:
@@ -91,6 +91,20 @@ export function is_create_new_stream_narrow(): boolean {
|
|||||||
return window.location.hash === "#streams/new";
|
return window.location.hash === "#streams/new";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This checks whether the user is in the stream settings menu
|
||||||
|
// and is opening the 'Subscribers' tab on the right panel.
|
||||||
|
export function is_subscribers_section_opened_for_stream(): boolean {
|
||||||
|
const hash_components = window.location.hash.slice(1).split(/\//);
|
||||||
|
|
||||||
|
if (hash_components[0] !== "streams") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!hash_components[3]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return hash_components[3] === "subscribers";
|
||||||
|
}
|
||||||
|
|
||||||
export const allowed_web_public_narrows = [
|
export const allowed_web_public_narrows = [
|
||||||
"channels",
|
"channels",
|
||||||
"channel",
|
"channel",
|
||||||
|
|||||||
@@ -794,10 +794,17 @@ export function launch(section, left_side_tab, right_side_tab) {
|
|||||||
|
|
||||||
export function switch_rows(event) {
|
export function switch_rows(event) {
|
||||||
const active_data = stream_settings_components.get_active_data();
|
const active_data = stream_settings_components.get_active_data();
|
||||||
|
const $add_subscriber_pill_input = $(".add_subscribers_container .input");
|
||||||
let $switch_row;
|
let $switch_row;
|
||||||
if (hash_parser.is_create_new_stream_narrow()) {
|
if (hash_parser.is_create_new_stream_narrow()) {
|
||||||
// Prevent switching stream rows when creating a new stream
|
// Prevent switching stream rows when creating a new stream
|
||||||
return false;
|
return false;
|
||||||
|
} else if (
|
||||||
|
hash_parser.is_subscribers_section_opened_for_stream() &&
|
||||||
|
$add_subscriber_pill_input.is(":focus")
|
||||||
|
) {
|
||||||
|
// Prevent switching stream rows when adding a subscriber
|
||||||
|
return false;
|
||||||
} else if (!active_data.id || active_data.$row.hasClass("notdisplayed")) {
|
} else if (!active_data.id || active_data.$row.hasClass("notdisplayed")) {
|
||||||
$switch_row = $("div.stream-row:not(.notdisplayed)").first();
|
$switch_row = $("div.stream-row:not(.notdisplayed)").first();
|
||||||
if ($("#search_stream_name").is(":focus")) {
|
if ($("#search_stream_name").is(":focus")) {
|
||||||
|
|||||||
@@ -161,6 +161,23 @@ run_test("test_is_create_new_stream_narrow", () => {
|
|||||||
assert.equal(hash_parser.is_create_new_stream_narrow(), false);
|
assert.equal(hash_parser.is_create_new_stream_narrow(), false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
run_test("test_is_subscribers_section_opened_for_stream", () => {
|
||||||
|
window.location.hash = "#streams/1/Design/subscribers";
|
||||||
|
assert.equal(hash_parser.is_subscribers_section_opened_for_stream(), true);
|
||||||
|
|
||||||
|
window.location.hash = "#streams/99/.EC.A1.B0.EB.A6.AC.EB.B2.95.20.F0.9F.98.8E/subscribers";
|
||||||
|
assert.equal(hash_parser.is_subscribers_section_opened_for_stream(), true);
|
||||||
|
|
||||||
|
window.location.hash = "#streams/random/subscribers";
|
||||||
|
assert.equal(hash_parser.is_subscribers_section_opened_for_stream(), false);
|
||||||
|
|
||||||
|
window.location.hash = "#some/random/place/subscribers";
|
||||||
|
assert.equal(hash_parser.is_subscribers_section_opened_for_stream(), false);
|
||||||
|
|
||||||
|
window.location.hash = "#";
|
||||||
|
assert.equal(hash_parser.is_subscribers_section_opened_for_stream(), false);
|
||||||
|
});
|
||||||
|
|
||||||
run_test("test_parse_narrow", () => {
|
run_test("test_parse_narrow", () => {
|
||||||
assert.deepEqual(hash_util.parse_narrow(["narrow", "stream", "99-frontend"]), [
|
assert.deepEqual(hash_util.parse_narrow(["narrow", "stream", "99-frontend"]), [
|
||||||
{negated: false, operator: "stream", operand: "frontend"},
|
{negated: false, operator: "stream", operand: "frontend"},
|
||||||
|
|||||||
Reference in New Issue
Block a user