2021-02-15 20:58:29 +02:00
|
|
|
import 'package:cubit_form/cubit_form.dart';
|
2022-07-12 15:54:16 +03:00
|
|
|
import 'package:selfprivacy/logic/api_maps/rest_maps/cloudflare.dart';
|
2022-05-17 16:31:34 +03:00
|
|
|
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
|
2022-05-14 05:54:40 +03:00
|
|
|
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
|
2021-02-15 20:58:29 +02:00
|
|
|
|
|
|
|
class DomainSetupCubit extends Cubit<DomainSetupState> {
|
2022-05-19 20:43:25 +03:00
|
|
|
DomainSetupCubit(this.serverInstallationCubit) : super(Initial());
|
2021-02-15 20:58:29 +02:00
|
|
|
|
2022-05-19 20:43:25 +03:00
|
|
|
final ServerInstallationCubit serverInstallationCubit;
|
2021-02-15 20:58:29 +02:00
|
|
|
|
|
|
|
Future<void> load() async {
|
|
|
|
emit(Loading(LoadingTypes.loadingDomain));
|
2022-06-05 22:36:32 +03:00
|
|
|
final CloudflareApi api = CloudflareApi();
|
2021-03-26 01:30:34 +02:00
|
|
|
|
2022-06-05 22:36:32 +03:00
|
|
|
final List<String> list = await api.domainList();
|
2021-02-15 20:58:29 +02:00
|
|
|
if (list.isEmpty) {
|
|
|
|
emit(Empty());
|
|
|
|
} else if (list.length == 1) {
|
|
|
|
emit(Loaded(list.first));
|
|
|
|
} else {
|
|
|
|
emit(MoreThenOne());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
2022-06-05 22:36:32 +03:00
|
|
|
Future<void> close() => super.close();
|
2021-02-15 20:58:29 +02:00
|
|
|
|
|
|
|
Future<void> saveDomain() async {
|
|
|
|
assert(state is Loaded, 'wrong state');
|
2022-06-05 22:36:32 +03:00
|
|
|
final String domainName = (state as Loaded).domain;
|
|
|
|
final CloudflareApi api = CloudflareApi();
|
2021-02-15 20:58:29 +02:00
|
|
|
|
|
|
|
emit(Loading(LoadingTypes.saving));
|
|
|
|
|
2022-06-05 22:36:32 +03:00
|
|
|
final String zoneId = await api.getZoneId(domainName);
|
2021-02-15 20:58:29 +02:00
|
|
|
|
2022-06-05 22:36:32 +03:00
|
|
|
final ServerDomain domain = ServerDomain(
|
2021-02-15 20:58:29 +02:00
|
|
|
domainName: domainName,
|
|
|
|
zoneId: zoneId,
|
2022-05-24 21:55:39 +03:00
|
|
|
provider: DnsProvider.cloudflare,
|
2021-02-15 20:58:29 +02:00
|
|
|
);
|
|
|
|
|
2022-05-19 20:43:25 +03:00
|
|
|
serverInstallationCubit.setDomain(domain);
|
2022-02-16 09:28:29 +02:00
|
|
|
emit(DomainSet());
|
2021-02-15 20:58:29 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class DomainSetupState {}
|
|
|
|
|
|
|
|
class Initial extends DomainSetupState {}
|
|
|
|
|
|
|
|
class Empty extends DomainSetupState {}
|
|
|
|
|
|
|
|
class MoreThenOne extends DomainSetupState {}
|
|
|
|
|
|
|
|
class Loading extends DomainSetupState {
|
|
|
|
Loading(this.type);
|
|
|
|
final LoadingTypes type;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum LoadingTypes { loadingDomain, saving }
|
|
|
|
|
|
|
|
class Loaded extends DomainSetupState {
|
|
|
|
Loaded(this.domain);
|
2022-06-05 22:36:32 +03:00
|
|
|
final String domain;
|
2021-02-15 20:58:29 +02:00
|
|
|
}
|
|
|
|
|
2022-02-16 09:28:29 +02:00
|
|
|
class DomainSet extends DomainSetupState {}
|