mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-09 23:45:45 +01:00
added a way to track socket listners added to the page to prevent memory leaks and duplicated definitions of events
This commit is contained in:
@@ -10,6 +10,16 @@ var ajaxify = {};
|
||||
var current_state = null;
|
||||
var executed = {};
|
||||
|
||||
var events = [];
|
||||
ajaxify.register_events = function(new_page_events) {
|
||||
for (var i = 0, ii = events.length; i<ii; i++) {
|
||||
socket.removeAllListeners(events[i]); // optimize this to user removeListener(event, listener) instead.
|
||||
}
|
||||
|
||||
events = new_page_events;
|
||||
};
|
||||
|
||||
|
||||
ajaxify.go = function(url, callback) {
|
||||
var url = url.replace(/\/$/, "");
|
||||
var tpl_url = (url === '') ? 'home' : url;
|
||||
@@ -23,10 +33,7 @@ var ajaxify = {};
|
||||
jQuery('#content, #footer').fadeOut(150, function() {
|
||||
//content.innerHTML = templates[tpl_url];
|
||||
load_template(function() {
|
||||
if (executed[url] !== true) {
|
||||
exec_body_scripts(content);
|
||||
executed[url] = true;
|
||||
}
|
||||
exec_body_scripts(content);
|
||||
|
||||
ajaxify.enable();
|
||||
if (callback) {
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
});
|
||||
};
|
||||
|
||||
ajaxify.register_events(['user.login']);
|
||||
socket.on('user.login', function(data) {
|
||||
console.log(data);
|
||||
if (data.status === 0) {
|
||||
|
||||
@@ -36,6 +36,11 @@
|
||||
socket.emit('user.email.exists', { email: emailEl.value });
|
||||
}, false);
|
||||
|
||||
|
||||
|
||||
|
||||
ajaxify.register_events(['user.create', 'user.exists', 'user.email.exists']);
|
||||
|
||||
socket.on('user.create', function(data) {
|
||||
//console.log('user create: ' + data.status);
|
||||
ajaxify.go('/');
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
}
|
||||
};
|
||||
|
||||
ajaxify.register_events(['user.send_reset']);
|
||||
|
||||
socket.on('user.send_reset', function(data) {
|
||||
var submitEl = document.getElementById('reset');
|
||||
|
||||
|
||||
@@ -39,6 +39,9 @@
|
||||
|
||||
// Enable the form if the code is valid
|
||||
socket.emit('user:reset.valid', { code: '{reset_code}' });
|
||||
|
||||
|
||||
ajaxify.register_events(['user:reset.valid', 'user:reset.commit']);
|
||||
socket.on('user:reset.valid', function(data) {
|
||||
if (!!data.valid) resetEl.disabled = false;
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user