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