mirror of https://github.com/zulip/zulip.git
Fix first message in narrowed views never appearing.
The message list data structure never had the rendered_idx values initiatized except via _maybe_rerender (called when a message is selected). For the narrowed message list for streams with no messages yet, we didn't select a message (as there was none to select); the end result is that msg_list.append() will never rerender because it tries to subtract undefined from undefined and gets NaN in its test for whether it needs to rerender. So fix this by initializing _min_rendered_idx and _max_rendered_idx to valid values for the empty message list (the closed interval from 0 to -1). (imported from commit 6afecb1569185a842a3a9108cedba7e88f8befad)
This commit is contained in:
parent
68e7a052cb
commit
c88684d1f5
|
@ -6,6 +6,8 @@ function MessageList(table_name, opts) {
|
|||
this.table_name = table_name;
|
||||
this._selected_id = -1;
|
||||
this._message_groups = [];
|
||||
this._min_rendered_idx = 0;
|
||||
this._max_rendered_idx = -1;
|
||||
|
||||
if (this.table_name) {
|
||||
this._clear_table();
|
||||
|
@ -173,10 +175,9 @@ MessageList.prototype = {
|
|||
|
||||
var selected_idx = util.lower_bound(this._items, this._selected_id,
|
||||
function (a, b) { return a.id < b; });
|
||||
var new_min_idx = -1;
|
||||
var new_min_idx;
|
||||
|
||||
// We rerender under the following conditions:
|
||||
// * This is the first render
|
||||
// * The selected message is within this._RENDER_THRESHOLD messages
|
||||
// of the top of the currently rendered window and the top
|
||||
// of the window does not abut the beginning of the message
|
||||
|
@ -185,11 +186,10 @@ MessageList.prototype = {
|
|||
// of the bottom of the currently rendered window and the
|
||||
// bottom of the window does not abut the end of the
|
||||
// message list
|
||||
if (! (this._min_rendered_idx === undefined
|
||||
|| ((selected_idx - this._min_rendered_idx < this._RENDER_THRESHOLD)
|
||||
&& (this._min_rendered_idx !== 0))
|
||||
|| ((this._max_rendered_idx - selected_idx < this._RENDER_THRESHOLD)
|
||||
&& (this._max_rendered_idx !== this._items.length - 1))))
|
||||
if (! (((selected_idx - this._min_rendered_idx < this._RENDER_THRESHOLD)
|
||||
&& (this._min_rendered_idx !== 0)) ||
|
||||
((this._max_rendered_idx - selected_idx < this._RENDER_THRESHOLD)
|
||||
&& (this._max_rendered_idx !== this._items.length - 1))))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -376,10 +376,8 @@ MessageList.prototype = {
|
|||
this._items = messages.concat(this._items);
|
||||
this._add_to_hash(messages);
|
||||
|
||||
if (this._min_rendered_idx !== undefined) {
|
||||
this._min_rendered_idx += messages.length;
|
||||
this._max_rendered_idx += messages.length;
|
||||
}
|
||||
this._min_rendered_idx += messages.length;
|
||||
this._max_rendered_idx += messages.length;
|
||||
},
|
||||
|
||||
all: function MessageList_all() {
|
||||
|
|
Loading…
Reference in New Issue