mirror of https://github.com/zulip/zulip.git
76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
|
var navigate = (function () {
|
||
|
|
||
|
var exports = {};
|
||
|
|
||
|
exports.up = function () {
|
||
|
last_viewport_movement_direction = -1;
|
||
|
var next_row = rows.prev_visible(current_msg_list.selected_row());
|
||
|
if (next_row.length !== 0) {
|
||
|
current_msg_list.select_id(rows.id(next_row),
|
||
|
{then_scroll: true,
|
||
|
from_scroll: true});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
exports.down = function () {
|
||
|
last_viewport_movement_direction = 1;
|
||
|
var next_row = rows.next_visible(current_msg_list.selected_row());
|
||
|
if (next_row.length !== 0) {
|
||
|
current_msg_list.select_id(rows.id(next_row),
|
||
|
{then_scroll: true,
|
||
|
from_scroll: true});
|
||
|
}
|
||
|
if ((next_row.length === 0)) {
|
||
|
// At the last message, scroll to the bottom so we have
|
||
|
// lots of nice whitespace for new messages coming in.
|
||
|
//
|
||
|
// FIXME: this doesn't work for End because rows.last_visible()
|
||
|
// always returns a message.
|
||
|
var current_msg_table = rows.get_table(current_msg_list.table_name);
|
||
|
viewport.scrollTop(current_msg_table.outerHeight(true) - viewport.height() * 0.1);
|
||
|
mark_current_list_as_read();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
exports.to_home = function () {
|
||
|
last_viewport_movement_direction = -1;
|
||
|
var next_row = rows.first_visible(current_msg_list.selected_row());
|
||
|
if (next_row.length !== 0) {
|
||
|
current_msg_list.select_id(rows.id(next_row),
|
||
|
{then_scroll: true,
|
||
|
from_scroll: true});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
exports.to_end = function () {
|
||
|
if (current_msg_list.empty()) {
|
||
|
return false;
|
||
|
}
|
||
|
var next_id = current_msg_list.last().id;
|
||
|
last_viewport_movement_direction = 1;
|
||
|
current_msg_list.select_id(next_id, {then_scroll: true,
|
||
|
from_scroll: true});
|
||
|
mark_current_list_as_read();
|
||
|
};
|
||
|
|
||
|
exports.page_up = function () {
|
||
|
if (viewport.at_top() && !current_msg_list.empty()) {
|
||
|
current_msg_list.select_id(current_msg_list.first().id, {then_scroll: false});
|
||
|
}
|
||
|
else {
|
||
|
ui.page_up_the_right_amount();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
exports.page_down = function () {
|
||
|
if (viewport.at_bottom() && !current_msg_list.empty()) {
|
||
|
current_msg_list.select_id(current_msg_list.last().id, {then_scroll: false});
|
||
|
mark_current_list_as_read();
|
||
|
}
|
||
|
else {
|
||
|
ui.page_down_the_right_amount();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return exports;
|
||
|
}());
|