mirror of
				https://github.com/pierre42100/ComunicWeb
				synced 2025-11-03 19:54:14 +00:00 
			
		
		
		
	Block page loading while WebSocket is not connected
This commit is contained in:
		@@ -11,7 +11,7 @@ ComunicWeb.common.system = {
 | 
			
		||||
	 * @param {String} openPage Specify a page to open
 | 
			
		||||
	 * @return {Boolean} True for a success
 | 
			
		||||
	 */
 | 
			
		||||
	init: function(openPage){
 | 
			
		||||
	init: async function(openPage){
 | 
			
		||||
 | 
			
		||||
		//Display Comunic logo
 | 
			
		||||
		ComunicWeb.debug.displayComunicLogo();
 | 
			
		||||
@@ -66,8 +66,14 @@ ComunicWeb.common.system = {
 | 
			
		||||
		/**
 | 
			
		||||
		 * What to do after login refresh
 | 
			
		||||
		 */
 | 
			
		||||
		var afterLoginRefresh = function(){
 | 
			
		||||
		var afterLoginRefresh = async function(){
 | 
			
		||||
			
 | 
			
		||||
			// Initialize Websocket if user is connected
 | 
			
		||||
			if(signed_in()) {
 | 
			
		||||
				await UserWebSocket.Connect();
 | 
			
		||||
				await UserWebSocket.WaitForConnected();
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/**
 | 
			
		||||
			 * Open a page
 | 
			
		||||
			 */
 | 
			
		||||
@@ -79,10 +85,6 @@ ComunicWeb.common.system = {
 | 
			
		||||
				//Open specified page
 | 
			
		||||
				ComunicWeb.common.page.openPage(openPage);
 | 
			
		||||
 | 
			
		||||
			// Initialize Websocket if user is connect
 | 
			
		||||
			if(signed_in())
 | 
			
		||||
				UserWebSocket.Connect();
 | 
			
		||||
 | 
			
		||||
			//End of init
 | 
			
		||||
			ComunicWeb.debug.logMessage("Application is ready !");
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -56,6 +56,22 @@ class UserWebSocket {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Wait for the socket to be connected (if not already)
 | 
			
		||||
	 */
 | 
			
		||||
	static WaitForConnected() {
 | 
			
		||||
		return new Promise((res, err) => {
 | 
			
		||||
 | 
			
		||||
			// Check if we are already connected
 | 
			
		||||
			if(this.ws.readyState == WebSocket.OPEN) {
 | 
			
		||||
				res();
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			this.ws.addEventListener("open", () => res());
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Handles websocket errors
 | 
			
		||||
	 */
 | 
			
		||||
@@ -69,6 +85,9 @@ class UserWebSocket {
 | 
			
		||||
	 */
 | 
			
		||||
	static async Closed(e) {
 | 
			
		||||
		console.error("WS closed", e)
 | 
			
		||||
 | 
			
		||||
		// Reset requests queue
 | 
			
		||||
		requests = {};
 | 
			
		||||
		
 | 
			
		||||
		// Check if the server was gracefully stopped
 | 
			
		||||
		if(!this.hasOwnProperty("ws"))
 | 
			
		||||
 
 | 
			
		||||
@@ -151,7 +151,7 @@ ComunicWeb.user.userLogin = {
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        //What to do after the request is completed
 | 
			
		||||
        var afterAPIrequest = function(result){
 | 
			
		||||
        const afterAPIrequest = async function(result){
 | 
			
		||||
            //Prepare data return
 | 
			
		||||
            var loginstate = false;
 | 
			
		||||
            
 | 
			
		||||
@@ -178,7 +178,8 @@ ComunicWeb.user.userLogin = {
 | 
			
		||||
                ComunicWeb.components.mailCaching.set(usermail);
 | 
			
		||||
 | 
			
		||||
                // Initialize websocket
 | 
			
		||||
                UserWebSocket.Connect();
 | 
			
		||||
                await UserWebSocket.Connect();
 | 
			
		||||
                await UserWebSocket.WaitForConnected();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Perform next action if login failed
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user