From c4a35020f1838b7cdf091f9a72c7d540b1596a95 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 2 Nov 2015 14:39:10 +0000 Subject: [PATCH 1/4] Add event to get last read receipt for a user. --- lib/models/room.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/models/room.js b/lib/models/room.js index da4d1f1b6..f0f7e271b 100644 --- a/lib/models/room.js +++ b/lib/models/room.js @@ -321,6 +321,21 @@ Room.prototype.getUsersReadUpTo = function(event) { }); }; +/** + * Get the ID of the event that a given user has read up to, or null if we + * have received no read receipts from them. + * @param {String} user ID to get read receipt event ID for + * @return {String} ID of the latest event that the given user has read, or null. + * an empty list. + */ +Room.prototype.getEventReadUpTo = function(userId) { + if (this._receipts === undefined || this._receipts['m.read'] === undefined) { + return null; + } + + return this._receipts['m.read'][userId].eventId; +}; + /** * Get a list of receipts for the given event. * @param {MatrixEvent} event the event to get receipts for From 4adc5f2c85c98ce53c0505961c8ba972204d5fad Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 2 Nov 2015 15:19:29 +0000 Subject: [PATCH 2/4] Also need to check if the event is null --- lib/models/room.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/models/room.js b/lib/models/room.js index f0f7e271b..03df2fa55 100644 --- a/lib/models/room.js +++ b/lib/models/room.js @@ -329,7 +329,11 @@ Room.prototype.getUsersReadUpTo = function(event) { * an empty list. */ Room.prototype.getEventReadUpTo = function(userId) { - if (this._receipts === undefined || this._receipts['m.read'] === undefined) { + if ( + this._receipts === undefined || + this._receipts['m.read'] === undefined || + this._receipts['m.read'][userId] === undefined + ) { return null; } From 083dde35578fa8045dde22e19cdd42ba867266c8 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 2 Nov 2015 16:00:40 +0000 Subject: [PATCH 3/4] Fix doc --- lib/models/room.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/models/room.js b/lib/models/room.js index 03df2fa55..052ff19a8 100644 --- a/lib/models/room.js +++ b/lib/models/room.js @@ -324,7 +324,7 @@ Room.prototype.getUsersReadUpTo = function(event) { /** * Get the ID of the event that a given user has read up to, or null if we * have received no read receipts from them. - * @param {String} user ID to get read receipt event ID for + * @param {String} userId The user ID to get read receipt event ID for * @return {String} ID of the latest event that the given user has read, or null. * an empty list. */ From 1b43bc78d06c9403c6e57cbc538f127100327aef Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 2 Nov 2015 16:02:48 +0000 Subject: [PATCH 4/4] Remove unnecessary null check & s/"/'/ --- lib/models/room.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/models/room.js b/lib/models/room.js index 052ff19a8..3676b9e8d 100644 --- a/lib/models/room.js +++ b/lib/models/room.js @@ -330,14 +330,13 @@ Room.prototype.getUsersReadUpTo = function(event) { */ Room.prototype.getEventReadUpTo = function(userId) { if ( - this._receipts === undefined || - this._receipts['m.read'] === undefined || - this._receipts['m.read'][userId] === undefined + this._receipts["m.read"] === undefined || + this._receipts["m.read"][userId] === undefined ) { return null; } - return this._receipts['m.read'][userId].eventId; + return this._receipts["m.read"][userId].eventId; }; /**