Merge pull request #117 from AnonymusRaccoon/mobile_client_setupaction_page_form

Mobile Client: fix state in action form
This commit is contained in:
Arthur Jamet
2022-03-06 19:26:04 +01:00
committed by GitHub
5 changed files with 25 additions and 13 deletions
@@ -21,9 +21,13 @@ class ServiceProvider extends ChangeNotifier {
/// Adds a service into the Provider
addService(Service service, String code) async {
_connectedServices.add(service);
GetIt.I<AerisAPI>()
.connectService(service, code)
.then((value) => notifyListeners());
if (service != const Service.utils()) {
GetIt.I<AerisAPI>()
.connectService(service, code)
.then((value) => notifyListeners());
} else {
notifyListeners();
}
}
/// Refresh services from API
+6 -6
View File
@@ -19,12 +19,12 @@ class AuthorizationPage extends StatelessWidget {
if (segments.removeLast() == 'signin') {
GetIt.I<AerisAPI>().createConnectionFromService(service, code).then((value) => Navigator.pop(context));
} else {
Provider.of<ServiceProvider>(context, listen: false).addService(service, code).then((_) {
Provider.of<ServiceProvider>(context, listen: false).notifyListeners();
Navigator.pop(context);
});
}
return Container();
}
Provider.of<ServiceProvider>(context, listen: false).addService(service, code).then((_) {
Provider.of<ServiceProvider>(context, listen: false).notifyListeners();
Navigator.pop(context);
});
return Container(
alignment: Alignment.center,
child: LoadingIndicator(
+3 -1
View File
@@ -73,7 +73,9 @@ class LoginPage extends StatelessWidget {
label: service.name,
callback: () async {
await launch(Uri.parse(service.authSignInUrl).toString(), forceSafariVC: false);
return GetIt.I<AerisAPI>().isConnected ? null : AppLocalizations.of(context).cantSignInFromService;
return Future.delayed(Duration(seconds: 3)).then((value) {
return GetIt.I<AerisAPI>().isConnected ? null : AppLocalizations.of(context).cantSignInFromService;
});
}
)
],
+5 -1
View File
@@ -71,7 +71,11 @@ class ServicePage extends StatelessWidget {
AppLocalizations.of(context).available,
const Icon(Icons.connect_without_contact, color: Colors.green),
(Service service) {
launch(Uri.parse(service.authUrl).toString(), forceSafariVC: false);
if (service == const Service.utils()) {
serviceProvider.addService(service, '');
} else {
launch(Uri.parse(service.authUrl).toString(), forceSafariVC: false);
}
},
context),
],
+4 -2
View File
@@ -46,9 +46,11 @@ class _SetupActionPageState extends State<SetupActionPage> {
@override
void initState() {
super.initState();
serviceState = widget.action.service;
var services = Provider.of<ServiceProvider>(context, listen: false).connectedServices;
availableActions = GetIt.I<AerisAPI>().getActionsFor(services.contains(serviceState) ? serviceState : services[0], widget.action);
if (services.isNotEmpty) {
serviceState = services.contains(widget.action.service) ? widget.action.service : services[0];
availableActions = GetIt.I<AerisAPI>().getActionsFor(serviceState, widget.action);
}
}
Widget serviceDropdown(List<Service> services) {