From 040fc43e1f5513c9cf11d9f0a45bf18bf2949c3d Mon Sep 17 00:00:00 2001
From: NaiJi <naijiworld@protonmail.com>
Date: Fri, 2 Jun 2023 02:44:34 -0300
Subject: [PATCH] fix: Add DNS provider type to provider classes to fix wrong
 domain type

---
 .../cubit/forms/setup/initializing/domain_setup_cubit.dart   | 5 +++--
 lib/logic/providers/dns_providers/cloudflare.dart            | 3 +++
 lib/logic/providers/dns_providers/desec.dart                 | 3 +++
 lib/logic/providers/dns_providers/digital_ocean_dns.dart     | 3 +++
 lib/logic/providers/dns_providers/dns_provider.dart          | 1 +
 lib/logic/providers/server_providers/digital_ocean.dart      | 3 +++
 lib/logic/providers/server_providers/hetzner.dart            | 3 +++
 lib/logic/providers/server_providers/server_provider.dart    | 1 +
 8 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/lib/logic/cubit/forms/setup/initializing/domain_setup_cubit.dart b/lib/logic/cubit/forms/setup/initializing/domain_setup_cubit.dart
index 1437a6e2..8c66deb7 100644
--- a/lib/logic/cubit/forms/setup/initializing/domain_setup_cubit.dart
+++ b/lib/logic/cubit/forms/setup/initializing/domain_setup_cubit.dart
@@ -28,14 +28,15 @@ class DomainSetupCubit extends Cubit<DomainSetupState> {
 
     emit(Loading(LoadingTypes.saving));
 
+    final dnsProvider = ProvidersController.currentDnsProvider!;
     final GenericResult<String?> zoneIdResult =
-        await ProvidersController.currentDnsProvider!.getZoneId(domainName);
+        await dnsProvider.getZoneId(domainName);
 
     if (zoneIdResult.success || zoneIdResult.data != null) {
       final ServerDomain domain = ServerDomain(
         domainName: domainName,
         zoneId: zoneIdResult.data!,
-        provider: DnsProviderType.cloudflare,
+        provider: dnsProvider.type,
       );
 
       serverInstallationCubit.setDomain(domain);
diff --git a/lib/logic/providers/dns_providers/cloudflare.dart b/lib/logic/providers/dns_providers/cloudflare.dart
index bd01b240..1f53761d 100644
--- a/lib/logic/providers/dns_providers/cloudflare.dart
+++ b/lib/logic/providers/dns_providers/cloudflare.dart
@@ -29,6 +29,9 @@ class CloudflareDnsProvider extends DnsProvider {
 
   ApiAdapter _adapter;
 
+  @override
+  DnsProviderType get type => DnsProviderType.cloudflare;
+
   @override
   Future<GenericResult<bool>> tryInitApiByToken(final String token) async {
     final api = _adapter.api(getInitialized: false);
diff --git a/lib/logic/providers/dns_providers/desec.dart b/lib/logic/providers/dns_providers/desec.dart
index fe09fd3c..7111c0ba 100644
--- a/lib/logic/providers/dns_providers/desec.dart
+++ b/lib/logic/providers/dns_providers/desec.dart
@@ -29,6 +29,9 @@ class DesecDnsProvider extends DnsProvider {
 
   ApiAdapter _adapter;
 
+  @override
+  DnsProviderType get type => DnsProviderType.desec;
+
   @override
   Future<GenericResult<bool>> tryInitApiByToken(final String token) async {
     final api = _adapter.api(getInitialized: false);
diff --git a/lib/logic/providers/dns_providers/digital_ocean_dns.dart b/lib/logic/providers/dns_providers/digital_ocean_dns.dart
index ca34ad16..b231c414 100644
--- a/lib/logic/providers/dns_providers/digital_ocean_dns.dart
+++ b/lib/logic/providers/dns_providers/digital_ocean_dns.dart
@@ -29,6 +29,9 @@ class DigitalOceanDnsProvider extends DnsProvider {
 
   ApiAdapter _adapter;
 
+  @override
+  DnsProviderType get type => DnsProviderType.digitalOcean;
+
   @override
   Future<GenericResult<bool>> tryInitApiByToken(final String token) async {
     final api = _adapter.api(getInitialized: false);
diff --git a/lib/logic/providers/dns_providers/dns_provider.dart b/lib/logic/providers/dns_providers/dns_provider.dart
index 14e31c32..60976f68 100644
--- a/lib/logic/providers/dns_providers/dns_provider.dart
+++ b/lib/logic/providers/dns_providers/dns_provider.dart
@@ -5,6 +5,7 @@ import 'package:selfprivacy/logic/models/json/dns_records.dart';
 export 'package:selfprivacy/logic/api_maps/generic_result.dart';
 
 abstract class DnsProvider {
+  DnsProviderType get type;
   Future<GenericResult<bool>> tryInitApiByToken(final String token);
   Future<GenericResult<String?>> getZoneId(final String domain);
   Future<GenericResult<void>> removeDomainRecords({
diff --git a/lib/logic/providers/server_providers/digital_ocean.dart b/lib/logic/providers/server_providers/digital_ocean.dart
index 01b27ef1..a745434d 100644
--- a/lib/logic/providers/server_providers/digital_ocean.dart
+++ b/lib/logic/providers/server_providers/digital_ocean.dart
@@ -46,6 +46,9 @@ class DigitalOceanServerProvider extends ServerProvider {
 
   ApiAdapter _adapter;
 
+  @override
+  ServerProviderType get type => ServerProviderType.digitalOcean;
+
   @override
   Future<GenericResult<bool>> trySetServerLocation(
     final String location,
diff --git a/lib/logic/providers/server_providers/hetzner.dart b/lib/logic/providers/server_providers/hetzner.dart
index ce0bd416..7bacb8a2 100644
--- a/lib/logic/providers/server_providers/hetzner.dart
+++ b/lib/logic/providers/server_providers/hetzner.dart
@@ -47,6 +47,9 @@ class HetznerServerProvider extends ServerProvider {
 
   ApiAdapter _adapter;
 
+  @override
+  ServerProviderType get type => ServerProviderType.hetzner;
+
   @override
   Future<GenericResult<bool>> trySetServerLocation(
     final String location,
diff --git a/lib/logic/providers/server_providers/server_provider.dart b/lib/logic/providers/server_providers/server_provider.dart
index ffb64e12..f1004192 100644
--- a/lib/logic/providers/server_providers/server_provider.dart
+++ b/lib/logic/providers/server_providers/server_provider.dart
@@ -14,6 +14,7 @@ export 'package:selfprivacy/logic/api_maps/generic_result.dart';
 export 'package:selfprivacy/logic/models/launch_installation_data.dart';
 
 abstract class ServerProvider {
+  ServerProviderType get type;
   Future<GenericResult<List<ServerBasicInfo>>> getServers();
   Future<GenericResult<bool>> trySetServerLocation(final String location);
   Future<GenericResult<bool>> tryInitApiByToken(final String token);