mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +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_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));
|
||||||
|
});
|
||||||
|
|||||||
@@ -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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user