refactor: Move all API factories into encapsulated static class

Because it's very hard to track all different provider factories created in different cubits, if users reset application config the previous factories stayed unchanged which would lead to unexpected behavior
pull/140/head
NaiJi ✨ 2022-11-18 07:07:42 +04:00
parent 268816385f
commit 0c4da8eb9f
11 changed files with 173 additions and 153 deletions

View File

@ -0,0 +1,44 @@
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
class ApiController {
static VolumeProviderApiFactory? get currentVolumeProviderApiFactory =>
_volumeProviderApiFactory;
static DnsProviderApiFactory? get currentDnsProviderApiFactory =>
_dnsProviderApiFactory;
static ServerProviderApiFactory? get currentServerProviderApiFactory =>
_serverProviderApiFactory;
static void initVolumeProviderApiFactory(
final ServerProviderApiFactorySettings settings,
) {
_volumeProviderApiFactory =
VolumeApiFactoryCreator.createVolumeProviderApiFactory(settings);
}
static void initDnsProviderApiFactory(
final DnsProviderApiFactorySettings settings,
) {
_dnsProviderApiFactory =
ApiFactoryCreator.createDnsProviderApiFactory(settings);
}
static void initServerProviderApiFactory(
final ServerProviderApiFactorySettings settings,
) {
_serverProviderApiFactory =
ApiFactoryCreator.createServerProviderApiFactory(settings);
}
static void clearProviderApiFactories() {
_volumeProviderApiFactory = null;
_dnsProviderApiFactory = null;
_serverProviderApiFactory = null;
}
static VolumeProviderApiFactory? _volumeProviderApiFactory;
static DnsProviderApiFactory? _dnsProviderApiFactory;
static ServerProviderApiFactory? _serverProviderApiFactory;
}

View File

@ -59,5 +59,5 @@ abstract class ServerProviderApi extends ApiMap {
/// Whether we request for staging temprorary certificates.
/// Hardcode to 'true' in the middle of testing to not
/// get your domain banned but constant certificate renewal
String get stagingAcme => 'false';
String get stagingAcme => 'true';
}

View File

@ -1,8 +1,6 @@
import 'package:cubit_form/cubit_form.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart';
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
import 'package:selfprivacy/logic/models/json/dns_records.dart';
@ -20,12 +18,6 @@ class DnsRecordsCubit
const DnsRecordsState(dnsState: DnsRecordsStatus.refreshing),
);
DnsProviderApiFactory? dnsProviderApiFactory =
ApiFactoryCreator.createDnsProviderApiFactory(
DnsProviderApiFactorySettings(provider: DnsProvider.cloudflare),
); // TODO: HARDCODE FOR NOW!!!
// TODO: Remove when provider selection is implemented.
final ServerApi api = ServerApi();
@override
@ -46,7 +38,8 @@ class DnsRecordsCubit
final String? ipAddress =
serverInstallationCubit.state.serverDetails?.ip4;
if (domain != null && ipAddress != null) {
final List<DnsRecord> records = await dnsProviderApiFactory!
final List<DnsRecord> records = await ApiController
.currentDnsProviderApiFactory!
.getDnsProvider()
.getDnsRecords(domain: domain);
final String? dkimPublicKey =
@ -126,7 +119,7 @@ class DnsRecordsCubit
final ServerDomain? domain = serverInstallationCubit.state.serverDomain;
final String? ipAddress = serverInstallationCubit.state.serverDetails?.ip4;
final DnsProviderApi dnsProviderApi =
dnsProviderApiFactory!.getDnsProvider();
ApiController.currentDnsProviderApiFactory!.getDnsProvider();
await dnsProviderApi.removeSimilarRecords(domain: domain!);
await dnsProviderApi.createMultipleDnsRecords(
domain: domain,

View File

@ -7,16 +7,16 @@ import 'package:selfprivacy/logic/cubit/forms/validations/validations.dart';
class DnsProviderFormCubit extends FormCubit {
DnsProviderFormCubit(this.initializingCubit) {
final RegExp regExp = initializingCubit.getDnsProviderApiTokenValidation();
//final RegExp regExp = initializingCubit.getDnsProviderApiTokenValidation();
apiKey = FieldCubit(
initalValue: '',
validations: [
RequiredStringValidation('validations.required'.tr()),
ValidationModel<String>(
/*ValidationModel<String>(
regExp.hasMatch,
'validations.invalid_format'.tr(),
),
LengthStringNotEqualValidation(40)
),*/
//LengthStringNotEqualValidation(40)
],
);

View File

@ -1,4 +1,5 @@
import 'package:cubit_form/cubit_form.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
@ -9,8 +10,7 @@ class DomainSetupCubit extends Cubit<DomainSetupState> {
Future<void> load() async {
emit(Loading(LoadingTypes.loadingDomain));
final List<String> list = await serverInstallationCubit
.repository.dnsProviderApiFactory!
final List<String> list = await ApiController.currentDnsProviderApiFactory!
.getDnsProvider()
.domainList();
if (list.isEmpty) {
@ -31,8 +31,7 @@ class DomainSetupCubit extends Cubit<DomainSetupState> {
emit(Loading(LoadingTypes.saving));
final String? zoneId = await serverInstallationCubit
.repository.dnsProviderApiFactory!
final String? zoneId = await ApiController.currentDnsProviderApiFactory!
.getDnsProvider()
.getZoneId(domainName);

View File

@ -1,11 +1,8 @@
import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/metrics/metrics_cubit.dart';
import 'package:selfprivacy/logic/models/hive/server_details.dart';
import 'package:selfprivacy/logic/models/metrics.dart';
class MetricsLoadException implements Exception {
@ -14,22 +11,10 @@ class MetricsLoadException implements Exception {
}
class MetricsRepository {
ServerProviderApiFactory? serverProviderApiFactory;
void _buildServerProviderFactory() {
final ServerProvider? providerType = getIt<ApiConfigModel>().serverProvider;
final String? location = getIt<ApiConfigModel>().serverLocation;
serverProviderApiFactory = ApiFactoryCreator.createServerProviderApiFactory(
ServerProviderApiFactorySettings(
provider: providerType ?? ServerProvider.unknown,
location: location,
),
);
}
Future<MetricsLoaded> getMetrics(final Period period) async {
if (serverProviderApiFactory == null) {
_buildServerProviderFactory();
final providerApiFactory = ApiController.currentServerProviderApiFactory;
if (providerApiFactory == null) {
throw MetricsLoadException('Server Provider data is null');
}
final DateTime end = DateTime.now();
@ -49,7 +34,7 @@ class MetricsRepository {
final serverId = getIt<ApiConfigModel>().serverDetails!.id;
final ServerMetrics? metrics =
await serverProviderApiFactory!.getServerProvider().getMetrics(
await providerApiFactory.getServerProvider().getMetrics(
serverId,
start,
end,

View File

@ -1,9 +1,7 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server_api.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart';
import 'package:selfprivacy/logic/models/disk_size.dart';
@ -17,30 +15,19 @@ class ApiProviderVolumeCubit
extends ServerInstallationDependendCubit<ApiProviderVolumeState> {
ApiProviderVolumeCubit(final ServerInstallationCubit serverInstallationCubit)
: super(serverInstallationCubit, const ApiProviderVolumeState.initial());
VolumeProviderApiFactory? providerApi;
final ServerApi serverApi = ServerApi();
@override
Future<void> load() async {
if (serverInstallationCubit.state is ServerInstallationFinished) {
final serverDetails = getIt<ApiConfigModel>().serverDetails;
final serverLocation = getIt<ApiConfigModel>().serverLocation;
providerApi = serverDetails == null
? null
: VolumeApiFactoryCreator.createVolumeProviderApiFactory(
ServerProviderApiFactorySettings(
location: serverLocation,
provider: getIt<ApiConfigModel>().serverDetails!.provider,
),
);
_refetch();
}
}
Future<Price?> getPricePerGb() async =>
providerApi!.getVolumeProvider().getPricePerGb();
ApiController.currentVolumeProviderApiFactory!
.getVolumeProvider()
.getPricePerGb();
Future<void> refresh() async {
emit(const ApiProviderVolumeState([], LoadingStatus.refreshing, false));
@ -48,12 +35,14 @@ class ApiProviderVolumeCubit
}
Future<void> _refetch() async {
if (providerApi == null) {
if (ApiController.currentVolumeProviderApiFactory == null) {
return emit(const ApiProviderVolumeState([], LoadingStatus.error, false));
}
final List<ServerVolume> volumes =
await providerApi!.getVolumeProvider().getVolumes();
final List<ServerVolume> volumes = await ApiController
.currentVolumeProviderApiFactory!
.getVolumeProvider()
.getVolumes();
if (volumes.isEmpty) {
return emit(const ApiProviderVolumeState([], LoadingStatus.error, false));
@ -64,14 +53,16 @@ class ApiProviderVolumeCubit
Future<void> attachVolume(final DiskVolume volume) async {
final ServerHostingDetails server = getIt<ApiConfigModel>().serverDetails!;
await providerApi!
await ApiController.currentVolumeProviderApiFactory!
.getVolumeProvider()
.attachVolume(volume.providerVolume!, server.id);
refresh();
}
Future<void> detachVolume(final DiskVolume volume) async {
await providerApi!.getVolumeProvider().detachVolume(volume.providerVolume!);
await ApiController.currentVolumeProviderApiFactory!
.getVolumeProvider()
.detachVolume(volume.providerVolume!);
refresh();
}
@ -84,7 +75,9 @@ class ApiProviderVolumeCubit
'Starting resize',
);
emit(state.copyWith(isResizing: true));
final bool resized = await providerApi!.getVolumeProvider().resizeVolume(
final bool resized = await ApiController.currentVolumeProviderApiFactory!
.getVolumeProvider()
.resizeVolume(
volume.providerVolume!,
newSize,
);
@ -120,8 +113,10 @@ class ApiProviderVolumeCubit
}
Future<void> createVolume() async {
final ServerVolume? volume =
await providerApi!.getVolumeProvider().createVolume();
final ServerVolume? volume = await ApiController
.currentVolumeProviderApiFactory!
.getVolumeProvider()
.createVolume();
final diskVolume = DiskVolume(providerVolume: volume);
await attachVolume(diskVolume);
@ -133,7 +128,9 @@ class ApiProviderVolumeCubit
}
Future<void> deleteVolume(final DiskVolume volume) async {
await providerApi!.getVolumeProvider().deleteVolume(volume.providerVolume!);
await ApiController.currentVolumeProviderApiFactory!
.getVolumeProvider()
.deleteVolume(volume.providerVolume!);
refresh();
}

View File

@ -1,38 +1,19 @@
import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server_api.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
import 'package:selfprivacy/logic/models/auto_upgrade_settings.dart';
import 'package:selfprivacy/logic/models/hive/server_details.dart';
import 'package:selfprivacy/logic/models/server_metadata.dart';
import 'package:selfprivacy/logic/models/timezone_settings.dart';
class ServerDetailsRepository {
ServerApi server = ServerApi();
ServerProviderApiFactory? serverProviderApiFactory;
void _buildServerProviderFactory() {
final ServerProvider? providerType = getIt<ApiConfigModel>().serverProvider;
final String? location = getIt<ApiConfigModel>().serverLocation;
serverProviderApiFactory = ApiFactoryCreator.createServerProviderApiFactory(
ServerProviderApiFactorySettings(
provider: providerType ?? ServerProvider.unknown,
location: location,
),
);
}
Future<ServerDetailsRepositoryDto> load() async {
if (serverProviderApiFactory == null) {
_buildServerProviderFactory();
}
final serverProviderApi = ApiController.currentServerProviderApiFactory;
final settings = await server.getSystemSettings();
final serverId = getIt<ApiConfigModel>().serverDetails!.id;
final metadata = await serverProviderApiFactory!
.getServerProvider()
.getMetadata(serverId);
final metadata =
await serverProviderApi!.getServerProvider().getMetadata(serverId);
return ServerDetailsRepositoryDto(
autoUpgradeSettings: settings.autoUpgradeSettings,

View File

@ -5,7 +5,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:equatable/equatable.dart';
import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server_api.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart';
@ -59,8 +59,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
void setServerProviderType(final ServerProvider providerType) async {
await repository.saveServerProviderType(providerType);
repository.serverProviderApiFactory =
ApiFactoryCreator.createServerProviderApiFactory(
ApiController.initServerProviderApiFactory(
ServerProviderApiFactorySettings(
provider: providerType,
),
@ -68,18 +67,19 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
}
ProviderApiTokenValidation serverProviderApiTokenValidation() =>
repository.serverProviderApiFactory!
ApiController.currentServerProviderApiFactory!
.getServerProvider()
.getApiTokenValidation();
RegExp getDnsProviderApiTokenValidation() => repository.dnsProviderApiFactory!
.getDnsProvider()
.getApiTokenValidation();
RegExp getDnsProviderApiTokenValidation() =>
ApiController.currentDnsProviderApiFactory!
.getDnsProvider()
.getApiTokenValidation();
Future<bool> isServerProviderApiTokenValid(
final String providerToken,
) async =>
repository.serverProviderApiFactory!
ApiController.currentServerProviderApiFactory!
.getServerProvider(
settings: const ServerProviderApiSettings(
isWithToken: false,
@ -89,19 +89,30 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
Future<bool> isDnsProviderApiTokenValid(
final String providerToken,
) async =>
repository.dnsProviderApiFactory!
.getDnsProvider(
settings: const DnsProviderApiSettings(isWithToken: false),
)
.isApiTokenValid(providerToken);
) async {
if (ApiController.currentDnsProviderApiFactory == null) {
// No other DNS provider is supported for now,
// so it's safe to hardcode Cloudflare
ApiController.initDnsProviderApiFactory(
DnsProviderApiFactorySettings(
provider: DnsProvider.cloudflare,
),
);
}
return ApiController.currentDnsProviderApiFactory!
.getDnsProvider(
settings: const DnsProviderApiSettings(isWithToken: false),
)
.isApiTokenValid(providerToken);
}
Future<List<ServerProviderLocation>> fetchAvailableLocations() async {
if (repository.serverProviderApiFactory == null) {
if (ApiController.currentServerProviderApiFactory == null) {
return [];
}
return repository.serverProviderApiFactory!
return ApiController.currentServerProviderApiFactory!
.getServerProvider()
.getAvailableLocations();
}
@ -109,11 +120,11 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
Future<List<ServerType>> fetchAvailableTypesByLocation(
final ServerProviderLocation location,
) async {
if (repository.serverProviderApiFactory == null) {
if (ApiController.currentServerProviderApiFactory == null) {
return [];
}
return repository.serverProviderApiFactory!
return ApiController.currentServerProviderApiFactory!
.getServerProvider()
.getServerTypesByLocation(location: location);
}
@ -141,8 +152,16 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
void setServerType(final ServerType serverType) async {
await repository.saveServerType(serverType);
repository.serverProviderApiFactory =
ApiFactoryCreator.createServerProviderApiFactory(
ApiController.initServerProviderApiFactory(
ServerProviderApiFactorySettings(
provider: getIt<ApiConfigModel>().serverProvider!,
location: serverType.location.identifier,
),
);
// All server providers support volumes for now,
// so it's safe to initialize.
ApiController.initVolumeProviderApiFactory(
ServerProviderApiFactorySettings(
provider: getIt<ApiConfigModel>().serverProvider!,
location: serverType.location.identifier,
@ -162,6 +181,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
return;
}
await repository.saveCloudFlareKey(cloudFlareKey);
emit(
(state as ServerInstallationNotFinished)
.copyWith(cloudFlareKey: cloudFlareKey),
@ -677,7 +697,7 @@ class ServerInstallationCubit extends Cubit<ServerInstallationState> {
void clearAppConfig() {
closeTimer();
ApiController.clearProviderApiFactories();
repository.clearAppConfig();
emit(const ServerInstallationEmpty());
}

View File

@ -9,14 +9,12 @@ import 'package:hive/hive.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/config/hive_config.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_controller.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server_api.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart';
import 'package:selfprivacy/logic/models/hive/server_details.dart';
@ -43,13 +41,6 @@ class ServerAuthorizationException implements Exception {
class ServerInstallationRepository {
Box box = Hive.box(BNames.serverInstallationBox);
Box<User> usersBox = Hive.box(BNames.usersBox);
ServerProviderApiFactory? serverProviderApiFactory;
DnsProviderApiFactory? dnsProviderApiFactory =
ApiFactoryCreator.createDnsProviderApiFactory(
DnsProviderApiFactorySettings(
provider: DnsProvider.cloudflare,
), // TODO: HARDCODE FOR NOW!!!
);
Future<ServerInstallationState> load() async {
final String? providerApiToken = getIt<ApiConfigModel>().serverProviderKey;
@ -67,8 +58,16 @@ class ServerInstallationRepository {
if (serverProvider != null ||
(serverDetails != null &&
serverDetails.provider != ServerProvider.unknown)) {
serverProviderApiFactory =
ApiFactoryCreator.createServerProviderApiFactory(
ApiController.initServerProviderApiFactory(
ServerProviderApiFactorySettings(
provider: serverProvider ?? serverDetails!.provider,
location: location,
),
);
// All current providers support volumes
// so it's safe to hardcode for now
ApiController.initVolumeProviderApiFactory(
ServerProviderApiFactorySettings(
provider: serverProvider ?? serverDetails!.provider,
location: location,
@ -77,7 +76,7 @@ class ServerInstallationRepository {
}
if (serverDomain != null && serverDomain.provider != DnsProvider.unknown) {
dnsProviderApiFactory = ApiFactoryCreator.createDnsProviderApiFactory(
ApiController.initDnsProviderApiFactory(
DnsProviderApiFactorySettings(
provider: serverDomain.provider,
),
@ -168,14 +167,16 @@ class ServerInstallationRepository {
) async {
ServerHostingDetails serverDetails;
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider();
serverDetails = await api.powerOn();
serverDetails = await ApiController.currentServerProviderApiFactory!
.getServerProvider()
.powerOn();
return serverDetails;
}
Future<String?> getDomainId(final String token, final String domain) async {
final DnsProviderApi dnsProviderApi = dnsProviderApiFactory!.getDnsProvider(
final DnsProviderApi dnsProviderApi =
ApiController.currentDnsProviderApiFactory!.getDnsProvider(
settings: DnsProviderApiSettings(
isWithToken: false,
customToken: token,
@ -244,7 +245,8 @@ class ServerInstallationRepository {
required final Future<void> Function(ServerHostingDetails serverDetails)
onSuccess,
}) async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider();
final ServerProviderApi api =
ApiController.currentServerProviderApiFactory!.getServerProvider();
try {
final ServerHostingDetails? serverDetails = await api.createServer(
dnsApiToken: cloudFlareKey,
@ -328,9 +330,9 @@ class ServerInstallationRepository {
required final void Function() onCancel,
}) async {
final DnsProviderApi dnsProviderApi =
dnsProviderApiFactory!.getDnsProvider();
ApiController.currentDnsProviderApiFactory!.getDnsProvider();
final ServerProviderApi serverApi =
serverProviderApiFactory!.getServerProvider();
ApiController.currentServerProviderApiFactory!.getServerProvider();
await dnsProviderApi.removeSimilarRecords(
ip4: serverDetails.ip4,
@ -370,7 +372,7 @@ class ServerInstallationRepository {
Future<void> createDkimRecord(final ServerDomain cloudFlareDomain) async {
final DnsProviderApi dnsProviderApi =
dnsProviderApiFactory!.getDnsProvider();
ApiController.currentDnsProviderApiFactory!.getDnsProvider();
final ServerApi api = ServerApi();
late DnsRecord record;
@ -389,15 +391,15 @@ class ServerInstallationRepository {
return api.isHttpServerWorking();
}
Future<ServerHostingDetails> restart() async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider();
return api.restart();
}
Future<ServerHostingDetails> restart() async =>
ApiController.currentServerProviderApiFactory!
.getServerProvider()
.restart();
Future<ServerHostingDetails> powerOn() async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider();
return api.powerOn();
}
Future<ServerHostingDetails> powerOn() async =>
ApiController.currentServerProviderApiFactory!
.getServerProvider()
.powerOn();
Future<ServerRecoveryCapabilities> getRecoveryCapabilities(
final ServerDomain serverDomain,
@ -632,10 +634,10 @@ class ServerInstallationRepository {
}
}
Future<List<ServerBasicInfo>> getServersOnProviderAccount() async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider();
return api.getServers();
}
Future<List<ServerBasicInfo>> getServersOnProviderAccount() async =>
ApiController.currentServerProviderApiFactory!
.getServerProvider()
.getServers();
Future<void> saveServerDetails(
final ServerHostingDetails serverDetails,
@ -724,13 +726,11 @@ class ServerInstallationRepository {
}
Future<void> deleteServer(final ServerDomain serverDomain) async {
final ServerProviderApi api = serverProviderApiFactory!.getServerProvider();
final DnsProviderApi dnsProviderApi =
dnsProviderApiFactory!.getDnsProvider();
await api.deleteServer(
domainName: serverDomain.domainName,
);
await ApiController.currentServerProviderApiFactory!
.getServerProvider()
.deleteServer(
domainName: serverDomain.domainName,
);
await box.put(BNames.hasFinalChecked, false);
await box.put(BNames.isServerStarted, false);
@ -739,7 +739,9 @@ class ServerInstallationRepository {
await box.put(BNames.isLoading, false);
await box.put(BNames.serverDetails, null);
await dnsProviderApi.removeSimilarRecords(domain: serverDomain);
await ApiController.currentDnsProviderApiFactory!
.getDnsProvider()
.removeSimilarRecords(domain: serverDomain);
}
Future<void> deleteServerRelatedRecords() async {

View File

@ -206,9 +206,8 @@ class InitializingPage extends StatelessWidget {
),
const Spacer(),
BrandButton.rised(
onPressed: formCubitState.isSubmitting
? null
: () => context.read<DnsProviderFormCubit>().trySubmit(),
onPressed: () =>
context.read<DnsProviderFormCubit>().trySubmit(),
text: 'basis.connect'.tr(),
),
const SizedBox(height: 10),