diff --git a/mobile/lib/src/views/pipeline_detail_page.dart b/mobile/lib/src/views/pipeline_detail_page.dart index 4c5aeca..12a3da5 100644 --- a/mobile/lib/src/views/pipeline_detail_page.dart +++ b/mobile/lib/src/views/pipeline_detail_page.dart @@ -1,5 +1,7 @@ import 'package:aeris/src/aeris_api.dart'; import 'package:aeris/src/providers/pipelines_provider.dart'; +import 'package:aeris/src/providers/services_provider.dart'; +import 'package:aeris/src/views/service_page.dart'; import 'package:aeris/src/views/setup_action_page.dart'; import 'package:aeris/src/widgets/action_card_popup_menu.dart'; import 'package:aeris/src/widgets/aeris_card_page.dart'; @@ -28,7 +30,8 @@ class PipelineDetailPage extends StatefulWidget { class _PipelineDetailPageState extends State { @override Widget build(BuildContext context) => - Consumer(builder: (context, provider, _) { + Consumer(builder: (context, services, _) { + return Consumer(builder: (context, provider, _) { Pipeline pipeline = widget.pipeline; final cardHeader = Row( @@ -67,11 +70,24 @@ class _PipelineDetailPageState extends State { width: 60, value: pipeline.enabled, onToggle: (value) { - setState(() { - pipeline.enabled = !pipeline.enabled; - GetIt.I().editPipeline(pipeline); - provider.sortPipelines(); - }); + if (services.disconnectedServices.any( + (service) => pipeline.dependsOn(service)) + ) { + showDialog( + context: context, + builder: (BuildContext context) => WarningDialog( + message: AppLocalizations.of(context).cantEnablePipeline, + onAccept: () => showAerisCardPage(context, (_) => const ServicePage()), + actionButtonColor: Theme.of(context).colorScheme.secondaryContainer, + warnedAction: AppLocalizations.of(context).connectService) + ); + } else { + setState(() { + pipeline.enabled = !pipeline.enabled; + GetIt.I().editPipeline(pipeline); + provider.sortPipelines(); + }); + } }, ), ), @@ -186,4 +202,5 @@ class _PipelineDetailPageState extends State { ]), )); }); + }); }