2020-12-30 16:13:25 +02:00
|
|
|
import 'dart:async';
|
|
|
|
|
|
|
|
import 'package:cubit_form/cubit_form.dart';
|
2022-05-17 18:55:04 +03:00
|
|
|
import 'package:easy_localization/easy_localization.dart';
|
2022-05-13 16:57:56 +03:00
|
|
|
import 'package:selfprivacy/logic/api_maps/server.dart';
|
2022-05-17 16:31:34 +03:00
|
|
|
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
|
2022-05-13 16:57:56 +03:00
|
|
|
import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart';
|
2022-05-14 05:54:40 +03:00
|
|
|
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
|
2020-12-30 16:13:25 +02:00
|
|
|
|
2022-05-11 21:37:08 +03:00
|
|
|
class RecoveryDomainFormCubit extends FormCubit {
|
2022-05-13 16:57:56 +03:00
|
|
|
RecoveryDomainFormCubit(
|
|
|
|
this.initializingCubit, final FieldCubitFactory fieldFactory) {
|
|
|
|
serverDomainField = fieldFactory.createServerDomainField();
|
2020-12-30 16:13:25 +02:00
|
|
|
|
2022-05-13 16:57:56 +03:00
|
|
|
super.addFields([serverDomainField]);
|
2020-12-30 16:13:25 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
FutureOr<void> onSubmit() async {
|
2022-05-13 16:57:56 +03:00
|
|
|
initializingCubit.setDomain(ServerDomain(
|
|
|
|
domainName: serverDomainField.state.value,
|
|
|
|
provider: DnsProvider.Unknown,
|
|
|
|
zoneId: ""));
|
2020-12-30 16:13:25 +02:00
|
|
|
}
|
|
|
|
|
2022-05-17 18:55:04 +03:00
|
|
|
@override
|
|
|
|
FutureOr<bool> asyncValidation() async {
|
|
|
|
var api = ServerApi(
|
|
|
|
hasLogger: false,
|
|
|
|
isWithToken: false,
|
|
|
|
overrideDomain: serverDomainField.state.value);
|
|
|
|
|
|
|
|
// API version doesn't require access token,
|
|
|
|
// so if the entered domain is indeed valid
|
|
|
|
// and the server by it is reachable, we will
|
|
|
|
// be able to confirm the input
|
|
|
|
|
|
|
|
final bool domainValid = await api.getApiVersion() != null;
|
|
|
|
if (!domainValid) {
|
|
|
|
serverDomainField.setError("recovering.domain_recover_error".tr());
|
|
|
|
}
|
|
|
|
|
|
|
|
return domainValid;
|
|
|
|
}
|
2021-03-26 01:30:34 +02:00
|
|
|
|
2022-05-17 16:31:34 +03:00
|
|
|
final ServerInstallationCubit initializingCubit;
|
2022-05-13 16:57:56 +03:00
|
|
|
late final FieldCubit<String> serverDomainField;
|
2020-12-30 16:13:25 +02:00
|
|
|
}
|