mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-10 07:55:46 +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 current_state = null;
|
||||||
var executed = {};
|
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) {
|
ajaxify.go = function(url, callback) {
|
||||||
var url = url.replace(/\/$/, "");
|
var url = url.replace(/\/$/, "");
|
||||||
var tpl_url = (url === '') ? 'home' : url;
|
var tpl_url = (url === '') ? 'home' : url;
|
||||||
@@ -23,10 +33,7 @@ var ajaxify = {};
|
|||||||
jQuery('#content, #footer').fadeOut(150, function() {
|
jQuery('#content, #footer').fadeOut(150, function() {
|
||||||
//content.innerHTML = templates[tpl_url];
|
//content.innerHTML = templates[tpl_url];
|
||||||
load_template(function() {
|
load_template(function() {
|
||||||
if (executed[url] !== true) {
|
|
||||||
exec_body_scripts(content);
|
exec_body_scripts(content);
|
||||||
executed[url] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
ajaxify.enable();
|
ajaxify.enable();
|
||||||
if (callback) {
|
if (callback) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ajaxify.register_events(['user.login']);
|
||||||
socket.on('user.login', function(data) {
|
socket.on('user.login', function(data) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
if (data.status === 0) {
|
if (data.status === 0) {
|
||||||
|
|||||||
@@ -36,6 +36,11 @@
|
|||||||
socket.emit('user.email.exists', { email: emailEl.value });
|
socket.emit('user.email.exists', { email: emailEl.value });
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ajaxify.register_events(['user.create', 'user.exists', 'user.email.exists']);
|
||||||
|
|
||||||
socket.on('user.create', function(data) {
|
socket.on('user.create', function(data) {
|
||||||
//console.log('user create: ' + data.status);
|
//console.log('user create: ' + data.status);
|
||||||
ajaxify.go('/');
|
ajaxify.go('/');
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ajaxify.register_events(['user.send_reset']);
|
||||||
|
|
||||||
socket.on('user.send_reset', function(data) {
|
socket.on('user.send_reset', function(data) {
|
||||||
var submitEl = document.getElementById('reset');
|
var submitEl = document.getElementById('reset');
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,9 @@
|
|||||||
|
|
||||||
// Enable the form if the code is valid
|
// Enable the form if the code is valid
|
||||||
socket.emit('user:reset.valid', { code: '{reset_code}' });
|
socket.emit('user:reset.valid', { code: '{reset_code}' });
|
||||||
|
|
||||||
|
|
||||||
|
ajaxify.register_events(['user:reset.valid', 'user:reset.commit']);
|
||||||
socket.on('user:reset.valid', function(data) {
|
socket.on('user:reset.valid', function(data) {
|
||||||
if (!!data.valid) resetEl.disabled = false;
|
if (!!data.valid) resetEl.disabled = false;
|
||||||
else {
|
else {
|
||||||
|
|||||||
Reference in New Issue
Block a user