mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	pm_conversations: Convert recent to an ES6 class RecentPrivateMessages.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							2bf6731f5a
						
					
				
				
					commit
					557e88df77
				
			@@ -10,15 +10,14 @@ exports.is_partner = function (user_id) {
 | 
			
		||||
    return partners.has(user_id);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.recent = (function () {
 | 
			
		||||
class RecentPrivateMessages {
 | 
			
		||||
    // This data structure keeps track of the sets of users you've had
 | 
			
		||||
    // recent conversations with, sorted by time (implemented via
 | 
			
		||||
    // `message_id` sorting, since that's how we time-sort messages).
 | 
			
		||||
    const self = {};
 | 
			
		||||
    const recent_message_ids = new FoldDict(); // key is user_ids_string
 | 
			
		||||
    const recent_private_messages = [];
 | 
			
		||||
    recent_message_ids = new FoldDict(); // key is user_ids_string
 | 
			
		||||
    recent_private_messages = [];
 | 
			
		||||
 | 
			
		||||
    self.insert = function (user_ids, message_id) {
 | 
			
		||||
    insert(user_ids, message_id) {
 | 
			
		||||
        if (user_ids.length === 0) {
 | 
			
		||||
            // The server sends [] for self-PMs.
 | 
			
		||||
            user_ids = [people.my_current_user_id()];
 | 
			
		||||
@@ -26,7 +25,7 @@ exports.recent = (function () {
 | 
			
		||||
        user_ids.sort((a, b) => a - b);
 | 
			
		||||
 | 
			
		||||
        const user_ids_string = user_ids.join(",");
 | 
			
		||||
        let conversation = recent_message_ids.get(user_ids_string);
 | 
			
		||||
        let conversation = this.recent_message_ids.get(user_ids_string);
 | 
			
		||||
 | 
			
		||||
        if (conversation === undefined) {
 | 
			
		||||
            // This is a new user, so create a new object.
 | 
			
		||||
@@ -34,11 +33,11 @@ exports.recent = (function () {
 | 
			
		||||
                user_ids_string,
 | 
			
		||||
                max_message_id: message_id,
 | 
			
		||||
            };
 | 
			
		||||
            recent_message_ids.set(user_ids_string, conversation);
 | 
			
		||||
            this.recent_message_ids.set(user_ids_string, conversation);
 | 
			
		||||
 | 
			
		||||
            // Optimistically insert the new message at the front, since that
 | 
			
		||||
            // is usually where it belongs, but we'll re-sort.
 | 
			
		||||
            recent_private_messages.unshift(conversation);
 | 
			
		||||
            this.recent_private_messages.unshift(conversation);
 | 
			
		||||
        } else {
 | 
			
		||||
            if (conversation.max_message_id >= message_id) {
 | 
			
		||||
                // don't backdate our conversation.  This is the
 | 
			
		||||
@@ -53,28 +52,28 @@ exports.recent = (function () {
 | 
			
		||||
            conversation.max_message_id = message_id;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        recent_private_messages.sort((a, b) => b.max_message_id - a.max_message_id);
 | 
			
		||||
    };
 | 
			
		||||
        this.recent_private_messages.sort((a, b) => b.max_message_id - a.max_message_id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    self.get = function () {
 | 
			
		||||
    get() {
 | 
			
		||||
        // returns array of structs with user_ids_string and
 | 
			
		||||
        // message_id
 | 
			
		||||
        return recent_private_messages;
 | 
			
		||||
    };
 | 
			
		||||
        return this.recent_private_messages;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    self.get_strings = function () {
 | 
			
		||||
    get_strings() {
 | 
			
		||||
        // returns array of structs with user_ids_string and
 | 
			
		||||
        // message_id
 | 
			
		||||
        return recent_private_messages.map((conversation) => conversation.user_ids_string);
 | 
			
		||||
    };
 | 
			
		||||
        return this.recent_private_messages.map((conversation) => conversation.user_ids_string);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    self.initialize = function (params) {
 | 
			
		||||
    initialize(params) {
 | 
			
		||||
        for (const conversation of params.recent_private_conversations) {
 | 
			
		||||
            self.insert(conversation.user_ids, conversation.max_message_id);
 | 
			
		||||
            this.insert(conversation.user_ids, conversation.max_message_id);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    return self;
 | 
			
		||||
})();
 | 
			
		||||
exports.recent = new RecentPrivateMessages();
 | 
			
		||||
 | 
			
		||||
window.pm_conversations = exports;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user