From 5668c8edb8efbef53b9032244c7c05ceab003476 Mon Sep 17 00:00:00 2001 From: peteruithoven Date: Mon, 28 Apr 2014 16:58:21 +0200 Subject: [PATCH] Autoredirect from connecting page to box when it's connected --- js/ConnectingToNetworkPage.js | 74 +++++++++++++++++++++++++++-------- 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/js/ConnectingToNetworkPage.js b/js/ConnectingToNetworkPage.js index a243a03..d2d1a7f 100644 --- a/js/ConnectingToNetworkPage.js +++ b/js/ConnectingToNetworkPage.js @@ -12,7 +12,10 @@ var _statusField; var _actionField; var _networkAPI = new NetworkAPI(); + var _connectAPI = new ConnectAPI(); + var _infoAPI = new InfoAPI(); var _pageData = {}; + var _connectedChecking = false; var PAGE_ID = "#connecting_to_network"; @@ -29,20 +32,36 @@ _pageData = d3d.util.getPageParams(PAGE_ID); var boxURL = "http://"+_pageData.localip; + _infoAPI.init(boxURL); _networkAPI.init(boxURL); - _networkAPI.refreshing = onRefreshing; - _networkAPI.updated = onStatusUpdated; - joinNetwork(); - _networkAPI.startAutoRefresh(); + retrieveWiFiBoxID(function() { + joinNetwork(); + _networkAPI.refreshing = onRefreshing; + _networkAPI.updated = onStatusUpdated; + _networkAPI.startAutoRefresh(); + }); }); $.mobile.document.on( "pagehide", PAGE_ID, function( event, data ) { console.log("Connecting to network page pagehide"); _networkAPI.stopAutoRefresh(); + _connectAPI.stop(); }); + function retrieveWiFiBoxID(completeHandler) { + console.log(PAGE_ID+":retrieveWiFiBoxID"); + _infoAPI.getInfo(function(infoData) { + _wifiboxid = infoData.wifiboxid; + console.log(" _wifiboxid: ",_wifiboxid); + completeHandler(); + },function() { + // try connecting anyway (making sure wifiboxid retrieval isn't blocking + completeHandler(); + }); + } function joinNetwork() { console.log("joinNetwork"); console.log(" _pageData.password: ",_pageData.password); - _networkAPI.associate(_pageData.ssid,_pageData.password,true); + _networkAPI.associate(_pageData.ssid,_pageData.password,true); + _connectedChecking = false; } function onRefreshing() { //console.log("ConnectingToNetworkPage:onRefreshing"); @@ -60,19 +79,15 @@ switch(data.status) { case NetworkAPI.STATUS.CONNECTING: statusText = "Connecting to network "; - actionText = "Please reconnect to "+_pageData.ssid+". Once you are connected return to this page."; - _actionField.attr("class","info"); + //actionText = "Please reconnect yourself to "+_pageData.ssid+". Once you are connected return to this page."; + actionText = "Please reconnect yourself to "+_pageData.ssid+". Keep this page open."; + _actionField.attr("class","notice"); break; case NetworkAPI.STATUS.CONNECTING_FAILED: statusText = "Could not connect..."; actionText = "Please check password and try again"; _actionField.attr("class","error"); break; - case NetworkAPI.STATUS.CONNECTED: - statusText = "Connected"; - actionText = "The WiFi-Box is connected to "+_pageData.ssid+".
Please reconnect to "+_pageData.ssid+". Once you are connected return to this page."; - _actionField.attr("class","info"); - break; default: actionText = "Something went wrong, please try again"; _actionField.attr("class","error"); @@ -81,11 +96,36 @@ _statusField.html(statusText); _actionField.html(actionText); - if(data.status === NetworkAPI.STATUS.CONNECTED) { - _networkAPI.stopAutoRefresh(); + // When the box is connecting we start checking connect.doodle3d.com + // for a box with the same wifiboxid + if(data.status === NetworkAPI.STATUS.CONNECTING && !_connectedChecking && _wifiboxid !== undefined) { + _connectAPI.boxAppeared = onBoxAppeared; + _connectAPI.start(); + _connectedChecking = true; + } + } + function onBoxAppeared(boxData) { + console.log(PAGE_ID+":onBoxAppeared: ",boxData.localip,boxData.wifiboxid); + // if same box is found... + if(boxData.wifiboxid === _wifiboxid) { + // check if it finished connecting + var boxURL = "http://"+boxData.localip; + var connectedBoxNetworkAPI = new NetworkAPI(); + connectedBoxNetworkAPI.init(boxURL); + connectedBoxNetworkAPI.updated = function(data) { + data.status = parseInt(data.status,10); + console.log(PAGE_ID+":connectedBoxNetworkAPI:onStatusUpdated: ",data.status); + if(data.status === NetworkAPI.STATUS.CONNECTED) { + // redirect to it's box page + console.log(" redirect to box"); + var linkParams = {localip: boxData.localip,wifiboxid: boxData.wifiboxid}; + var link = "#box"; + link = d3d.util.replaceURLParameters(link,linkParams); + $.mobile.changePage(link); + connectedBoxNetworkAPI.stopAutoRefresh(); + } + }; + connectedBoxNetworkAPI.startAutoRefresh(); } - - // ToDo: attempt to auto redirect to connected WiFi-Box - // attempt to retrieve connectAPI list, if same wifiboxid available (only works for version 0.10.2+), redirect to box page } })(window); \ No newline at end of file