From c237553418b12e9677ac64fa8d5f378d9b6a5b1d Mon Sep 17 00:00:00 2001 From: Arthi-chaud Date: Sun, 6 Mar 2022 18:15:27 +0100 Subject: [PATCH 1/5] Mobile Client: fix state in action form --- mobile/lib/src/views/setup_action_page.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mobile/lib/src/views/setup_action_page.dart b/mobile/lib/src/views/setup_action_page.dart index 5a82b4d..7b47b81 100644 --- a/mobile/lib/src/views/setup_action_page.dart +++ b/mobile/lib/src/views/setup_action_page.dart @@ -46,8 +46,9 @@ class _SetupActionPageState extends State { @override void initState() { super.initState(); - serviceState = widget.action.service; var services = Provider.of(context, listen: false).connectedServices; + widget.action.service = services.contains(widget.action.service) ? widget.action.service : services[0]; + serviceState = widget.action.service; availableActions = GetIt.I().getActionsFor(services.contains(serviceState) ? serviceState : services[0], widget.action); } From c3e4f92eea09ee47e48a604748989261efb40b26 Mon Sep 17 00:00:00 2001 From: Arthi-chaud Date: Sun, 6 Mar 2022 18:45:16 +0100 Subject: [PATCH 2/5] Mobile Client: merge --- mobile/lib/src/views/setup_action_page.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mobile/lib/src/views/setup_action_page.dart b/mobile/lib/src/views/setup_action_page.dart index 7b47b81..ea394b5 100644 --- a/mobile/lib/src/views/setup_action_page.dart +++ b/mobile/lib/src/views/setup_action_page.dart @@ -47,9 +47,11 @@ class _SetupActionPageState extends State { void initState() { super.initState(); var services = Provider.of(context, listen: false).connectedServices; - widget.action.service = services.contains(widget.action.service) ? widget.action.service : services[0]; - serviceState = widget.action.service; - availableActions = GetIt.I().getActionsFor(services.contains(serviceState) ? serviceState : services[0], widget.action); + if (services.isNotEmpty) { + widget.action.service = services.contains(widget.action.service) ? widget.action.service : services[0]; + serviceState = widget.action.service; + availableActions = GetIt.I().getActionsFor(services.contains(serviceState) ? serviceState : services[0], widget.action); + } } Widget serviceDropdown(List services) { From 41044e0462d5cb25b448ba59f4681f6cfc22a246 Mon Sep 17 00:00:00 2001 From: Arthi-chaud Date: Sun, 6 Mar 2022 19:01:34 +0100 Subject: [PATCH 3/5] Mobile Client: fix race condition --- mobile/lib/src/aeris_api.dart | 2 ++ mobile/lib/src/views/login_page.dart | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mobile/lib/src/aeris_api.dart b/mobile/lib/src/aeris_api.dart index 5cebb72..aafff3b 100644 --- a/mobile/lib/src/aeris_api.dart +++ b/mobile/lib/src/aeris_api.dart @@ -68,6 +68,8 @@ class AerisAPI { http.Response response = await _requestAPI( '/auth/${service.name.toLowerCase()}/signin?code=$code', AerisAPIRequestType.post, {}); + print(response.body); + print(response.statusCode); if (!response.ok) { return false; } diff --git a/mobile/lib/src/views/login_page.dart b/mobile/lib/src/views/login_page.dart index f9866e5..7bbe595 100644 --- a/mobile/lib/src/views/login_page.dart +++ b/mobile/lib/src/views/login_page.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:aeris/src/aeris_api.dart'; import 'package:aeris/main.dart'; import 'package:aeris/src/models/service.dart'; @@ -73,7 +75,9 @@ class LoginPage extends StatelessWidget { label: service.name, callback: () async { await launch(Uri.parse(service.authSignInUrl).toString(), forceSafariVC: false); - return GetIt.I().isConnected ? null : AppLocalizations.of(context).cantSignInFromService; + return Future.delayed(Duration(seconds: 3)).then((value) { + return GetIt.I().isConnected ? null : AppLocalizations.of(context).cantSignInFromService; + }); } ) ], From 3e471780be829ed63e9b983fe1e4f5166d66830a Mon Sep 17 00:00:00 2001 From: Arthi-chaud Date: Sun, 6 Mar 2022 19:12:18 +0100 Subject: [PATCH 4/5] Mobile Client: fix state --- mobile/lib/src/aeris_api.dart | 2 -- mobile/lib/src/views/authorization_page.dart | 12 ++++++------ mobile/lib/src/views/login_page.dart | 2 -- mobile/lib/src/views/setup_action_page.dart | 5 ++--- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/mobile/lib/src/aeris_api.dart b/mobile/lib/src/aeris_api.dart index aafff3b..5cebb72 100644 --- a/mobile/lib/src/aeris_api.dart +++ b/mobile/lib/src/aeris_api.dart @@ -68,8 +68,6 @@ class AerisAPI { http.Response response = await _requestAPI( '/auth/${service.name.toLowerCase()}/signin?code=$code', AerisAPIRequestType.post, {}); - print(response.body); - print(response.statusCode); if (!response.ok) { return false; } diff --git a/mobile/lib/src/views/authorization_page.dart b/mobile/lib/src/views/authorization_page.dart index e1a49f3..5ac97c2 100644 --- a/mobile/lib/src/views/authorization_page.dart +++ b/mobile/lib/src/views/authorization_page.dart @@ -19,12 +19,12 @@ class AuthorizationPage extends StatelessWidget { if (segments.removeLast() == 'signin') { GetIt.I().createConnectionFromService(service, code).then((value) => Navigator.pop(context)); - } else { - Provider.of(context, listen: false).addService(service, code).then((_) { - Provider.of(context, listen: false).notifyListeners(); - Navigator.pop(context); - }); - } + return Container(); + } + Provider.of(context, listen: false).addService(service, code).then((_) { + Provider.of(context, listen: false).notifyListeners(); + Navigator.pop(context); + }); return Container( alignment: Alignment.center, child: LoadingIndicator( diff --git a/mobile/lib/src/views/login_page.dart b/mobile/lib/src/views/login_page.dart index 7bbe595..df2424d 100644 --- a/mobile/lib/src/views/login_page.dart +++ b/mobile/lib/src/views/login_page.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:aeris/src/aeris_api.dart'; import 'package:aeris/main.dart'; import 'package:aeris/src/models/service.dart'; diff --git a/mobile/lib/src/views/setup_action_page.dart b/mobile/lib/src/views/setup_action_page.dart index ea394b5..922cfb1 100644 --- a/mobile/lib/src/views/setup_action_page.dart +++ b/mobile/lib/src/views/setup_action_page.dart @@ -48,9 +48,8 @@ class _SetupActionPageState extends State { super.initState(); var services = Provider.of(context, listen: false).connectedServices; if (services.isNotEmpty) { - widget.action.service = services.contains(widget.action.service) ? widget.action.service : services[0]; - serviceState = widget.action.service; - availableActions = GetIt.I().getActionsFor(services.contains(serviceState) ? serviceState : services[0], widget.action); + serviceState = services.contains(widget.action.service) ? widget.action.service : services[0]; + availableActions = GetIt.I().getActionsFor(serviceState, widget.action); } } From 3f230cdeb5a418e57dc1241ba5d0fef4cbf73c1e Mon Sep 17 00:00:00 2001 From: Arthi-chaud Date: Sun, 6 Mar 2022 19:19:39 +0100 Subject: [PATCH 5/5] Mobile Client: fix state --- mobile/lib/src/providers/services_provider.dart | 10 +++++++--- mobile/lib/src/views/service_page.dart | 6 +++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mobile/lib/src/providers/services_provider.dart b/mobile/lib/src/providers/services_provider.dart index 281091f..dce7d59 100644 --- a/mobile/lib/src/providers/services_provider.dart +++ b/mobile/lib/src/providers/services_provider.dart @@ -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() - .connectService(service, code) - .then((value) => notifyListeners()); + if (service != const Service.utils()) { + GetIt.I() + .connectService(service, code) + .then((value) => notifyListeners()); + } else { + notifyListeners(); + } } /// Refresh services from API diff --git a/mobile/lib/src/views/service_page.dart b/mobile/lib/src/views/service_page.dart index ab00148..5f28b4d 100644 --- a/mobile/lib/src/views/service_page.dart +++ b/mobile/lib/src/views/service_page.dart @@ -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), ],