mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	markdown: Remove redundant checks from /me.
If a message begins with /me, we do not have any cases where the rendered content would not begin with `<p>/me`. Thus, we can safely remove the redundant checks both on the backend and frontend.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							3df18c365d
						
					
				
				
					commit
					85c669e366
				
			@@ -1503,10 +1503,9 @@ run_test('on_events', () => {
 | 
				
			|||||||
            };
 | 
					            };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        function setup_mock_markdown_is_status_message(msg_content, msg_rendered, return_val) {
 | 
					        function setup_mock_markdown_is_status_message(msg_content, return_val) {
 | 
				
			||||||
            markdown.is_status_message = function (content, rendered) {
 | 
					            markdown.is_status_message = function (content) {
 | 
				
			||||||
                assert.equal(content, msg_content);
 | 
					                assert.equal(content, msg_content);
 | 
				
			||||||
                assert.equal(rendered, msg_rendered);
 | 
					 | 
				
			||||||
                return return_val;
 | 
					                return return_val;
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -1572,7 +1571,7 @@ run_test('on_events', () => {
 | 
				
			|||||||
        $("#compose-textarea").val('```foobarfoobar```');
 | 
					        $("#compose-textarea").val('```foobarfoobar```');
 | 
				
			||||||
        setup_visibilities();
 | 
					        setup_visibilities();
 | 
				
			||||||
        setup_mock_markdown_contains_backend_only_syntax('```foobarfoobar```', true);
 | 
					        setup_mock_markdown_contains_backend_only_syntax('```foobarfoobar```', true);
 | 
				
			||||||
        setup_mock_markdown_is_status_message('```foobarfoobar```', 'Server: foobarfoobar', false);
 | 
					        setup_mock_markdown_is_status_message('```foobarfoobar```', false);
 | 
				
			||||||
        loading.make_indicator = function (spinner) {
 | 
					        loading.make_indicator = function (spinner) {
 | 
				
			||||||
            assert.equal(spinner.selector, "#markdown_preview_spinner");
 | 
					            assert.equal(spinner.selector, "#markdown_preview_spinner");
 | 
				
			||||||
            make_indicator_called = true;
 | 
					            make_indicator_called = true;
 | 
				
			||||||
@@ -1588,7 +1587,7 @@ run_test('on_events', () => {
 | 
				
			|||||||
        $("#compose-textarea").val('foobarfoobar');
 | 
					        $("#compose-textarea").val('foobarfoobar');
 | 
				
			||||||
        setup_visibilities();
 | 
					        setup_visibilities();
 | 
				
			||||||
        setup_mock_markdown_contains_backend_only_syntax('foobarfoobar', false);
 | 
					        setup_mock_markdown_contains_backend_only_syntax('foobarfoobar', false);
 | 
				
			||||||
        setup_mock_markdown_is_status_message('foobarfoobar', 'Server: foobarfoobar', false);
 | 
					        setup_mock_markdown_is_status_message('foobarfoobar', false);
 | 
				
			||||||
        mock_channel_post('foobarfoobar');
 | 
					        mock_channel_post('foobarfoobar');
 | 
				
			||||||
        markdown.apply_markdown = function (msg) {
 | 
					        markdown.apply_markdown = function (msg) {
 | 
				
			||||||
            assert.equal(msg.raw_content, 'foobarfoobar');
 | 
					            assert.equal(msg.raw_content, 'foobarfoobar');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -729,7 +729,7 @@ exports.render_and_show_preview = function (preview_spinner, preview_content_box
 | 
				
			|||||||
        // and will be undefined in case of errors
 | 
					        // and will be undefined in case of errors
 | 
				
			||||||
        let rendered_preview_html;
 | 
					        let rendered_preview_html;
 | 
				
			||||||
        if (raw_content !== undefined &&
 | 
					        if (raw_content !== undefined &&
 | 
				
			||||||
            markdown.is_status_message(raw_content, rendered_content)) {
 | 
					            markdown.is_status_message(raw_content)) {
 | 
				
			||||||
            // Handle previews of /me messages
 | 
					            // Handle previews of /me messages
 | 
				
			||||||
            rendered_preview_html = "<p><strong>" + page_params.full_name + "</strong>" + rendered_content.slice("<p>/me".length);
 | 
					            rendered_preview_html = "<p><strong>" + page_params.full_name + "</strong>" + rendered_content.slice("<p>/me".length);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -129,7 +129,7 @@ exports.apply_markdown = function (message) {
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
    // Our python-markdown processor appends two \n\n to input
 | 
					    // Our python-markdown processor appends two \n\n to input
 | 
				
			||||||
    message.content = marked(message.raw_content + '\n\n', options).trim();
 | 
					    message.content = marked(message.raw_content + '\n\n', options).trim();
 | 
				
			||||||
    message.is_me_message = exports.is_status_message(message.raw_content, message.content);
 | 
					    message.is_me_message = exports.is_status_message(message.raw_content);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.add_topic_links = function (message) {
 | 
					exports.add_topic_links = function (message) {
 | 
				
			||||||
@@ -168,10 +168,8 @@ exports.add_topic_links = function (message) {
 | 
				
			|||||||
    util.set_topic_links(message, links);
 | 
					    util.set_topic_links(message, links);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.is_status_message = function (raw_content, content) {
 | 
					exports.is_status_message = function (raw_content) {
 | 
				
			||||||
    return raw_content.indexOf('/me ') === 0 &&
 | 
					    return raw_content.indexOf('/me ') === 0;
 | 
				
			||||||
            content.indexOf('<p>') === 0 &&
 | 
					 | 
				
			||||||
            content.indexOf('</p>') !== -1;
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function make_emoji_span(codepoint, title, alt_text) {
 | 
					function make_emoji_span(codepoint, title, alt_text) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1723,11 +1723,11 @@ class Message(AbstractMessage):
 | 
				
			|||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def is_status_message(content: str, rendered_content: str) -> bool:
 | 
					    def is_status_message(content: str, rendered_content: str) -> bool:
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        Returns True if content and rendered_content are from 'me_message'
 | 
					        "status messages" start with /me and have special rendering:
 | 
				
			||||||
 | 
					            /me loves chocolate -> Full Name loves chocolate
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        if content.startswith('/me '):
 | 
					        if content.startswith('/me '):
 | 
				
			||||||
            if rendered_content.startswith('<p>') and '</p>' in rendered_content:
 | 
					            return True
 | 
				
			||||||
                return True
 | 
					 | 
				
			||||||
        return False
 | 
					        return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def update_calculated_fields(self) -> None:
 | 
					    def update_calculated_fields(self) -> None:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1020,11 +1020,6 @@ class BugdownTest(ZulipTestCase):
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
        self.assertTrue(Message.is_status_message(content, rendered_content))
 | 
					        self.assertTrue(Message.is_status_message(content, rendered_content))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Add an artificial test to fail the check:
 | 
					 | 
				
			||||||
        content = '/me takes a walk'
 | 
					 | 
				
			||||||
        rendered_content = '<h1>/me takes a walk</h1>'
 | 
					 | 
				
			||||||
        self.assertFalse(Message.is_status_message(content, rendered_content))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alert_words(self) -> None:
 | 
					    def test_alert_words(self) -> None:
 | 
				
			||||||
        user_profile = self.example_user('othello')
 | 
					        user_profile = self.example_user('othello')
 | 
				
			||||||
        do_set_alert_words(user_profile, ["ALERTWORD", "scaryword"])
 | 
					        do_set_alert_words(user_profile, ["ALERTWORD", "scaryword"])
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user