mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 08:26:11 +00:00
refactor: Move operators_to_hash to hash_utils.
This breaks some unnecessary dependencies on hashchange.js, in favor of hash_util, which has fewer dependencies.
This commit is contained in:
@@ -77,7 +77,6 @@ zrequire('Handlebars', 'handlebars');
|
||||
zrequire('templates');
|
||||
zrequire('unread');
|
||||
zrequire('hash_util');
|
||||
zrequire('hashchange');
|
||||
zrequire('narrow');
|
||||
zrequire('util');
|
||||
zrequire('presence');
|
||||
|
||||
@@ -33,7 +33,7 @@ run_test('operators_round_trip', () => {
|
||||
{operator: 'stream', operand: 'devel'},
|
||||
{operator: 'topic', operand: 'algol'},
|
||||
];
|
||||
hash = hashchange.operators_to_hash(operators);
|
||||
hash = hash_util.operators_to_hash(operators);
|
||||
assert.equal(hash, '#narrow/stream/devel/topic/algol');
|
||||
|
||||
narrow = hashchange.parse_narrow(hash.split('/'));
|
||||
@@ -46,7 +46,7 @@ run_test('operators_round_trip', () => {
|
||||
{operator: 'stream', operand: 'devel'},
|
||||
{operator: 'topic', operand: 'visual c++', negated: true},
|
||||
];
|
||||
hash = hashchange.operators_to_hash(operators);
|
||||
hash = hash_util.operators_to_hash(operators);
|
||||
assert.equal(hash, '#narrow/stream/devel/-topic/visual.20c.2B.2B');
|
||||
|
||||
narrow = hashchange.parse_narrow(hash.split('/'));
|
||||
@@ -64,7 +64,7 @@ run_test('operators_round_trip', () => {
|
||||
operators = [
|
||||
{operator: 'stream', operand: 'Florida, USA'},
|
||||
];
|
||||
hash = hashchange.operators_to_hash(operators);
|
||||
hash = hash_util.operators_to_hash(operators);
|
||||
assert.equal(hash, '#narrow/stream/987-Florida.2C-USA');
|
||||
narrow = hashchange.parse_narrow(hash.split('/'));
|
||||
assert.deepEqual(narrow, [
|
||||
@@ -99,7 +99,7 @@ run_test('people_slugs', () => {
|
||||
operators = [
|
||||
{operator: 'sender', operand: 'alice@example.com'},
|
||||
];
|
||||
hash = hashchange.operators_to_hash(operators);
|
||||
hash = hash_util.operators_to_hash(operators);
|
||||
assert.equal(hash, '#narrow/sender/42-alice');
|
||||
narrow = hashchange.parse_narrow(hash.split('/'));
|
||||
assert.deepEqual(narrow, [
|
||||
@@ -109,7 +109,7 @@ run_test('people_slugs', () => {
|
||||
operators = [
|
||||
{operator: 'pm-with', operand: 'alice@example.com'},
|
||||
];
|
||||
hash = hashchange.operators_to_hash(operators);
|
||||
hash = hash_util.operators_to_hash(operators);
|
||||
assert.equal(hash, '#narrow/pm-with/42-alice');
|
||||
});
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
set_global('$', global.make_zjquery());
|
||||
set_global('i18n', global.stub_i18n);
|
||||
|
||||
zrequire('hashchange');
|
||||
zrequire('hash_util');
|
||||
zrequire('narrow');
|
||||
zrequire('narrow_state');
|
||||
|
||||
@@ -64,6 +64,28 @@ exports.by_stream_subject_uri = function (stream, subject) {
|
||||
"/subject/" + exports.encodeHashComponent(subject);
|
||||
};
|
||||
|
||||
// Encodes an operator list into the
|
||||
// corresponding hash: the # component
|
||||
// of the narrow URL
|
||||
exports.operators_to_hash = function (operators) {
|
||||
var hash = '#';
|
||||
|
||||
if (operators !== undefined) {
|
||||
hash = '#narrow';
|
||||
_.each(operators, function (elem) {
|
||||
// Support legacy tuples.
|
||||
var operator = elem.operator;
|
||||
var operand = elem.operand;
|
||||
|
||||
var sign = elem.negated ? '-' : '';
|
||||
hash += '/' + sign + exports.encodeHashComponent(operator)
|
||||
+ '/' + exports.encode_operand(operator, operand);
|
||||
});
|
||||
}
|
||||
|
||||
return hash;
|
||||
};
|
||||
|
||||
|
||||
return exports;
|
||||
|
||||
|
||||
@@ -39,33 +39,11 @@ exports.changehash = function (newhash) {
|
||||
favicon.reset();
|
||||
};
|
||||
|
||||
// Encodes an operator list into the
|
||||
// corresponding hash: the # component
|
||||
// of the narrow URL
|
||||
exports.operators_to_hash = function (operators) {
|
||||
var hash = '#';
|
||||
|
||||
if (operators !== undefined) {
|
||||
hash = '#narrow';
|
||||
_.each(operators, function (elem) {
|
||||
// Support legacy tuples.
|
||||
var operator = elem.operator;
|
||||
var operand = elem.operand;
|
||||
|
||||
var sign = elem.negated ? '-' : '';
|
||||
hash += '/' + sign + hash_util.encodeHashComponent(operator)
|
||||
+ '/' + hash_util.encode_operand(operator, operand);
|
||||
});
|
||||
}
|
||||
|
||||
return hash;
|
||||
};
|
||||
|
||||
exports.save_narrow = function (operators) {
|
||||
if (changing_hash) {
|
||||
return;
|
||||
}
|
||||
var new_hash = exports.operators_to_hash(operators);
|
||||
var new_hash = hash_util.operators_to_hash(operators);
|
||||
exports.changehash(new_hash);
|
||||
};
|
||||
|
||||
|
||||
@@ -768,7 +768,7 @@ exports.hide_empty_narrow_message = function () {
|
||||
};
|
||||
|
||||
exports.pm_with_uri = function (reply_to) {
|
||||
return hashchange.operators_to_hash([
|
||||
return hash_util.operators_to_hash([
|
||||
{operator: 'pm-with', operand: reply_to},
|
||||
]);
|
||||
};
|
||||
@@ -782,7 +782,7 @@ exports.huddle_with_uri = function (user_ids_string) {
|
||||
};
|
||||
|
||||
exports.by_sender_uri = function (reply_to) {
|
||||
return hashchange.operators_to_hash([
|
||||
return hash_util.operators_to_hash([
|
||||
{operator: 'sender', operand: reply_to},
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -38,11 +38,11 @@ function make_tab_data() {
|
||||
tabs.push(make_tab("All Messages", "#narrow/in/all", undefined, "root"));
|
||||
} else if (page_params.narrow !== undefined) {
|
||||
tabs.push(make_tab("Stream " + page_params.narrow_stream,
|
||||
hashchange.operators_to_hash([page_params.narrow[0]]),
|
||||
hash_util.operators_to_hash([page_params.narrow[0]]),
|
||||
page_params.narrow_stream, 'stream'));
|
||||
if (page_params.narrow_topic !== undefined) {
|
||||
tabs.push(make_tab("Topic " + page_params.narrow_topic,
|
||||
hashchange.operators_to_hash(page_params.narrow),
|
||||
hash_util.operators_to_hash(page_params.narrow),
|
||||
null));
|
||||
}
|
||||
}
|
||||
@@ -51,7 +51,7 @@ function make_tab_data() {
|
||||
var stream;
|
||||
var ops = narrow_state.operators();
|
||||
// Second breadcrumb item
|
||||
var hashed = hashchange.operators_to_hash(ops.slice(0, 1));
|
||||
var hashed = hash_util.operators_to_hash(ops.slice(0, 1));
|
||||
if (filter.has_operator("stream")) {
|
||||
stream = filter.operands("stream")[0];
|
||||
tabs.push(make_tab(stream, hashed, stream, 'stream'));
|
||||
@@ -103,7 +103,7 @@ function make_tab_data() {
|
||||
if (filter.has_operator("stream") &&
|
||||
filter.has_operator("topic")) {
|
||||
var subject = filter.operands("topic")[0];
|
||||
hashed = hashchange.operators_to_hash(ops.slice(0, 2));
|
||||
hashed = hash_util.operators_to_hash(ops.slice(0, 2));
|
||||
|
||||
tabs.push(make_tab(subject, hashed, null));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user