From 43ec9fe2cc2d4cd84f9d3f26d53eb345dc4cf2a4 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Thu, 29 Jun 2023 14:43:27 +0530 Subject: [PATCH] refactor: simplify open doc checks --- frappe/public/js/frappe/socketio_client.js | 24 ++++++---------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/frappe/public/js/frappe/socketio_client.js b/frappe/public/js/frappe/socketio_client.js index 0e9831e7a4..c21733130e 100644 --- a/frappe/public/js/frappe/socketio_client.js +++ b/frappe/public/js/frappe/socketio_client.js @@ -5,7 +5,7 @@ frappe.provide("frappe.realtime"); class RealTimeClient { constructor() { this.open_tasks = {}; - this.open_docs = []; + this.open_docs = new Set(); this.emit_queue = []; } @@ -76,15 +76,6 @@ class RealTimeClient { if (!frm.doc || frm.is_new()) { return; } - - for (var i = 0, l = me.open_docs.length; i < l; i++) { - var d = me.open_docs[i]; - if (frm.doctype == d.doctype && frm.docname == d.name) { - // already subscribed - return false; - } - } - me.doc_subscribe(frm.doctype, frm.docname); }); @@ -159,6 +150,9 @@ class RealTimeClient { console.log("throttled"); return; } + if (this.open_docs.has(`${doctype}:${docname}`)) { + return; + } frappe.flags.doc_subscribe = true; @@ -168,17 +162,11 @@ class RealTimeClient { }, 1000); this.socket.emit("doc_subscribe", doctype, docname); - this.open_docs.push({ doctype: doctype, docname: docname }); + this.open_docs.add(`${doctype}:${docname}`); } doc_unsubscribe(doctype, docname) { this.socket.emit("doc_unsubscribe", doctype, docname); - this.open_docs = $.filter(frappe.socketio.open_docs, function (d) { - if (d.doctype === doctype && d.name === docname) { - return null; - } else { - return d; - } - }); + return this.open_docs.delete(`${doctype}:${docname}`); } doc_open(doctype, docname) { this.socket.emit("doc_open", doctype, docname);