diff --git a/frontend_tests/node_tests/search_future.js b/frontend_tests/node_tests/search_future.js index 279baa0331..eae2edc44e 100644 --- a/frontend_tests/node_tests/search_future.js +++ b/frontend_tests/node_tests/search_future.js @@ -106,14 +106,14 @@ test("initialize", () => { [ "stream:Verona", { - description: "Stream Verona", + description_html: "Stream Verona", search_string: "stream:Verona", }, ], [ "ver", { - description: "Search for ver", + description_html: "Search for ver", search_string: "ver", }, ], diff --git a/frontend_tests/node_tests/search_now.js b/frontend_tests/node_tests/search_now.js index ab2ebf20ac..e57365d393 100644 --- a/frontend_tests/node_tests/search_now.js +++ b/frontend_tests/node_tests/search_now.js @@ -92,14 +92,14 @@ run_test("initialize", () => { [ "stream:Verona", { - description: "Stream Verona", + description_html: "Stream Verona", search_string: "stream:Verona", }, ], [ "ver", { - description: "Search for ver", + description_html: "Search for ver", search_string: "ver", }, ], diff --git a/frontend_tests/node_tests/search_pill.js b/frontend_tests/node_tests/search_pill.js index 565e203b44..a8d0583b2a 100644 --- a/frontend_tests/node_tests/search_pill.js +++ b/frontend_tests/node_tests/search_pill.js @@ -11,12 +11,12 @@ const search_pill = zrequire("search_pill"); const is_starred_item = { display_value: "is:starred", - description: "starred messages", + description_html: "starred messages", }; const is_private_item = { display_value: "is:private", - description: "private messages", + description_html: "private messages", }; run_test("create_item", () => { diff --git a/frontend_tests/node_tests/search_suggestion_future.js b/frontend_tests/node_tests/search_suggestion_future.js index a28935186d..f3ecd66077 100644 --- a/frontend_tests/node_tests/search_suggestion_future.js +++ b/frontend_tests/node_tests/search_suggestion_future.js @@ -388,7 +388,7 @@ test("empty_query_suggestions", () => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal(describe("is:private"), "Private messages"); assert.equal(describe("is:starred"), "Starred messages"); @@ -415,7 +415,7 @@ test("has_suggestions", ({override}) => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal(describe("has:link"), "Messages with one or more link"); @@ -482,7 +482,7 @@ test("check_is_suggestions", ({override}) => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal(describe("is:private"), "Private messages"); @@ -590,7 +590,10 @@ test("sent_by_me_suggestions", ({override}) => { let query = ""; let suggestions = get_suggestions("", query); assert.ok(suggestions.strings.includes("sender:myself@zulip.com")); - assert.equal(suggestions.lookup_table.get("sender:myself@zulip.com").description, "Sent by me"); + assert.equal( + suggestions.lookup_table.get("sender:myself@zulip.com").description_html, + "Sent by me", + ); query = "sender"; suggestions = get_suggestions("", query); @@ -704,7 +707,7 @@ test("topic_suggestions", ({override}) => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal(describe("te"), "Search for te"); assert.equal(describe("stream:office topic:team"), "Stream office > team"); @@ -857,7 +860,7 @@ test("people_suggestions", ({override}) => { assert.deepEqual(suggestions.strings, expected); - const describe = (q) => suggestions.lookup_table.get(q).description; + const describe = (q) => suggestions.lookup_table.get(q).description_html; assert.equal( describe("pm-with:ted@zulip.com"), @@ -927,7 +930,7 @@ test("people_suggestion (Admin only email visibility)", ({override}) => { assert.deepEqual(suggestions.strings, expected); - const describe = (q) => suggestions.lookup_table.get(q).description; + const describe = (q) => suggestions.lookup_table.get(q).description_html; assert.equal( describe("pm-with:ted@zulip.com"), diff --git a/frontend_tests/node_tests/search_suggestion_now.js b/frontend_tests/node_tests/search_suggestion_now.js index 982d1799bb..ee58cd03e8 100644 --- a/frontend_tests/node_tests/search_suggestion_now.js +++ b/frontend_tests/node_tests/search_suggestion_now.js @@ -392,7 +392,7 @@ test("empty_query_suggestions", () => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal(describe("is:private"), "Private messages"); assert.equal(describe("is:starred"), "Starred messages"); @@ -419,7 +419,7 @@ test("has_suggestions", ({override}) => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal(describe("has:link"), "Messages with one or more link"); @@ -489,7 +489,7 @@ test("check_is_suggestions", ({override}) => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal(describe("is:private"), "Private messages"); @@ -560,7 +560,10 @@ test("sent_by_me_suggestions", ({override}) => { let query = ""; let suggestions = get_suggestions("", query); assert.ok(suggestions.strings.includes("sender:myself@zulip.com")); - assert.equal(suggestions.lookup_table.get("sender:myself@zulip.com").description, "Sent by me"); + assert.equal( + suggestions.lookup_table.get("sender:myself@zulip.com").description_html, + "Sent by me", + ); query = "sender"; suggestions = get_suggestions("", query); @@ -669,7 +672,7 @@ test("topic_suggestions", ({override}) => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal(describe("te"), "Search for te"); assert.equal(describe("stream:office topic:team"), "Stream office > team"); @@ -827,7 +830,7 @@ test("people_suggestions", ({override}) => { assert.deepEqual(suggestions.strings, expected); function describe(q) { - return suggestions.lookup_table.get(q).description; + return suggestions.lookup_table.get(q).description_html; } assert.equal( describe("pm-with:ted@zulip.com"), @@ -971,7 +974,7 @@ test("people_suggestion (Admin only email visibility)", ({override}) => { assert.deepEqual(suggestions.strings, expected); - const describe = (q) => suggestions.lookup_table.get(q).description; + const describe = (q) => suggestions.lookup_table.get(q).description_html; assert.equal( describe("pm-with:ted@zulip.com"), diff --git a/static/js/search.js b/static/js/search.js index 22eb6b71f2..dc7cda2491 100644 --- a/static/js/search.js +++ b/static/js/search.js @@ -69,7 +69,7 @@ export function initialize() { const $searchbox = $("#searchbox"); // Data storage for the typeahead. - // This maps a search string to an object with a "description" field. + // This maps a search string to an object with a "description_html" field. // (It's a bit of legacy that we have an object with only one important // field. There's also a "search_string" field on each element that actually // just represents the key of the hash, so it's redundant.) @@ -94,7 +94,7 @@ export function initialize() { naturalSearch: true, highlighter(item) { const obj = search_map.get(item); - return obj.description; + return obj.description_html; }, matcher() { return true; diff --git a/static/js/search_pill.js b/static/js/search_pill.js index d4ed02e6a3..edfa33c119 100644 --- a/static/js/search_pill.js +++ b/static/js/search_pill.js @@ -3,10 +3,10 @@ import * as input_pill from "./input_pill"; export function create_item_from_search_string(search_string) { const operator = Filter.parse(search_string); - const description = Filter.describe(operator); + const description_html = Filter.describe(operator); return { display_value: search_string, - description, + description_html, }; } diff --git a/static/js/search_suggestion.js b/static/js/search_suggestion.js index 58027e4921..57501d84c1 100644 --- a/static/js/search_suggestion.js +++ b/static/js/search_suggestion.js @@ -53,7 +53,7 @@ function check_validity(last, operators, valid, invalid) { function format_as_suggestion(terms) { return { - description: Filter.describe(terms), + description_html: Filter.describe(terms), search_string: Filter.unparse(terms), }; } @@ -113,14 +113,14 @@ function get_stream_suggestions(last, operators) { const prefix = "stream"; const highlighted_stream = hilite(regex, stream); const verb = last.negated ? "exclude " : ""; - const description = verb + prefix + " " + highlighted_stream; + const description_html = verb + prefix + " " + highlighted_stream; const term = { operator: "stream", operand: stream, negated: last.negated, }; const search_string = Filter.unparse([term]); - return {description, search_string}; + return {description_html, search_string}; }); return objs; @@ -177,14 +177,14 @@ function get_group_suggestions(last, operators) { negated, }; const name = highlight_person(person); - const description = + const description_html = prefix + " " + Handlebars.Utils.escapeExpression(all_but_last_part) + "," + name; let terms = [term]; if (negated) { terms = [{operator: "is", operand: "private"}, term]; } const search_string = Filter.unparse(terms); - return {description, search_string}; + return {description_html, search_string}; }); return suggestions; @@ -253,7 +253,7 @@ function get_person_suggestions(people_getter, last, operators, autocomplete_ope const objs = persons.map((person) => { const name = highlight_person(person); - const description = prefix + " " + name; + const description_html = prefix + " " + name; const terms = [ { operator: autocomplete_operator, @@ -267,7 +267,7 @@ function get_person_suggestions(people_getter, last, operators, autocomplete_ope terms.unshift({operator: "is", operand: "private"}); } const search_string = Filter.unparse(terms); - return {description, search_string}; + return {description_html, search_string}; }); return objs; @@ -277,7 +277,7 @@ function get_default_suggestion(operators) { // Here we return the canonical suggestion for the query that the // user typed. (The caller passes us the parsed query as "operators".) if (operators.length === 0) { - return {description: "", search_string: ""}; + return {description_html: "", search_string: ""}; } return format_as_suggestion(operators); } @@ -430,7 +430,7 @@ function get_special_filter_suggestions(last, operators, suggestions) { if (last.negated || is_search_operand_negated) { suggestions = suggestions.map((suggestion) => ({ search_string: "-" + suggestion.search_string, - description: "exclude " + suggestion.description, + description_html: "exclude " + suggestion.description_html, invalid: suggestion.invalid, })); } @@ -452,13 +452,13 @@ function get_special_filter_suggestions(last, operators, suggestions) { return ( s.search_string.toLowerCase().startsWith(last_string) || show_operator_suggestions || - s.description.toLowerCase().startsWith(last_string) + s.description_html.toLowerCase().startsWith(last_string) ); }); // Only show home if there's an empty bar if (operators.length === 0 && last_string === "") { - suggestions.unshift({search_string: "", description: "All messages"}); + suggestions.unshift({search_string: "", description_html: "All messages"}); } return suggestions; } @@ -467,7 +467,7 @@ function get_streams_filter_suggestions(last, operators) { const suggestions = [ { search_string: "streams:public", - description: "All public streams in organization", + description_html: "All public streams in organization", invalid: [ {operator: "is", operand: "private"}, {operator: "stream"}, @@ -484,7 +484,7 @@ function get_is_filter_suggestions(last, operators) { const suggestions = [ { search_string: "is:private", - description: "private messages", + description_html: "private messages", invalid: [ {operator: "is", operand: "private"}, {operator: "stream"}, @@ -494,27 +494,27 @@ function get_is_filter_suggestions(last, operators) { }, { search_string: "is:starred", - description: "starred messages", + description_html: "starred messages", invalid: [{operator: "is", operand: "starred"}], }, { search_string: "is:mentioned", - description: "@-mentions", + description_html: "@-mentions", invalid: [{operator: "is", operand: "mentioned"}], }, { search_string: "is:alerted", - description: "alerted messages", + description_html: "alerted messages", invalid: [{operator: "is", operand: "alerted"}], }, { search_string: "is:unread", - description: "unread messages", + description_html: "unread messages", invalid: [{operator: "is", operand: "unread"}], }, { search_string: "is:resolved", - description: "topics marked as resolved", + description_html: "topics marked as resolved", invalid: [{operator: "is", operand: "resolved"}], }, ]; @@ -525,17 +525,17 @@ function get_has_filter_suggestions(last, operators) { const suggestions = [ { search_string: "has:link", - description: "messages with one or more link", + description_html: "messages with one or more link", invalid: [{operator: "has", operand: "link"}], }, { search_string: "has:image", - description: "messages with one or more image", + description_html: "messages with one or more image", invalid: [{operator: "has", operand: "image"}], }, { search_string: "has:attachment", - description: "messages with one or more attachment", + description_html: "messages with one or more attachment", invalid: [{operator: "has", operand: "attachment"}], }, ]; @@ -553,7 +553,7 @@ function get_sent_by_me_suggestions(last, operators) { const sender_me_query = negated_symbol + "sender:me"; const from_me_query = negated_symbol + "from:me"; const sent_string = negated_symbol + "sent"; - const description = verb + "sent by me"; + const description_html = verb + "sent by me"; const invalid = [{operator: "sender"}, {operator: "from"}]; @@ -570,14 +570,14 @@ function get_sent_by_me_suggestions(last, operators) { return [ { search_string: sender_query, - description, + description_html, }, ]; } else if (from_query.startsWith(last_string) || from_me_query.startsWith(last_string)) { return [ { search_string: from_query, - description, + description_html, }, ]; } @@ -614,9 +614,10 @@ class Attacher { } prepend_base(suggestion) { - if (this.base && this.base.description.length > 0) { + if (this.base && this.base.description_html.length > 0) { suggestion.search_string = this.base.search_string + " " + suggestion.search_string; - suggestion.description = this.base.description + ", " + suggestion.description; + suggestion.description_html = + this.base.description_html + ", " + suggestion.description_html; } } @@ -780,8 +781,8 @@ export function get_suggestions(base_query, query) { export function finalize_search_result(result) { for (const sug of result) { - const first = sug.description.charAt(0).toUpperCase(); - sug.description = first + sug.description.slice(1); + const first = sug.description_html.charAt(0).toUpperCase(); + sug.description_html = first + sug.description_html.slice(1); } // Typeahead expects us to give it strings, not objects,