blob: 60cd462f4db33fda318f45f8f11642dd763b6f75 [file] [log] [blame]
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)));
}