sidebar: Narrow to latest topic if not in stream.

We now narrow to the latest topic in stream if we are narrowing from
outside the stream, and show all topics grouped together (previous
default) if we are already narrowed to the stream.

Fixes #7555.
This commit is contained in:
Rohitt Vashishtha 2017-12-08 16:06:38 +05:30 committed by showell
parent 6d9273819c
commit eb2bdb706a
2 changed files with 14 additions and 1 deletions

View File

@ -282,6 +282,11 @@ casper.then(function () {
casper.click('#stream_filters [data-stream-name="Verona"] a'); casper.click('#stream_filters [data-stream-name="Verona"] a');
}); });
expect_stream_subject();
// Click again to now narrow to stream.
casper.thenClick('#stream_filters [data-stream-name="Verona"] a');
expect_stream(); expect_stream();
casper.then(check_narrow_title('Verona - Zulip Dev - Zulip')); casper.then(check_narrow_title('Verona - Zulip Dev - Zulip'));

View File

@ -468,7 +468,15 @@ exports.initialize = function () {
var stream_id = $(e.target).parents('li').attr('data-stream-id'); var stream_id = $(e.target).parents('li').attr('data-stream-id');
var sub = stream_data.get_sub_by_id(stream_id); var sub = stream_data.get_sub_by_id(stream_id);
popovers.hide_all(); popovers.hide_all();
narrow.by('stream', sub.name, {select_first_unread: true, trigger: 'sidebar'}); var operators = [{operator: "stream", operand: sub.name}];
// If we are not in the stream already, narrow to most recent topic in stream.
if (!narrow_state.is_for_stream_id(stream_id)) {
var history = topic_data.get_recent_names(stream_id);
if (history.length > 0) {
operators.push({operator: "topic", operand: history[0]});
}
}
narrow.activate(operators, {select_first_unread: true, trigger: "sidebar"});
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();