diff --git a/lib/screens/settings/extension_detail_page.dart b/lib/screens/settings/extension_detail_page.dart index f1953529..a7f53829 100644 --- a/lib/screens/settings/extension_detail_page.dart +++ b/lib/screens/settings/extension_detail_page.dart @@ -1,8 +1,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:flutter/cupertino.dart' - show CupertinoColors, CupertinoIcons, CupertinoTextField; +import 'package:flutter/cupertino.dart' show CupertinoIcons, CupertinoTextField; import 'package:spotiflac_android/theme/mornye_theme.dart'; import 'package:spotiflac_android/theme/mornye_icons.dart'; import 'package:spotiflac_android/widgets/app_alert_dialog.dart'; @@ -23,6 +22,7 @@ import 'package:spotiflac_android/widgets/app_icon.dart'; import 'package:spotiflac_android/widgets/app_icon_button.dart'; import 'package:spotiflac_android/widgets/app_loading_indicator.dart'; import 'package:spotiflac_android/widgets/app_sliver_header.dart'; +import 'package:spotiflac_android/widgets/extension_health.dart'; part 'extension_detail_page_widgets.dart'; diff --git a/lib/screens/settings/extension_detail_page_widgets.dart b/lib/screens/settings/extension_detail_page_widgets.dart index 68286957..adeee28a 100644 --- a/lib/screens/settings/extension_detail_page_widgets.dart +++ b/lib/screens/settings/extension_detail_page_widgets.dart @@ -186,43 +186,6 @@ class _CapabilityItem extends StatelessWidget { } } -Color _healthStatusColor(BuildContext context, String status) { - final colorScheme = Theme.of(context).colorScheme; - switch (status) { - case 'online': - return context.isMornye - ? CupertinoColors.systemGreen.resolveFrom(context) - : colorScheme.primary; - case 'degraded': - return colorScheme.tertiary; - case 'offline': - return colorScheme.error; - default: - return colorScheme.onSurfaceVariant; - } -} - -IconData _healthStatusIcon(BuildContext context, String status) { - if (context.isMornye) { - return switch (status) { - 'online' => CupertinoIcons.check_mark_circled_solid, - 'degraded' => CupertinoIcons.exclamationmark_triangle, - 'offline' => CupertinoIcons.exclamationmark_circle, - _ => CupertinoIcons.question_circle, - }; - } - switch (status) { - case 'online': - return Icons.check_circle; - case 'degraded': - return Icons.warning_amber_rounded; - case 'offline': - return Icons.error_outline; - default: - return Icons.help_outline; - } -} - String _healthStatusLabel(BuildContext context, String status) { switch (status) { case 'online': @@ -253,7 +216,7 @@ class _HealthSummaryItem extends StatelessWidget { Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; final statusValue = status?.status ?? 'unknown'; - final color = _healthStatusColor(context, statusValue); + final color = extensionHealthColor(context, statusValue); return Column( mainAxisSize: MainAxisSize.min, @@ -262,7 +225,7 @@ class _HealthSummaryItem extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), child: Row( children: [ - AppIcon(_healthStatusIcon(context, statusValue), color: color), + AppIcon(extensionHealthIcon(context, statusValue), color: color), const SizedBox(width: 16), Expanded( child: Column( @@ -324,7 +287,7 @@ class _HealthCheckItem extends StatelessWidget { @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; - final color = _healthStatusColor(context, check.status); + final color = extensionHealthColor(context, check.status); final detailParts = [ _healthStatusLabel(context, check.status), if (check.httpStatus != null) 'HTTP ${check.httpStatus}', @@ -347,7 +310,7 @@ class _HealthCheckItem extends StatelessWidget { child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - AppIcon(_healthStatusIcon(context, check.status), color: color), + AppIcon(extensionHealthIcon(context, check.status), color: color), const SizedBox(width: 16), Expanded( child: Column( diff --git a/lib/screens/settings/extensions_page.dart b/lib/screens/settings/extensions_page.dart index d021b40e..e9e64c07 100644 --- a/lib/screens/settings/extensions_page.dart +++ b/lib/screens/settings/extensions_page.dart @@ -1,6 +1,5 @@ import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:flutter/cupertino.dart' show CupertinoColors; import 'package:spotiflac_android/widgets/app_snack_bar.dart'; import 'package:spotiflac_android/widgets/app_switch.dart'; import 'package:spotiflac_android/widgets/extension_row.dart'; @@ -25,6 +24,7 @@ import 'package:spotiflac_android/widgets/mornye_chrome.dart'; import 'package:spotiflac_android/widgets/settings_group.dart'; import 'package:spotiflac_android/widgets/home_feed_region_setting.dart'; import 'package:spotiflac_android/widgets/app_sliver_header.dart'; +import 'package:spotiflac_android/widgets/extension_health.dart'; part 'extensions_page_widgets.dart'; diff --git a/lib/screens/settings/extensions_page_widgets.dart b/lib/screens/settings/extensions_page_widgets.dart index 157dc21f..265915e4 100644 --- a/lib/screens/settings/extensions_page_widgets.dart +++ b/lib/screens/settings/extensions_page_widgets.dart @@ -24,7 +24,7 @@ class _ExtensionItem extends StatelessWidget { : null; final serviceHealthColor = serviceHealthStatus == null ? null - : _extensionHealthColor(context, serviceHealthStatus); + : extensionHealthColor(context, serviceHealthStatus); return ExtensionRow( showDivider: showDivider, @@ -75,22 +75,6 @@ class _ExtensionItem extends StatelessWidget { } } -Color _extensionHealthColor(BuildContext context, String status) { - final colorScheme = Theme.of(context).colorScheme; - switch (status) { - case 'online': - return context.isMornye - ? CupertinoColors.systemGreen.resolveFrom(context) - : colorScheme.primary; - case 'degraded': - return colorScheme.tertiary; - case 'offline': - return colorScheme.error; - default: - return colorScheme.onSurfaceVariant; - } -} - String _extensionHealthLabel(BuildContext context, String status) { switch (status) { case 'online': diff --git a/lib/widgets/extension_health.dart b/lib/widgets/extension_health.dart new file mode 100644 index 00000000..54876c5c --- /dev/null +++ b/lib/widgets/extension_health.dart @@ -0,0 +1,40 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:spotiflac_android/theme/mornye_theme.dart'; + +Color extensionHealthColor(BuildContext context, String status) { + final colorScheme = Theme.of(context).colorScheme; + switch (status) { + case 'online': + return context.isMornye + ? CupertinoColors.systemGreen.resolveFrom(context) + : colorScheme.primary; + case 'degraded': + return colorScheme.tertiary; + case 'offline': + return colorScheme.error; + default: + return colorScheme.onSurfaceVariant; + } +} + +IconData extensionHealthIcon(BuildContext context, String status) { + if (context.isMornye) { + return switch (status) { + 'online' => CupertinoIcons.check_mark_circled_solid, + 'degraded' => CupertinoIcons.exclamationmark_triangle, + 'offline' => CupertinoIcons.exclamationmark_circle, + _ => CupertinoIcons.question_circle, + }; + } + switch (status) { + case 'online': + return Icons.check_circle; + case 'degraded': + return Icons.warning_amber_rounded; + case 'offline': + return Icons.error_outline; + default: + return Icons.help_outline; + } +}