mirror of https://github.com/zulip/zulip.git
Clean up code to open "Create stream" panel.
This fixes a bug where hitting the "n" hotkey was causing double work related to the hashchange system. The code is now organized like this: do_open_create_stream() does the GUI piece We call the above directly for hash changes. For in-app actions, whether clicks or hotkeys, we call open_create_stream(), which delegates most of the work to do_open_create_stream() but also updates the hash.
This commit is contained in:
parent
13af91869d
commit
43f25eb4a5
|
@ -227,7 +227,7 @@ run_test('basic_chars', () => {
|
|||
overlays.is_active = return_true;
|
||||
assert_mapping('S', 'subs.keyboard_sub');
|
||||
assert_mapping('V', 'subs.view_stream');
|
||||
assert_mapping('n', 'subs.new_stream_clicked');
|
||||
assert_mapping('n', 'subs.open_create_stream');
|
||||
page_params.can_create_streams = false;
|
||||
assert_unmapped('n');
|
||||
overlays.streams_open = return_false;
|
||||
|
|
|
@ -613,7 +613,7 @@ exports.process_hotkey = function (e, hotkey) {
|
|||
return true;
|
||||
}
|
||||
if (event_name === 'n_key' && overlays.streams_open() && page_params.can_create_streams) {
|
||||
subs.new_stream_clicked();
|
||||
subs.open_create_stream();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -234,11 +234,6 @@ exports.new_stream_clicked = function (stream_name) {
|
|||
if (window.innerWidth > 700) {
|
||||
$('#create_stream_name').focus();
|
||||
}
|
||||
|
||||
// change the hash to #streams/new to allow for linking and
|
||||
// easy discovery.
|
||||
|
||||
window.location.hash = "#streams/new";
|
||||
};
|
||||
|
||||
function clear_error_display() {
|
||||
|
|
|
@ -609,7 +609,7 @@ exports.change_state = (function () {
|
|||
if (hash.arguments.length > 0) {
|
||||
// if in #streams/new form.
|
||||
if (hash.arguments[0] === "new") {
|
||||
exports.new_stream_clicked();
|
||||
exports.do_open_create_stream();
|
||||
} else if (hash.arguments[0] === "all") {
|
||||
maybe_select_tab("all-streams");
|
||||
} else if (hash.arguments[0] === "subscribed") {
|
||||
|
@ -772,7 +772,10 @@ function ajaxUnsubscribe(sub) {
|
|||
});
|
||||
}
|
||||
|
||||
exports.new_stream_clicked = function () {
|
||||
exports.do_open_create_stream = function () {
|
||||
// Only call this directly for hash changes.
|
||||
// Prefer open_create_stream().
|
||||
|
||||
var stream = $.trim($("#search_stream_name").val());
|
||||
|
||||
if (!should_list_all_streams()) {
|
||||
|
@ -785,6 +788,16 @@ exports.new_stream_clicked = function () {
|
|||
stream_create.new_stream_clicked(stream);
|
||||
};
|
||||
|
||||
exports.open_create_stream = function () {
|
||||
exports.do_open_create_stream();
|
||||
|
||||
// this will change the hash which will attempt to retrigger the create
|
||||
// stream code, so we prevent this once.
|
||||
exports.change_state.prevent_once();
|
||||
window.location.hash = "#streams/new";
|
||||
};
|
||||
|
||||
|
||||
exports.sub_or_unsub = function (sub) {
|
||||
if (sub.subscribed) {
|
||||
ajaxUnsubscribe(sub);
|
||||
|
@ -806,10 +819,7 @@ exports.initialize = function () {
|
|||
|
||||
$("#subscriptions_table").on("click", ".create_stream_button", function (e) {
|
||||
e.preventDefault();
|
||||
exports.new_stream_clicked();
|
||||
// this will change the hash which will attempt to retrigger the create
|
||||
// stream code, so we prevent this once.
|
||||
exports.change_state.prevent_once();
|
||||
exports.open_create_stream();
|
||||
});
|
||||
|
||||
$(".subscriptions").on("click", "[data-dismiss]", function (e) {
|
||||
|
|
Loading…
Reference in New Issue