Irc bound events fix
authorDarren <darren@darrenwhitlen.com>
Sun, 27 Jan 2013 15:45:42 +0000 (15:45 +0000)
committerDarren <darren@darrenwhitlen.com>
Thu, 31 Jan 2013 14:58:44 +0000 (14:58 +0000)
server/irc/eventbinder.js

index f3439136870c9ff48a0464fb6ed1a4ca090f367f..e1d7791a848d7958e429a195de554b8ba4eb09db 100644 (file)
@@ -2,26 +2,37 @@ var _ = require('lodash');
 
 
 module.exports.bindIrcEvents = function (events_scope, event_map, context, irc_connection) {
+    // Make sure we have a holder for the bound events
+    if (!event_map._bound_events)
+        event_map._bound_events = {};
+
     _.each(event_map, function (fn, event_name) {
+        if (event_name[0] === '_') return;
+
         // Bind the event to `context`, storing it with the event listing
-        if (!event_map[event_name].bound_fn) {
-            event_map[event_name].bound_fn = fn.bind(context);
+        if (!event_map._bound_events[event_name]) {
+            event_map._bound_events[event_name] = fn.bind(context);
         }
 
         // Add the listener to the IRC connection object
-        irc_connection.on(events_scope + ':' + event_name, event_map[event_name].bound_fn);
+        irc_connection.on(events_scope + ':' + event_name, event_map._bound_events[event_name]);
     });
 };
 
 
 module.exports.unbindIrcEvents = function (events_scope, event_map, irc_connection) {
+    // No bound events? Then we have nothing to do
+    if (!event_map._bound_events) return;
+
     _.each(event_map, function(fn, event_name) {
-        if (event_map[event_name].bound_fn) {
+        if (event_name[0] === '_') return;
+
+        if (event_map._bound_events[event_name]) {
             // Remove the listener from the IRC connection object
-            irc_connection.removeListener(events_scope + ':' + event_name, event_map[event_name].bound_fn);
+            irc_connection.removeListener(events_scope + ':' + event_name, event_map._bound_events[event_name]);
 
             // Remove the bound function as no longer needed
-            event_map[event_name].bound_fn = undefined;
+            event_map._bound_events[event_name] = undefined;
         }
     });
 };
\ No newline at end of file