diff --git a/lib/cards/media_control_card.dart b/lib/cards/media_control_card.dart index fddf57d..c1444f9 100644 --- a/lib/cards/media_control_card.dart +++ b/lib/cards/media_control_card.dart @@ -13,6 +13,14 @@ class MediaControlsCard extends StatelessWidget { child: MissedEntityWidget(), handleTap: false, ); + } else if (card.entity.entity.domain == null || card.entity.entity.domain != 'media_player') { + return EntityModel( + entityWrapper: card.entity, + child: ErrorEntityWidget( + text: '${card.entity.entity?.entityId} is not a media_player', + ), + handleTap: false, + ); } return CardWrapper( child: EntityModel( diff --git a/lib/entities/entity.class.dart b/lib/entities/entity.class.dart index 641439e..c388b73 100644 --- a/lib/entities/entity.class.dart +++ b/lib/entities/entity.class.dart @@ -148,7 +148,7 @@ class Entity { void update(Map rawData, String webHost) { attributes = rawData["attributes"] ?? {}; - domain = rawData["entity_id"].split(".")[0]; + domain = rawData["entity_id"] != null ? rawData["entity_id"].split(".")[0] : null; entityId = rawData["entity_id"]; deviceClass = attributes["device_class"]; state = rawData["state"] is bool ? (rawData["state"] ? EntityState.on : EntityState.off) : rawData["state"]; diff --git a/lib/entities/error_entity_widget.dart b/lib/entities/error_entity_widget.dart new file mode 100644 index 0000000..48b9b3e --- /dev/null +++ b/lib/entities/error_entity_widget.dart @@ -0,0 +1,23 @@ +part of '../main.dart'; + +class ErrorEntityWidget extends StatelessWidget { + + final String text; + + ErrorEntityWidget({ + Key key, this.text + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final EntityModel entityModel = EntityModel.of(context); + String errorText = text ?? "Entity error: ${entityModel.entityWrapper.entity?.entityId}"; + return Container( + child: Padding( + padding: EdgeInsets.all(5.0), + child: Text(errorText), + ), + color: Theme.of(context).errorColor, + ); + } +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 7ae706a..bafad64 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -100,6 +100,7 @@ part 'entities/alarm_control_panel/widgets/alarm_control_panel_controls.widget.d part 'entities/vacuum/vacuum_entity.class.dart'; part 'entities/vacuum/widgets/vacuum_controls.dart'; part 'entities/vacuum/widgets/vacuum_state_button.dart'; +part 'entities/error_entity_widget.dart'; part 'pages/settings/connection_settings.part.dart'; part 'pages/purchase.page.dart'; part 'pages/widgets/product_purchase.widget.dart';