Resolves #526 Subscribe to Lovelace update events
This commit is contained in:
parent
a3548455eb
commit
5ced01463f
@ -49,6 +49,7 @@ class HomeAssistant {
|
||||
|
||||
HomeAssistant._internal() {
|
||||
ConnectionManager().onStateChangeCallback = _handleEntityStateChange;
|
||||
ConnectionManager().onLovelaceUpdatedCallback = _handleLovelaceUpdate;
|
||||
DeviceInfoManager().loadDeviceInfo();
|
||||
}
|
||||
|
||||
@ -296,6 +297,14 @@ class HomeAssistant {
|
||||
return completer.future;
|
||||
}
|
||||
|
||||
void _handleLovelaceUpdate() {
|
||||
if (_fetchCompleter != null && _fetchCompleter.isCompleted) {
|
||||
eventBus.fire(new StateChangedEvent(
|
||||
needToRebuildUI: true
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
void _handleEntityStateChange(Map eventData) {
|
||||
//TheLogger.debug( "New state for ${eventData['entity_id']}");
|
||||
if (_fetchCompleter != null && _fetchCompleter.isCompleted) {
|
||||
|
@ -28,6 +28,7 @@ class ConnectionManager {
|
||||
bool isConnected = false;
|
||||
|
||||
var onStateChangeCallback;
|
||||
var onLovelaceUpdatedCallback;
|
||||
|
||||
IOWebSocketChannel _socket;
|
||||
|
||||
@ -150,6 +151,10 @@ class ConnectionManager {
|
||||
} else if (data["type"] == "auth_ok") {
|
||||
Logger.d("[Received] <== ${data.toString()}");
|
||||
Logger.d("[Connection] Subscribing to events");
|
||||
sendSocketMessage(
|
||||
type: "subscribe_events",
|
||||
additionalData: {"event_type": "lovelace_updated"},
|
||||
);
|
||||
sendSocketMessage(
|
||||
type: "subscribe_events",
|
||||
additionalData: {"event_type": "state_changed"},
|
||||
@ -212,6 +217,17 @@ class ConnectionManager {
|
||||
}
|
||||
_messageResolver.remove("${data["id"]}");
|
||||
} else if (data["type"] == "event") {
|
||||
if (data["event"] != null) {
|
||||
if (data["event"]["event_type"] == "state_changed") {
|
||||
Logger.d("[Received] <== ${data['type']}.${data["event"]["event_type"]}: ${data["event"]["data"]["entity_id"]}");
|
||||
onStateChangeCallback(data["event"]["data"]);
|
||||
} else if (data["event"]["event_type"] == "lovelace_updated") {
|
||||
Logger.d("[Received] <== ${data['type']}.${data["event"]["event_type"]}: $data");
|
||||
onLovelaceUpdatedCallback();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((data["event"] != null) && (data["event"]["event_type"] == "state_changed")) {
|
||||
Logger.d("[Received] <== ${data['type']}.${data["event"]["event_type"]}: ${data["event"]["data"]["entity_id"]}");
|
||||
onStateChangeCallback(data["event"]["data"]);
|
||||
|
@ -153,7 +153,7 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
|
||||
if (_stateSubscription == null) {
|
||||
_stateSubscription = eventBus.on<StateChangedEvent>().listen((event) {
|
||||
if (event.needToRebuildUI) {
|
||||
Logger.d("New entity. Need to rebuild UI");
|
||||
Logger.d("Need to rebuild UI");
|
||||
_quickLoad();
|
||||
} else {
|
||||
setState(() {});
|
||||
|
Reference in New Issue
Block a user