diff --git a/lib/entities/camera/widgets/camera_stream_view.dart b/lib/entities/camera/widgets/camera_stream_view.dart index e1610e3..79637fc 100644 --- a/lib/entities/camera/widgets/camera_stream_view.dart +++ b/lib/entities/camera/widgets/camera_stream_view.dart @@ -36,7 +36,7 @@ class _CameraStreamViewState extends State { .of(context) .entityWrapper .entity; - if (_entity.supportStream) { + if (_entity.supportStream && HomeAssistant().isComponentEnabled('stream')) { HomeAssistant().getCameraStream(_entity.entityId) .then((data) { _jsMessageChannelName = 'HA_${_entity.entityId.replaceAll('.', '_')}'; diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart index 0de669c..f848c5e 100644 --- a/lib/home_assistant.class.dart +++ b/lib/home_assistant.class.dart @@ -46,7 +46,6 @@ class HomeAssistant { String get userAvatarText => userName.length > 0 ? userName[0] : ""; bool get isNoEntities => entities == null || entities.isEmpty; bool get isNoViews => ui == null || ui.isEmpty; - bool get isMobileAppEnabled => _instanceConfig["components"] != null && (_instanceConfig["components"] as List).contains("mobile_app"); HomeAssistant._internal() { ConnectionManager().onStateChangeCallback = _handleEntityStateChange; @@ -75,7 +74,7 @@ class HomeAssistant { futures.add(_getLovelace(null)); } Future.wait(futures).then((_) { - if (isMobileAppEnabled) { + if (isComponentEnabled('mobile_app')) { _createUI(); _fetchCompleter.complete(); if (!uiOnly) MobileAppIntegrationManager.checkAppRegistration(); @@ -103,7 +102,7 @@ class HomeAssistant { _getUserInfo(prefs); _getPanels(prefs); _getServices(prefs); - if (isMobileAppEnabled) { + if (isComponentEnabled('mobile_app')) { _createUI(); } } catch (e) { @@ -156,6 +155,7 @@ class HomeAssistant { void _parseConfig(data) { _instanceConfig = Map.from(data); + Logger.d('stream: ${_instanceConfig['components'].contains('stream')}'); } Future _getStates(SharedPreferences sharedPrefs) async { @@ -305,6 +305,10 @@ class HomeAssistant { return completer.future; } + bool isComponentEnabled(String name) { + return _instanceConfig["components"] != null && (_instanceConfig["components"] as List).contains("$name"); + } + void _handleLovelaceUpdate() { if (_fetchCompleter != null && _fetchCompleter.isCompleted) { eventBus.fire(new LovelaceChangedEvent()); diff --git a/lib/pages/play_media.page.dart b/lib/pages/play_media.page.dart index a3a3ed5..9a033cc 100644 --- a/lib/pages/play_media.page.dart +++ b/lib/pages/play_media.page.dart @@ -57,8 +57,7 @@ class _PlayMediaPageState extends State { _loaded = false; }); } else { - _isMediaExtractorExist = HomeAssistant().isServiceExist("media_extractor"); - //_useMediaExtractor = _isMediaExtractorExist; + _isMediaExtractorExist = HomeAssistant().isComponentEnabled("media_extractor"); _players = HomeAssistant().entities.getByDomains(includeDomains: ["media_player"]); setState(() { if (_players.isNotEmpty) {