diff options
| author | Christophe Simonis <chs@odoo.com> | 2014-10-01 19:18:14 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2014-10-01 19:18:14 +0200 |
| commit | 709c9868de7c4ac4985ed4e0055ae3e3e49742ad (patch) | |
| tree | e90227a947bddf47b3043fcbe8b99529a22aa7dd /addons/im_chat/static/src | |
| parent | 85f26244a71a0b9a7faa283d6d24fdde6bae899a (diff) | |
| parent | e8831932464814ed5f9e3a0af33f98891a466417 (diff) | |
[MERGE] forward port of branch 8.0 up to e883193
Diffstat (limited to 'addons/im_chat/static/src')
| -rw-r--r-- | addons/im_chat/static/src/js/im_chat.js | 34 | ||||
| -rw-r--r-- | addons/im_chat/static/src/xml/im_chat.xml | 2 |
2 files changed, 22 insertions, 14 deletions
diff --git a/addons/im_chat/static/src/js/im_chat.js b/addons/im_chat/static/src/js/im_chat.js index ef0656f7814..9962fdfebf9 100644 --- a/addons/im_chat/static/src/js/im_chat.js +++ b/addons/im_chat/static/src/js/im_chat.js @@ -1,6 +1,7 @@ (function(){ "use strict"; + var _t = openerp._t; var _lt = openerp._lt; var QWeb = openerp.qweb; @@ -99,10 +100,7 @@ if(session.state !== 'closed'){ conv = new im_chat.Conversation(this, this, session, this.options); conv.appendTo($("body")); - conv.on("destroyed", this, function() { - delete this.sessions[session.uuid]; - this.calc_positions(); - }); + conv.on("destroyed", this, _.bind(this.delete_session, this)); this.sessions[session.uuid] = conv; this.calc_positions(); } @@ -124,6 +122,10 @@ } return conv; }, + delete_session: function(uuid){ + delete this.sessions[uuid]; + this.calc_positions(); + }, received_message: function(message) { var self = this; var session_id = message.to_id[0]; @@ -250,11 +252,18 @@ load_history: function(){ var self = this; if(this.loading_history){ - var domain = [["to_id.uuid", "=", this.get("session").uuid]]; - _.first(this.get("messages")) && domain.push(['id','<', _.first(this.get("messages")).id]); - new openerp.Model("im_chat.message").call("search_read", [domain, ['id', 'create_date','to_id','from_id', 'type', 'message'], 0, NBR_LIMIT_HISTORY]).then(function(messages){ - self.insert_messages(messages); - if(messages.length != NBR_LIMIT_HISTORY){ + var data = {uuid: self.get("session").uuid, limit: NBR_LIMIT_HISTORY}; + var lastid = _.first(this.get("messages")) ? _.first(this.get("messages")).id : false; + if(lastid){ + data["last_id"] = lastid; + } + openerp.session.rpc("/im_chat/history", data).then(function(messages){ + if(messages){ + self.insert_messages(messages); + if(messages.length != NBR_LIMIT_HISTORY){ + self.loading_history = false; + } + }else{ self.loading_history = false; } }); @@ -419,7 +428,7 @@ this.update_fold_state('closed'); }, destroy: function() { - this.trigger("destroyed"); + this.trigger("destroyed", this.get('session').uuid); return this._super(); } }); @@ -445,7 +454,7 @@ update_status: function(){ this.$(".oe_im_user_online").toggle(this.get('im_status') !== 'offline'); var img_src = (this.get('im_status') == 'away' ? '/im_chat/static/src/img/yellow.png' : '/im_chat/static/src/img/green.png'); - this.$(".oe_im_user_online").attr('src', openerp.session.server + img_src); + this.$(".oe_im_user_online").attr('src', img_src); }, activate_user: function() { this.trigger("activate_user", this.get("id")); @@ -481,7 +490,6 @@ this.calc_box(); this.on("change:current_search", this, this.search_users_status); - this.search_users_status(); // add a drag & drop listener self.c_manager.on("im_session_activated", self, function(conv) { @@ -566,7 +574,7 @@ var self = this; var sessions = new openerp.web.Model("im_chat.session"); return sessions.call("session_get", [user_id]).then(function(session) { - self.c_manager.activate_session(session, true); + self.c_manager.activate_session(session, true); }); }, update_users_status: function(users_list){ diff --git a/addons/im_chat/static/src/xml/im_chat.xml b/addons/im_chat/static/src/xml/im_chat.xml index 01db7b8277d..0ca4fe307d2 100644 --- a/addons/im_chat/static/src/xml/im_chat.xml +++ b/addons/im_chat/static/src/xml/im_chat.xml @@ -69,7 +69,7 @@ <img t-att-src="widget.get('image_url')" class="oe_im_user_avatar"/> </span> <span class="oe_im_user_name"><t t-esc="widget.get('name')"/></span> - <img t-att-src="_s +'/im_chat/static/src/img/green.png'" t-att-data-im-user-id="widget.get('id')" class="oe_im_user_online"/> + <img t-att-src="'/im_chat/static/src/img/green.png'" t-att-data-im-user-id="widget.get('id')" class="oe_im_user_online"/> </div> </t> <t t-name="im_chat.InstantMessaging"> |
