diff --git a/frappe/public/js/frappe/form/footer/timeline_item.html b/frappe/public/js/frappe/form/footer/timeline_item.html
index 0d4b9e6cc4..729a51ed53 100644
--- a/frappe/public/js/frappe/form/footer/timeline_item.html
+++ b/frappe/public/js/frappe/form/footer/timeline_item.html
@@ -57,7 +57,7 @@
{% } %} "
data-doctype="{%= data.doctype %}"
data-name="{%= data.name %}">
- {{ data._liked_by.length }}
+ {{ (data._liked_by || []).length }}
diff --git a/socketio.js b/socketio.js
index a92e080269..0e063a956a 100644
--- a/socketio.js
+++ b/socketio.js
@@ -201,16 +201,16 @@ function can_subscribe_doc(args) {
.end(function(err, res) {
if (!res) {
console.log("No response for doc_subscribe");
-
+
} else if (res.status == 403) {
return;
-
+
} else if (err) {
console.log(err);
-
+
} else if (res.status == 200) {
args.callback(err, res);
-
+
} else {
console.log("Something went wrong", err, res);
}
@@ -226,8 +226,13 @@ function send_viewers(args) {
// open doc room
var room = get_open_doc_room(args.socket, args.doctype, args.docname);
+ var socketio_room = io.sockets.adapter.rooms[room] || {};
+
+ // for compatibility with both v1.3.7 and 1.4.4
+ var clients_dict = ("sockets" in socketio_room) ? socketio_room.sockets : socketio_room;
+
// socket ids connected to this room
- var clients = Object.keys(io.sockets.adapter.rooms[room] || {});
+ var clients = Object.keys(clients_dict || {});
var viewers = [];
for (var i in io.sockets.sockets) {