settings: Streamline how we launch settings.

We can eliminate the janky `setup_page` methods
and just pass in section from `hashchanged`.

This sets us up to handle browser history more
nicely when you load '#settings' and we could essentially
redirect you to '#settings/your-account' (or similar
things).  A future commit will address that.

We also use `launch` as the new entry point, which
is more consistent with other modules.
This commit is contained in:
Steve Howell
2018-12-06 19:18:56 +00:00
committed by Tim Abbott
parent 5a4a357afc
commit 2a1a55af8a
4 changed files with 26 additions and 45 deletions

View File

@@ -124,14 +124,14 @@ function test_helper() {
};
}
stub('admin', 'setup_page');
stub('admin', 'launch');
stub('drafts', 'launch');
stub('favicon', 'reset');
stub('floating_recipient_bar', 'update');
stub('message_viewport', 'stop_auto_scrolling');
stub('narrow', 'deactivate');
stub('overlays', 'close_for_hash_change');
stub('settings', 'setup_page');
stub('settings', 'launch');
stub('subs', 'launch');
stub('ui_util', 'blur_active_element');
@@ -268,8 +268,7 @@ run_test('hash_interactions', () => {
window.onhashchange();
helper.assert_events([
'overlays.close_for_hash_change',
'settings.setup_page',
'admin.setup_page',
'settings.launch',
]);
window.location.hash = '#organization/user-list-admin';
@@ -278,8 +277,7 @@ run_test('hash_interactions', () => {
window.onhashchange();
helper.assert_events([
'overlays.close_for_hash_change',
'settings.setup_page',
'admin.setup_page',
'admin.launch',
]);
var called_back;

View File

@@ -75,28 +75,14 @@ exports.build_page = function () {
admin_sections.reset_sections();
};
exports.setup_page = function () {
exports.launch = function (section) {
settings.build_page();
exports.build_page();
var tab = (function () {
var tab = false;
var hash_sequence = window.location.hash.split(/\//);
if (/#*(organization)/.test(hash_sequence[0])) {
tab = hash_sequence[1];
return tab || settings_panel_menu.org_settings.current_tab();
}
return tab;
}());
if (tab) {
exports.launch_page(tab);
settings_toggle.highlight_toggle('organization');
}
};
exports.launch_page = function (section) {
overlays.open_settings();
settings_panel_menu.org_settings.activate_section(section);
settings_toggle.highlight_toggle('organization');
};
return exports;

View File

@@ -179,9 +179,21 @@ function do_hashchange_overlay(old_hash) {
return;
}
if (/settings|organization/.test(base)) {
settings.setup_page();
admin.setup_page();
if (base === 'settings') {
if (!section) {
section = settings_panel_menu.normal_settings.current_tab();
}
settings.launch(section);
return;
}
if (base === 'organization') {
if (!section) {
section = settings_panel_menu.org_settings.current_tab();
}
admin.launch(section);
return;
}

View File

@@ -140,28 +140,13 @@ exports.build_page = function () {
settings_sections.reset_sections();
};
exports.setup_page = function () {
exports.launch = function (section) {
exports.build_page();
admin.build_page();
var tab = (function () {
var tab = false;
var hash_sequence = window.location.hash.split(/\//);
if (/#*(settings)/.test(hash_sequence[0])) {
tab = hash_sequence[1];
return tab || settings_panel_menu.normal_settings.current_tab();
}
return tab;
}());
if (tab) {
exports.launch_page(tab);
settings_toggle.highlight_toggle('settings');
}
};
exports.launch_page = function (section) {
overlays.open_settings();
settings_panel_menu.normal_settings.activate_section(section);
settings_toggle.highlight_toggle('settings');
};
exports.set_settings_header = function (key) {