hash_parser: Add utility function to dynamically detect hash.

Added new utility function to hash_parser to dynamically
detect the hash category of an URL. This is intended to
reduce the need of adding more adhoc hash_parser utility
functions.
This commit is contained in:
PieterCK 2024-04-30 21:47:50 +07:00 committed by Tim Abbott
parent 6ca52628ad
commit d882d90857
2 changed files with 25 additions and 0 deletions

View File

@ -111,6 +111,11 @@ export function is_subscribers_section_opened_for_stream(): boolean {
return hash_components[3] === "subscribers";
}
export function is_in_specified_hash_category(hash_categories: string[]): boolean {
const main_hash = get_hash_category(window.location.hash);
return hash_categories.includes(main_hash);
}
export const allowed_web_public_narrows = [
"channels",
"channel",

View File

@ -178,6 +178,26 @@ run_test("test_is_subscribers_section_opened_for_stream", () => {
assert.equal(hash_parser.is_subscribers_section_opened_for_stream(), false);
});
run_test("test_is_in_specified_hash_category", () => {
window.location.hash = "#channels/1/Design/subscribers";
assert.equal(hash_parser.is_in_specified_hash_category(["channels", "channel"]), true);
window.location.hash = "#channels/99/.EC.A1.B0.EB.A6.AC.EB.B2.95.20.F0.9F.98.8E/subscribers";
assert.equal(hash_parser.is_in_specified_hash_category(["channels", "channel"]), true);
window.location.hash = "#gro/channels/channel";
assert.equal(hash_parser.is_in_specified_hash_category(["stream", "channel", "group"]), false);
window.location.hash = "#some/stream/channel/group";
assert.equal(hash_parser.is_in_specified_hash_category(["stream", "channel", "group"]), false);
window.location.hash = "#some/stream/channel/group";
assert.equal(hash_parser.is_in_specified_hash_category([""]), false);
window.location.hash = "#some/stream/channel/group";
assert.equal(hash_parser.is_in_specified_hash_category([]), false);
});
run_test("test_parse_narrow", () => {
assert.deepEqual(hash_util.parse_narrow(["narrow", "stream", "99-frontend"]), [
{negated: false, operator: "stream", operand: "frontend"},