Commit 2384339613797c1da9a60b5f329608ab27097402
1 parent
cf12a5f2
Exists in
master
and in
27 other branches
checkpoint ensure_scroll
Showing
1 changed file
with
14 additions
and
1 deletions
Show diff stats
public/javascripts/chat.js
| ... | ... | @@ -578,7 +578,7 @@ jQuery(function($) { |
| 578 | 578 | |
| 579 | 579 | panel.find('.history').scroll(function(){ |
| 580 | 580 | if($(this).scrollTop() == 0){ |
| 581 | - var offset = panel.find('.message').size(); | |
| 581 | + var offset = panel.find('.message p').size(); | |
| 582 | 582 | recent_messages(jid, offset); |
| 583 | 583 | } |
| 584 | 584 | }); |
| ... | ... | @@ -596,10 +596,22 @@ jQuery(function($) { |
| 596 | 596 | return panel; |
| 597 | 597 | } |
| 598 | 598 | |
| 599 | + function ensure_scroll(jid, offset) { | |
| 600 | + var jid_id = Jabber.jid_to_id(jid); | |
| 601 | + var history = jQuery('#conversation-'+jid_id+' .history'); | |
| 602 | + // Load more messages if was not enough to show the scroll | |
| 603 | + if(history.prop('scrollHeight') - history.prop('clientHeight') <= 0){ | |
| 604 | + var offset = history.find('.message p').size(); | |
| 605 | + recent_messages(jid, offset); | |
| 606 | + } | |
| 607 | + } | |
| 608 | + | |
| 599 | 609 | function recent_messages(jid, offset) { |
| 600 | 610 | if(!offset) offset = 0; |
| 601 | 611 | start_fetching('.history'); |
| 602 | 612 | $.getJSON('/chat/recent_messages', {identifier: getIdentifier(jid), offset: offset}, function(data) { |
| 613 | + //TODO Register if no more messages returned and stop trying to load | |
| 614 | + // more messages in the future. | |
| 603 | 615 | $.each(data, function(i, message) { |
| 604 | 616 | var body = message['body']; |
| 605 | 617 | var from = message['from']; |
| ... | ... | @@ -610,6 +622,7 @@ jQuery(function($) { |
| 610 | 622 | Jabber.show_message(jid, from['name'], body, who, from['id'], date, offset); |
| 611 | 623 | }); |
| 612 | 624 | stop_fetching('.history'); |
| 625 | + ensure_scroll(jid, offset); | |
| 613 | 626 | }); |
| 614 | 627 | } |
| 615 | 628 | ... | ... |