Commit d45f8eba1303de9699e61c3529e533b4b8d349d7

Authored by Rodrigo Souto
1 parent f0426bdc

Move conversation to the top after message

Conflicts:
	public/javascripts/chat.js
app/controllers/public/chat_controller.rb
... ... @@ -65,7 +65,7 @@ class ChatController < PublicController
65 65  
66 66 def recent_conversations
67 67 conversations_order = ActiveRecord::Base.connection.execute("select profiles.identifier from profiles inner join (select distinct r.id as id, MAX(r.created_at) as created_at from (select from_id, to_id, created_at, (case when from_id=#{user.id} then to_id else from_id end) as id from chat_messages where from_id=#{user.id} or to_id=#{user.id}) as r group by id order by created_at desc, id) as t on profiles.id=t.id order by t.created_at desc").entries.map {|e| e['identifier']}
68   - render :json => conversations_order.to_json
  68 + render :json => {:order => conversations_order.reverse, :domain => environment.default_hostname.gsub('.','-')}.to_json
69 69 end
70 70  
71 71 protected
... ...
public/javascripts/chat.js
... ... @@ -450,6 +450,8 @@ jQuery(function($) {
450 450 .c('active', {xmlns: Strophe.NS.CHAT_STATES});
451 451 Jabber.connection.send(message);
452 452 Jabber.show_message(jid, $own_name, escape_html(body), 'self', Strophe.getNodeFromJid(Jabber.connection.jid));
  453 + Archive.register(jid, Jabber.connection.jid, body);
  454 + move_conversation_to_the_top(jid);
453 455 },
454 456  
455 457 is_a_room: function(jid_id) {
... ... @@ -613,10 +615,29 @@ jQuery(function($) {
613 615 Jabber.show_message(jid, from['name'], body, who, from['id'], date, offset);
614 616 });
615 617 stop_fetching('.history');
  618 + console.log('Done fetching...');
616 619 ensure_scroll(jid, offset);
617 620 });
618 621 }
619 622  
  623 + function move_conversation_to_the_top(jid) {
  624 + id = Jabber.jid_to_id(jid);
  625 + console.log('Moving ' + id);
  626 + console.log(id);
  627 + var link = $('#'+id);
  628 + var li = link.closest('li');
  629 + var ul = link.closest('ul');
  630 + ul.prepend(li);
  631 + }
  632 +
  633 + function recent_conversations() {
  634 + $.getJSON('/chat/recent_conversations', {}, function(data) {
  635 + $.each(data['order'], function(i, identifier) {
  636 + move_conversation_to_the_top(identifier+'-'+data['domain']);
  637 + })
  638 + })
  639 + }
  640 +
620 641 function count_unread_messages(jid_id, hide) {
621 642 var unread = $('.buddies #'+jid_id+ ' .unread-messages');
622 643 if (hide) {
... ...