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:
Steve Howell
2018-12-19 17:41:47 +00:00
committed by Tim Abbott
parent d8d703af45
commit 4fed3d2014
4 changed files with 57 additions and 0 deletions

View File

@@ -85,6 +85,7 @@ zrequire('people');
zrequire('buddy_data'); zrequire('buddy_data');
zrequire('buddy_list'); zrequire('buddy_list');
zrequire('user_search'); zrequire('user_search');
zrequire('user_status');
zrequire('list_cursor'); zrequire('list_cursor');
zrequire('activity'); zrequire('activity');
@@ -864,3 +865,11 @@ run_test('initialize', () => {
activity.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));
});

View File

@@ -634,6 +634,16 @@ var event_fixtures = {
description: 'All Frontend people', 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) { function assert_same(actual, expected) {
@@ -1374,3 +1384,22 @@ with_overrides(function (override) {
assert_same(args.opts.topic_name, 'topic1'); 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);
});
});

View File

@@ -392,6 +392,16 @@ exports.update_presence_info = function (email, info, server_time) {
exports.update_huddles(); 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.redraw = function () {
exports.build_user_sidebar(); exports.build_user_sidebar();
exports.user_cursor.redraw(); exports.user_cursor.redraw();

View File

@@ -455,7 +455,16 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
} }
settings_user_groups.reload(); settings_user_groups.reload();
break; 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; return exports;