From 48aa0b5b03fe1d3c3103a79baea2e81d5faadbd2 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Thu, 6 Aug 2020 15:43:01 +0200 Subject: Small refactor to JavaScript handlers. Crated helper class in native/utils.js. Simplify code in OS/DisplayServer. --- platform/javascript/native/utils.js | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'platform/javascript/native') diff --git a/platform/javascript/native/utils.js b/platform/javascript/native/utils.js index 95585d26ae..18f041fd63 100644 --- a/platform/javascript/native/utils.js +++ b/platform/javascript/native/utils.js @@ -202,3 +202,44 @@ Module.drop_handler = (function() { }); } })(); + +function EventHandlers() { + function Handler(target, event, method, capture) { + this.target = target; + this.event = event; + this.method = method; + this.capture = capture; + } + + var listeners = []; + + function has(target, event, method, capture) { + return listeners.findIndex(function(e) { + return e.target === target && e.event === event && e.method === method && e.capture == capture; + }) !== -1; + } + + this.add = function(target, event, method, capture) { + if (has(target, event, method, capture)) { + return; + } + listeners.push(new Handler(target, event, method, capture)); + target.addEventListener(event, method, capture); + }; + + this.remove = function(target, event, method, capture) { + if (!has(target, event, method, capture)) { + return; + } + target.removeEventListener(event, method, capture); + }; + + this.clear = function() { + listeners.forEach(function(h) { + h.target.removeEventListener(h.event, h.method, h.capture); + }); + listeners.length = 0; + }; +} + +Module.listeners = new EventHandlers(); -- cgit v1.2.3