mirror of
https://github.com/zulip/zulip.git
synced 2025-11-07 07:23:22 +00:00
frontend: Add event handling for user status.
The UI part of this commit isn't really turned on yet, but it works in theory.
This commit is contained in:
@@ -85,6 +85,7 @@ zrequire('people');
|
||||
zrequire('buddy_data');
|
||||
zrequire('buddy_list');
|
||||
zrequire('user_search');
|
||||
zrequire('user_status');
|
||||
zrequire('list_cursor');
|
||||
zrequire('activity');
|
||||
|
||||
@@ -864,3 +865,11 @@ run_test('initialize', () => {
|
||||
|
||||
activity.initialize();
|
||||
});
|
||||
|
||||
run_test('away_status', () => {
|
||||
assert(!user_status.is_away(alice.user_id));
|
||||
activity.on_set_away(alice.user_id);
|
||||
assert(user_status.is_away(alice.user_id));
|
||||
activity.on_revoke_away(alice.user_id);
|
||||
assert(!user_status.is_away(alice.user_id));
|
||||
});
|
||||
|
||||
@@ -634,6 +634,16 @@ var event_fixtures = {
|
||||
description: 'All Frontend people',
|
||||
},
|
||||
},
|
||||
user_status__revoke_away: {
|
||||
type: 'user_status',
|
||||
user_id: 63,
|
||||
away: false,
|
||||
},
|
||||
user_status__set_away: {
|
||||
type: 'user_status',
|
||||
user_id: 55,
|
||||
away: true,
|
||||
},
|
||||
};
|
||||
|
||||
function assert_same(actual, expected) {
|
||||
@@ -1374,3 +1384,22 @@ with_overrides(function (override) {
|
||||
assert_same(args.opts.topic_name, 'topic1');
|
||||
});
|
||||
});
|
||||
|
||||
with_overrides(function (override) {
|
||||
// attachements
|
||||
var event = event_fixtures.user_status__set_away;
|
||||
global.with_stub(function (stub) {
|
||||
override('activity.on_set_away', stub.f);
|
||||
dispatch(event);
|
||||
var args = stub.get_args('user_id');
|
||||
assert_same(args.user_id, 55);
|
||||
});
|
||||
|
||||
event = event_fixtures.user_status__revoke_away;
|
||||
global.with_stub(function (stub) {
|
||||
override('activity.on_revoke_away', stub.f);
|
||||
dispatch(event);
|
||||
var args = stub.get_args('user_id');
|
||||
assert_same(args.user_id, 63);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -392,6 +392,16 @@ exports.update_presence_info = function (email, info, server_time) {
|
||||
exports.update_huddles();
|
||||
};
|
||||
|
||||
exports.on_set_away = function (user_id) {
|
||||
user_status.set_away(user_id);
|
||||
exports.insert_user_into_list(user_id);
|
||||
};
|
||||
|
||||
exports.on_revoke_away = function (user_id) {
|
||||
user_status.revoke_away(user_id);
|
||||
exports.insert_user_into_list(user_id);
|
||||
};
|
||||
|
||||
exports.redraw = function () {
|
||||
exports.build_user_sidebar();
|
||||
exports.user_cursor.redraw();
|
||||
|
||||
@@ -455,7 +455,16 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
|
||||
}
|
||||
settings_user_groups.reload();
|
||||
break;
|
||||
|
||||
case 'user_status':
|
||||
if (event.away) {
|
||||
activity.on_set_away(event.user_id);
|
||||
} else {
|
||||
activity.on_revoke_away(event.user_id);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
return exports;
|
||||
|
||||
Reference in New Issue
Block a user