mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	popover: Extract with_first_message_id helper.
This commit is contained in:
		@@ -548,6 +548,43 @@ export function register_stream_handlers() {
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function with_first_message_id(stream_id, topic_name, success_cb, error_cb) {
 | 
			
		||||
    // The API endpoint for editing messages to change their
 | 
			
		||||
    // content, topic, or stream requires a message ID.
 | 
			
		||||
    //
 | 
			
		||||
    // Because we don't have full data in the browser client, it's
 | 
			
		||||
    // possible that we might display a topic in the left sidebar
 | 
			
		||||
    // (and thus expose the UI for moving its topic to another
 | 
			
		||||
    // stream) without having a message ID that is definitely
 | 
			
		||||
    // within the topic.  (The comments in stream_topic_history.js
 | 
			
		||||
    // discuss the tricky issues around message deletion that are
 | 
			
		||||
    // involved here).
 | 
			
		||||
    //
 | 
			
		||||
    // To ensure this option works reliably at a small latency
 | 
			
		||||
    // cost for a rare operation, we just ask the server for the
 | 
			
		||||
    // latest message ID in the topic.
 | 
			
		||||
    const data = {
 | 
			
		||||
        anchor: "newest",
 | 
			
		||||
        num_before: 1,
 | 
			
		||||
        num_after: 0,
 | 
			
		||||
        narrow: JSON.stringify([
 | 
			
		||||
            {operator: "stream", operand: stream_id},
 | 
			
		||||
            {operator: "topic", operand: topic_name},
 | 
			
		||||
        ]),
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    channel.get({
 | 
			
		||||
        url: "/json/messages",
 | 
			
		||||
        data,
 | 
			
		||||
        idempotent: true,
 | 
			
		||||
        success(data) {
 | 
			
		||||
            const message_id = data.messages[0].id;
 | 
			
		||||
            success_cb(message_id);
 | 
			
		||||
        },
 | 
			
		||||
        error_cb,
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function register_topic_handlers() {
 | 
			
		||||
    // Mute the topic
 | 
			
		||||
    $("body").on("click", ".sidebar-popover-mute-topic", (e) => {
 | 
			
		||||
@@ -668,38 +705,11 @@ export function register_topic_handlers() {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // The API endpoint for editing messages to change their
 | 
			
		||||
        // content, topic, or stream requires a message ID.
 | 
			
		||||
        //
 | 
			
		||||
        // Because we don't have full data in the browser client, it's
 | 
			
		||||
        // possible that we might display a topic in the left sidebar
 | 
			
		||||
        // (and thus expose the UI for moving its topic to another
 | 
			
		||||
        // stream) without having a message ID that is definitely
 | 
			
		||||
        // within the topic.  (The comments in stream_topic_history.js
 | 
			
		||||
        // discuss the tricky issues around message deletion that are
 | 
			
		||||
        // involved here).
 | 
			
		||||
        //
 | 
			
		||||
        // To ensure this option works reliably at a small latency
 | 
			
		||||
        // cost for a rare operation, we just ask the server for the
 | 
			
		||||
        // latest message ID in the topic.
 | 
			
		||||
        const data = {
 | 
			
		||||
            anchor: "newest",
 | 
			
		||||
            num_before: 1,
 | 
			
		||||
            num_after: 0,
 | 
			
		||||
            narrow: JSON.stringify([
 | 
			
		||||
                {operator: "stream", operand: current_stream_id},
 | 
			
		||||
                {operator: "topic", operand: old_topic_name},
 | 
			
		||||
            ]),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        message_edit.show_topic_move_spinner();
 | 
			
		||||
        channel.get({
 | 
			
		||||
            url: "/json/messages",
 | 
			
		||||
            data,
 | 
			
		||||
            idempotent: true,
 | 
			
		||||
            success(data) {
 | 
			
		||||
                const message_id = data.messages[0].id;
 | 
			
		||||
 | 
			
		||||
        with_first_message_id(
 | 
			
		||||
            current_stream_id,
 | 
			
		||||
            old_topic_name,
 | 
			
		||||
            (message_id) => {
 | 
			
		||||
                if (old_topic_name.trim() === new_topic_name.trim()) {
 | 
			
		||||
                    // We use `undefined` to tell the server that
 | 
			
		||||
                    // there has been no change in the topic name.
 | 
			
		||||
@@ -716,10 +726,10 @@ export function register_topic_handlers() {
 | 
			
		||||
                    );
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            error(xhr) {
 | 
			
		||||
            (xhr) => {
 | 
			
		||||
                message_edit.hide_topic_move_spinner();
 | 
			
		||||
                show_error_msg(xhr.responseJSON.msg);
 | 
			
		||||
            },
 | 
			
		||||
        });
 | 
			
		||||
        );
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user