diff --git a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart index b97018e2..55534b1d 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean.dart @@ -709,7 +709,8 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { } @override - Future> getAvailableLocations() async { + Future>> + getAvailableLocations() async { List locations = []; final Dio client = await getClient(); @@ -730,15 +731,20 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { .toList(); } catch (e) { print(e); + return APIGenericResult( + data: [], + success: false, + message: e.toString(), + ); } finally { close(client); } - return locations; + return APIGenericResult(data: locations, success: true); } @override - Future> getServerTypesByLocation({ + Future>> getServerTypesByLocation({ required final ServerProviderLocation location, }) async { final List types = []; @@ -771,11 +777,16 @@ class DigitalOceanApi extends ServerProviderApi with VolumeProviderApi { } } catch (e) { print(e); + return APIGenericResult( + data: [], + success: false, + message: e.toString(), + ); } finally { close(client); } - return types; + return APIGenericResult(data: types, success: true); } @override diff --git a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart index 87331d85..0f735217 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart @@ -707,7 +707,8 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { } @override - Future> getAvailableLocations() async { + Future>> + getAvailableLocations() async { List locations = []; final Dio client = await getClient(); @@ -728,15 +729,20 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { .toList(); } catch (e) { print(e); + return APIGenericResult( + success: false, + data: [], + message: e.toString(), + ); } finally { close(client); } - return locations; + return APIGenericResult(success: true, data: locations); } @override - Future> getServerTypesByLocation({ + Future>> getServerTypesByLocation({ required final ServerProviderLocation location, }) async { final List types = []; @@ -769,11 +775,16 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { } } catch (e) { print(e); + return APIGenericResult( + data: [], + success: false, + message: e.toString(), + ); } finally { close(client); } - return types; + return APIGenericResult(data: types, success: true); } @override diff --git a/lib/logic/api_maps/rest_maps/server_providers/server_provider.dart b/lib/logic/api_maps/rest_maps/server_providers/server_provider.dart index 45e2bd2e..1b9a320a 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/server_provider.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/server_provider.dart @@ -22,8 +22,9 @@ class ProviderApiTokenValidation { abstract class ServerProviderApi extends ApiMap { Future> getServers(); - Future> getAvailableLocations(); - Future> getServerTypesByLocation({ + Future>> + getAvailableLocations(); + Future>> getServerTypesByLocation({ required final ServerProviderLocation location, }); diff --git a/lib/logic/cubit/server_installation/server_installation_cubit.dart b/lib/logic/cubit/server_installation/server_installation_cubit.dart index dd9dadbd..ef23d18a 100644 --- a/lib/logic/cubit/server_installation/server_installation_cubit.dart +++ b/lib/logic/cubit/server_installation/server_installation_cubit.dart @@ -123,9 +123,18 @@ class ServerInstallationCubit extends Cubit { return []; } - return ApiController.currentServerProviderApiFactory! + final APIGenericResult apiResult = await ApiController + .currentServerProviderApiFactory! .getServerProvider() .getAvailableLocations(); + + if (!apiResult.success) { + getIt().showSnackBar( + 'initializing.could_not_connect'.tr(), + ); + } + + return apiResult.data; } Future> fetchAvailableTypesByLocation( @@ -135,9 +144,18 @@ class ServerInstallationCubit extends Cubit { return []; } - return ApiController.currentServerProviderApiFactory! + final APIGenericResult apiResult = await ApiController + .currentServerProviderApiFactory! .getServerProvider() .getServerTypesByLocation(location: location); + + if (!apiResult.success) { + getIt().showSnackBar( + 'initializing.could_not_connect'.tr(), + ); + } + + return apiResult.data; } void setServerProviderKey(final String serverProviderKey) async {