mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	user status: Surface status in the buddy list.
When you hover over a user that has set a user
status, we now show something like "out to lunch."
You can test this in the console by doing:
    user_status.server_update({status_text: 'out to lunch'})
And then hover over your name in the buddy list.
			
			
This commit is contained in:
		@@ -91,6 +91,15 @@ run_test('buddy_status', () => {
 | 
			
		||||
    assert.equal(buddy_data.buddy_status(me.user_id), 'active');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
run_test('user_title', () => {
 | 
			
		||||
    assert.equal(buddy_data.user_title(me.user_id), 'Human Myself is active');
 | 
			
		||||
    user_status.set_status_text({
 | 
			
		||||
        user_id: me.user_id,
 | 
			
		||||
        status_text: 'out to lunch',
 | 
			
		||||
    });
 | 
			
		||||
    assert.equal(buddy_data.user_title(me.user_id), 'out to lunch');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
run_test('simple search', () => {
 | 
			
		||||
    const user_ids = buddy_data.get_filtered_and_sorted_user_ids('sel');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -134,10 +134,33 @@ exports.my_user_status = function (user_id) {
 | 
			
		||||
    return i18n.t('(you)');
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.user_title = function (user_id) {
 | 
			
		||||
    var buddy_status = exports.buddy_status(user_id);
 | 
			
		||||
    var type_desc = presence_descriptions[buddy_status];
 | 
			
		||||
    var status_text = user_status.get_status_text(user_id);
 | 
			
		||||
    var person = people.get_person_from_user_id(user_id);
 | 
			
		||||
    var title;
 | 
			
		||||
 | 
			
		||||
    if (status_text) {
 | 
			
		||||
        // The user-set status, like "out to lunch",
 | 
			
		||||
        // is more important than actual presence.
 | 
			
		||||
        title = status_text;
 | 
			
		||||
    } else {
 | 
			
		||||
        title = person.full_name;
 | 
			
		||||
        if (type_desc) {
 | 
			
		||||
            // example: "Cordelia Lear is away"
 | 
			
		||||
            title += ' ' + type_desc;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return title;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.info_for = function (user_id) {
 | 
			
		||||
    var buddy_status = exports.buddy_status(user_id);
 | 
			
		||||
    var person = people.get_person_from_user_id(user_id);
 | 
			
		||||
    var my_user_status = exports.my_user_status(user_id);
 | 
			
		||||
    var title = exports.user_title(user_id);
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        href: hash_util.pm_with_uri(person.email),
 | 
			
		||||
@@ -147,7 +170,7 @@ exports.info_for = function (user_id) {
 | 
			
		||||
        is_current_user: people.is_my_user_id(user_id),
 | 
			
		||||
        num_unread: get_num_unread(user_id),
 | 
			
		||||
        type: buddy_status,
 | 
			
		||||
        type_desc: presence_descriptions[buddy_status],
 | 
			
		||||
        title: title,
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -472,6 +472,7 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
 | 
			
		||||
                user_id: event.user_id,
 | 
			
		||||
                status_text: event.status_text,
 | 
			
		||||
            });
 | 
			
		||||
            activity.redraw_user(event.user_id);
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
          href="{{href}}"
 | 
			
		||||
          data-user-id="{{user_id}}"
 | 
			
		||||
          data-name="{{name}}"
 | 
			
		||||
          title="{{name}} {{type_desc}}">
 | 
			
		||||
          title="{{title}}">
 | 
			
		||||
            {{name}}
 | 
			
		||||
            {{#if my_user_status}}
 | 
			
		||||
            <span class="my_user_status">{{my_user_status}}</span>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user