| 
					
				 | 
			
			
				@@ -1,33 +1,55 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let callbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let callbacksPersist = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let onConnectCallbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let onDisconnectCallbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let onConnectErrorCallbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let onConnectCallbacksPersist = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let onDisconnectCallbacksPersist = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let onConnectErrorCallbacksPersist = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	ready: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	socket: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	getSocket: function (cb) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (this.ready) cb(this.socket); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		else callbacks.push(cb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getSocket: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (arguments[0] === true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (this.ready) arguments[1](this.socket); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else callbacksPersist.push(arguments[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (this.ready) arguments[0](this.socket); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else callbacks.push(arguments[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	onConnect: (cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		onConnectCallbacks.push(cb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	onConnect: function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (arguments[0] === true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			onConnectCallbacksPersist.push(arguments[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else onConnectCallbacks.push(arguments[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	onDisconnect: (cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		onDisconnectCallbacks.push(cb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	onDisconnect: function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (arguments[0] === true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			onDisconnectCallbacksPersist.push(arguments[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else onDisconnectCallbacks.push(arguments[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	onConnectError: (cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		onConnectErrorCallbacks.push(cb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	onConnectError: function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (arguments[0] === true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			onConnectErrorCallbacksPersist.push(arguments[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else onConnectErrorCallbacks.push(arguments[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	clear: () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onConnectCallbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onDisconnectCallbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onConnectErrorCallbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		callbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	removeAllListeners: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Object.keys(this.socket._callbacks).forEach((id) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (id.indexOf("$event:song") !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (id.indexOf("$event:") !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				delete this.socket._callbacks[id]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -36,24 +58,41 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	init: function (url) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.socket = window.socket = io(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.socket.on('connect', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			console.log("IO: SOCKET CONNECTED"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			onConnectCallbacks.forEach((cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				cb(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			onConnectCallbacksPersist.forEach((cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cb(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.socket.on('disconnect', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			console.log("IO: SOCKET DISCONNECTED"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			onDisconnectCallbacks.forEach((cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				cb(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			onDisconnectCallbacksPersist.forEach((cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cb(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.socket.on('connect_error', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			console.log("IO: SOCKET CONNECT ERROR"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			onConnectErrorCallbacks.forEach((cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				cb(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			onConnectErrorCallbacksPersist.forEach((cb) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cb(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.ready = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		callbacks.forEach(callback => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			callback(this.socket); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		callbacksPersist.forEach(callback => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			callback(this.socket); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		callbacks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		callbacksPersist = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |