| import 'dart:async'; |
| |
| import 'package:fidl_fuchsia_setui/fidl.dart'; |
| import 'package:fidl_fuchsia_net/fidl.dart' as net; |
| import 'package:lib.app.dart/app.dart'; |
| |
| import 'setui_setting_controller.dart'; |
| |
| // TODO: Implement and override applyMutation. |
| class ConnectivityController extends SetUiSettingController { |
| net.ConnectivityProxy _connectivity; |
| bool _reachable; |
| |
| @override |
| Future<void> close() async { |
| _connectivity.ctrl.close(); |
| } |
| |
| @override |
| Future<void> initialize() async { |
| Completer<void> completer = Completer(); |
| |
| _connectivity = net.ConnectivityProxy(); |
| connectToService(StartupContext.fromStartupInfo().environmentServices, |
| _connectivity.ctrl); |
| |
| _connectivity.onNetworkReachable = (reachable) { |
| // Wait for initital state before being done initializing. |
| if (_reachable != reachable) { |
| _reachable = reachable; |
| _connectivity.onNetworkReachable = _updateReachable; |
| completer.complete(); |
| } |
| }; |
| return completer.future; |
| } |
| |
| void _updateReachable(bool reachable) { |
| if (_reachable != reachable) { |
| _reachable = reachable; |
| notifyListeners(); |
| } |
| } |
| |
| @override |
| SettingsObject get value => SettingsObject( |
| settingType: SettingType.connectivity, |
| data: SettingData.withConnectivity(ConnectedState( |
| reachability: _reachable ? Reachability.wan : Reachability.unknown))); |
| } |