diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart index 7803a80..645711b 100644 --- a/lib/home_assistant.class.dart +++ b/lib/home_assistant.class.dart @@ -63,10 +63,6 @@ class HomeAssistant { futures.add(_getServices()); futures.add(_getUserInfo()); futures.add(_getPanels()); - futures.add(ConnectionManager().sendSocketMessage( - type: "subscribe_events", - additionalData: {"event_type": "state_changed"}, - )); Future.wait(futures).then((_) { if (isMobileAppEnabled) { if (!childMode) _createUI(); diff --git a/lib/managers/connection_manager.class.dart b/lib/managers/connection_manager.class.dart index ad15177..912b5f6 100644 --- a/lib/managers/connection_manager.class.dart +++ b/lib/managers/connection_manager.class.dart @@ -148,11 +148,17 @@ class ConnectionManager { }); } else if (data["type"] == "auth_ok") { Logger.d("[Received] <== ${data.toString()}"); - _messageResolver["auth"]?.complete(); - _messageResolver.remove("auth"); - if (_token != null) { - if (!connecting.isCompleted) connecting.complete(); - } + Logger.d("[Connection] Subscribing to events"); + sendSocketMessage( + type: "subscribe_events", + additionalData: {"event_type": "state_changed"}, + ).whenComplete((){ + _messageResolver["auth"]?.complete(); + _messageResolver.remove("auth"); + if (_token != null) { + if (!connecting.isCompleted) connecting.complete(); + } + }); } else if (data["type"] == "auth_invalid") { Logger.d("[Received] <== ${data.toString()}"); _messageResolver["auth"]?.completeError(HAError("${data["message"]}", actions: [HAErrorAction.loginAgain()]));