Stop connection init if settings is empty

This commit is contained in:
estevez-dev 2019-06-15 14:36:11 +03:00
parent 209ccd4f7f
commit e1d9d9f304
4 changed files with 52 additions and 34 deletions

1
.gitignore vendored
View File

@ -11,3 +11,4 @@ build/
.idea/ .idea/
key.properties key.properties
pubspec.lock

View File

@ -37,7 +37,7 @@ class AuthManager {
}); });
} }
}); });
Logger.d("Launching OAuth..."); Logger.d("Launching OAuth: $oauthUrl");
eventBus.fire(StartAuthEvent(oauthUrl, true)); eventBus.fire(StartAuthEvent(oauthUrl, true));
return completer.future; return completer.future;
} }

View File

@ -36,6 +36,7 @@ class Connection {
Future init({bool loadSettings, bool forceReconnect: false}) async { Future init({bool loadSettings, bool forceReconnect: false}) async {
Completer completer = Completer(); Completer completer = Completer();
bool stopInit = false;
if (loadSettings) { if (loadSettings) {
Logger.e("Loading settings..."); Logger.e("Loading settings...");
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
@ -43,13 +44,20 @@ class Connection {
_domain = prefs.getString('hassio-domain'); _domain = prefs.getString('hassio-domain');
_port = prefs.getString('hassio-port'); _port = prefs.getString('hassio-port');
displayHostname = "$_domain:$_port"; displayHostname = "$_domain:$_port";
_webSocketAPIEndpoint = "${prefs.getString('hassio-protocol')}://$_domain:$_port/api/websocket"; _webSocketAPIEndpoint =
httpWebHost = "${prefs.getString('hassio-res-protocol')}://$_domain:$_port"; "${prefs.getString('hassio-protocol')}://$_domain:$_port/api/websocket";
httpWebHost =
"${prefs.getString('hassio-res-protocol')}://$_domain${(_port == '433' || _port == '80') ? '' : ':'+_port}";
if ((_domain == null) || (_port == null) ||
(_domain.isEmpty) || (_port.isEmpty)) {
completer.completeError(HAError.checkConnectionSettings());
stopInit = true;
} else {
//_token = prefs.getString('hassio-token'); //_token = prefs.getString('hassio-token');
final storage = new FlutterSecureStorage(); final storage = new FlutterSecureStorage();
try { try {
_token = await storage.read(key: "hacl_llt"); _token = await storage.read(key: "hacl_llt");
Logger.e("Long-lived token read successful"); Logger.e("Long-lived token read successful: $_token");
} catch (e) { } catch (e) {
Logger.e("Cannt read secure storage. Need to relogin."); Logger.e("Cannt read secure storage. Need to relogin.");
_token = null; _token = null;
@ -58,14 +66,21 @@ class Connection {
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
deviceName = androidInfo.model; deviceName = androidInfo.model;
oauthUrl = "$httpWebHost/auth/authorize?client_id=${Uri.encodeComponent('http://ha-client.homemade.systems/')}&redirect_uri=${Uri.encodeComponent('http://ha-client.homemade.systems/service/auth_callback.html')}"; oauthUrl = "$httpWebHost/auth/authorize?client_id=${Uri.encodeComponent(
'http://ha-client.homemade.systems/')}&redirect_uri=${Uri
.encodeComponent(
'http://ha-client.homemade.systems/service/auth_callback.html')}";
settingsLoaded = true; settingsLoaded = true;
} }
} else {
if ((_domain == null) || (_port == null) || if ((_domain == null) || (_port == null) ||
(_domain.isEmpty) || (_port.isEmpty)) { (_domain.isEmpty) || (_port.isEmpty)) {
completer.completeError(HAError.checkConnectionSettings()); completer.completeError(HAError.checkConnectionSettings());
stopInit = true;
}
} }
if (!stopInit) {
if (_token == null) { if (_token == null) {
AuthManager().getTempToken( AuthManager().getTempToken(
oauthUrl: oauthUrl oauthUrl: oauthUrl
@ -79,6 +94,7 @@ class Connection {
} else { } else {
_doConnect(completer: completer, forceReconnect: forceReconnect); _doConnect(completer: completer, forceReconnect: forceReconnect);
} }
}
return completer.future; return completer.future;
} }
@ -106,7 +122,7 @@ class Connection {
} else { } else {
connecting = Completer(); connecting = Completer();
await _disconnect(); await _disconnect();
Logger.d("Socket connecting..."); Logger.d("Socket connecting: $_webSocketAPIEndpoint...");
_socket = IOWebSocketChannel.connect( _socket = IOWebSocketChannel.connect(
_webSocketAPIEndpoint, pingInterval: Duration(seconds: 15)); _webSocketAPIEndpoint, pingInterval: Duration(seconds: 15));
_socketSubscription = _socket.stream.listen( _socketSubscription = _socket.stream.listen(

View File

@ -309,6 +309,7 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
} }
void _showOAuth() { void _showOAuth() {
Logger.d("_showOAuth: ${Connection().oauthUrl}");
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(