From 7d5f671709bd2b82ef06ff3d9d88650ecca52056 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Mon, 31 Oct 2016 21:31:24 +0700 Subject: [PATCH] updateLastResponseTime --- matrix-util.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/matrix-util.js b/matrix-util.js index 80e8105..e88b047 100644 --- a/matrix-util.js +++ b/matrix-util.js @@ -123,11 +123,33 @@ MatrixUtil.prototype.isPartnerOffline = function(partner) { return true; } +MatrixUtil.prototype._updateLastResponseTime(partner) { + let matrix = this.matrix; + + if (!matrix.buddies[partner]['last_outgoing']) { + return; + } + + if (!matrix.buddies[partner]['last_outgoing'].last_update_ts) { + return; + } + + if ( + matrix.buddies[partner]['last_incoming'] + && (matrix.buddies[partner]['last_incoming']['last_update_ts'] > matrix.buddies[partner]['last_outgoing']['last_update_ts']) + ) { + return; + } + + matrix.buddies[partner]['last_response_time'] = Math.round((Date.now() - matrix.buddies[partner]['last_outgoing']['last_update_ts'])/1000); +} + MatrixUtil.prototype._updateLastMessage = function(partner, msg, direction) { if (!partner) { return; } partner = _cleanPartnerId(partner); let matrix = this.matrix; + let logger = this.logger; if (!matrix) { return; @@ -141,11 +163,26 @@ MatrixUtil.prototype._updateLastMessage = function(partner, msg, direction) { matrix.buddies[partner] = {}; } + if (direction == 'incoming') { + try { + _updateLastResponseTime(partner); + } + catch(e) { + logger.warn('Exception when updateLastResponseTime', {err: e}); + } + } + matrix.buddies[partner]['last_' + direction] = { msg: msg, last_update: moment().format(momentFormat), last_update_ts: Date.now() } + + if (direction == 'outgoing') { + return; + } + + } -- 1.9.0