From dd39a9747d968a1a4cf8e07edc821008a3f55d7c Mon Sep 17 00:00:00 2001 From: Rixant Rokaha Date: Sun, 4 Sep 2022 16:37:13 +0000 Subject: [PATCH] left_sidebar: Hide stream section separator when there is only one. Showing section separators in the left sidebar ("Pinned streams", "Active streams", etc.) is unnecessary when there is only one section, and can feel confusing. We should show the separators only when there is more than one section present. Fixes #22843. --- frontend_tests/node_tests/stream_list.js | 10 ++-------- static/js/stream_list.js | 11 ++++++++--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/frontend_tests/node_tests/stream_list.js b/frontend_tests/node_tests/stream_list.js index 1aa015d038..33e0a33026 100644 --- a/frontend_tests/node_tests/stream_list.js +++ b/frontend_tests/node_tests/stream_list.js @@ -606,12 +606,8 @@ test_ui("separators_only_pinned_and_dormant", ({override_rewire, mock_template}) assert.ok(inactive_subheader_flag); }); -test_ui("separators_only_pinned", ({mock_template}) => { +test_ui("separators_only_pinned", () => { // Test only pinned streams - - create_stream_subheader({mock_template}); - pinned_subheader_flag = false; - // Get coverage on early-exit. stream_list.build_stream_list(); @@ -640,16 +636,14 @@ test_ui("separators_only_pinned", ({mock_template}) => { }; stream_list.build_stream_list(); - const $pinned_subheader = $(""); const expected_elems = [ - $pinned_subheader.html(), // pinned + // no section sub-header since there is only one section $(""), $(""), // no separator at the end as no stream follows ]; assert.deepEqual(appended_elems, expected_elems); - assert.ok(pinned_subheader_flag); }); test_ui("rename_stream", ({mock_template}) => { diff --git a/static/js/stream_list.js b/static/js/stream_list.js index 711b8cab27..ed7433e356 100644 --- a/static/js/stream_list.js +++ b/static/js/stream_list.js @@ -145,8 +145,13 @@ export function build_stream_list(force_rerender) { const any_pinned_streams = stream_groups.pinned_streams.length > 0; const any_normal_streams = stream_groups.normal_streams.length > 0; const any_dormant_streams = stream_groups.dormant_streams.length > 0; + const need_section_subheaders = + (any_pinned_streams ? 1 : 0) + + (any_normal_streams ? 1 : 0) + + (any_dormant_streams ? 1 : 0) >= + 2; - if (any_pinned_streams) { + if (any_pinned_streams && need_section_subheaders) { elems.push( render_stream_subheader({ subheader_name: $t({ @@ -164,7 +169,7 @@ export function build_stream_list(force_rerender) { add_sidebar_li(stream_id); } - if (any_normal_streams) { + if (any_normal_streams && need_section_subheaders) { elems.push( render_stream_subheader({ subheader_name: $t({ @@ -182,7 +187,7 @@ export function build_stream_list(force_rerender) { add_sidebar_li(stream_id); } - if (any_dormant_streams) { + if (any_dormant_streams && need_section_subheaders) { elems.push( render_stream_subheader({ subheader_name: $t({