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/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 f9866e5..df2424d 100644 --- a/mobile/lib/src/views/login_page.dart +++ b/mobile/lib/src/views/login_page.dart @@ -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().isConnected ? null : AppLocalizations.of(context).cantSignInFromService; + return Future.delayed(Duration(seconds: 3)).then((value) { + return GetIt.I().isConnected ? null : AppLocalizations.of(context).cantSignInFromService; + }); } ) ], 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), ], diff --git a/mobile/lib/src/views/setup_action_page.dart b/mobile/lib/src/views/setup_action_page.dart index 5a82b4d..922cfb1 100644 --- a/mobile/lib/src/views/setup_action_page.dart +++ b/mobile/lib/src/views/setup_action_page.dart @@ -46,9 +46,11 @@ class _SetupActionPageState extends State { @override void initState() { super.initState(); - serviceState = widget.action.service; var services = Provider.of(context, listen: false).connectedServices; - availableActions = GetIt.I().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().getActionsFor(serviceState, widget.action); + } } Widget serviceDropdown(List services) {