From 3fbdc05469d2d046c743eb1e9f8bacf7b68a93c7 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Thu, 9 Jun 2022 09:51:29 +0300 Subject: [PATCH] Minor flow bugfixes --- lib/logic/api_maps/hetzner.dart | 63 ++++++++++++------- .../server_installation_repository.dart | 13 +++- lib/ui/pages/more/info/info.dart | 1 - 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/lib/logic/api_maps/hetzner.dart b/lib/logic/api_maps/hetzner.dart index 54d60c21..4de4f36f 100644 --- a/lib/logic/api_maps/hetzner.dart +++ b/lib/logic/api_maps/hetzner.dart @@ -76,7 +76,7 @@ class HetznerApi extends ApiMap { ); } - Future createServer({ + Future createServer({ required final String cloudFlareKey, required final User rootUser, required final String domainName, @@ -117,21 +117,32 @@ class HetznerApi extends ApiMap { }; print('Decoded data: $data'); - final Response serverCreateResponse = await client.post( - '/servers', - data: data, - ); + ServerHostingDetails? serverDetails; - print(serverCreateResponse.data); - client.close(); - return ServerHostingDetails( - id: serverCreateResponse.data['server']['id'], - ip4: serverCreateResponse.data['server']['public_net']['ipv4']['ip'], - createTime: DateTime.now(), - volume: dataBase, - apiToken: apiToken, - provider: ServerProvider.hetzner, - ); + try { + final Response serverCreateResponse = await client.post( + '/servers', + data: data, + ); + print(serverCreateResponse.data); + serverDetails = ServerHostingDetails( + id: serverCreateResponse.data['server']['id'], + ip4: serverCreateResponse.data['server']['public_net']['ipv4']['ip'], + createTime: DateTime.now(), + volume: dataBase, + apiToken: apiToken, + provider: ServerProvider.hetzner, + ); + } on DioError catch (e) { + print(e); + rethrow; + } catch (e) { + print(e); + } finally { + client.close(); + } + + return serverDetails; } static String getHostnameFromDomain(final String domain) { @@ -247,14 +258,20 @@ class HetznerApi extends ApiMap { }) async { final ServerHostingDetails? hetznerServer = getIt().serverDetails; + final Dio client = await getClient(); - await client.post( - '/servers/${hetznerServer!.id}/actions/change_dns_ptr', - data: { - 'ip': ip4, - 'dns_ptr': domainName, - }, - ); - close(client); + try { + await client.post( + '/servers/${hetznerServer!.id}/actions/change_dns_ptr', + data: { + 'ip': ip4, + 'dns_ptr': domainName, + }, + ); + } catch (e) { + print(e); + } finally { + close(client); + } } } diff --git a/lib/logic/cubit/server_installation/server_installation_repository.dart b/lib/logic/cubit/server_installation/server_installation_repository.dart index 5dc414f5..891c55bb 100644 --- a/lib/logic/cubit/server_installation/server_installation_repository.dart +++ b/lib/logic/cubit/server_installation/server_installation_repository.dart @@ -214,12 +214,16 @@ class ServerInstallationRepository { try { dataBase = await hetznerApi.createVolume(); - final ServerHostingDetails serverDetails = await hetznerApi.createServer( + final ServerHostingDetails? serverDetails = await hetznerApi.createServer( cloudFlareKey: cloudFlareKey, rootUser: rootUser, domainName: domainName, dataBase: dataBase, ); + if (serverDetails == null) { + print('Server is not initialized!'); + return; + } saveServerDetails(serverDetails); onSuccess(serverDetails); } on DioError catch (e) { @@ -238,14 +242,17 @@ class ServerInstallationRepository { domainName: domainName, ); - final ServerHostingDetails serverDetails = + final ServerHostingDetails? serverDetails = await hetznerApi.createServer( cloudFlareKey: cloudFlareKey, rootUser: rootUser, domainName: domainName, dataBase: dataBase, ); - + if (serverDetails == null) { + print('Server is not initialized!'); + return; + } await saveServerDetails(serverDetails); onSuccess(serverDetails); }, diff --git a/lib/ui/pages/more/info/info.dart b/lib/ui/pages/more/info/info.dart index ac4eeff2..d4c4863b 100644 --- a/lib/ui/pages/more/info/info.dart +++ b/lib/ui/pages/more/info/info.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:selfprivacy/config/brand_theme.dart'; import 'package:selfprivacy/ui/components/brand_divider/brand_divider.dart'; import 'package:selfprivacy/ui/components/brand_header/brand_header.dart';