2021-02-15 18:58:29 +00:00
|
|
|
import 'package:cubit_form/cubit_form.dart';
|
2023-05-30 15:48:18 +00:00
|
|
|
import 'package:selfprivacy/logic/api_maps/generic_result.dart';
|
2022-05-17 13:31:34 +00:00
|
|
|
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
|
2022-05-14 02:54:40 +00:00
|
|
|
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
|
2023-05-03 03:01:44 +00:00
|
|
|
import 'package:selfprivacy/logic/providers/providers_controller.dart';
|
2021-02-15 18:58:29 +00:00
|
|
|
|
|
|
|
class DomainSetupCubit extends Cubit<DomainSetupState> {
|
2022-05-19 17:43:25 +00:00
|
|
|
DomainSetupCubit(this.serverInstallationCubit) : super(Initial());
|
2021-02-15 18:58:29 +00:00
|
|
|
|
2022-05-19 17:43:25 +00:00
|
|
|
final ServerInstallationCubit serverInstallationCubit;
|
2021-02-15 18:58:29 +00:00
|
|
|
|
|
|
|
Future<void> load() async {
|
|
|
|
emit(Loading(LoadingTypes.loadingDomain));
|
2023-11-09 14:48:49 +00:00
|
|
|
final GenericResult<List<ServerDomain>> result =
|
2023-05-03 03:01:44 +00:00
|
|
|
await ProvidersController.currentDnsProvider!.domainList();
|
2023-05-30 15:48:18 +00:00
|
|
|
if (!result.success || result.data.isEmpty) {
|
2021-02-15 18:58:29 +00:00
|
|
|
emit(Empty());
|
2023-05-30 15:48:18 +00:00
|
|
|
} else if (result.data.length == 1) {
|
2023-11-09 14:48:49 +00:00
|
|
|
emit(Loaded(result.data.first.domainName));
|
2021-02-15 18:58:29 +00:00
|
|
|
} else {
|
2023-11-09 14:48:49 +00:00
|
|
|
emit(
|
|
|
|
MoreThenOne(
|
|
|
|
result.data
|
|
|
|
.map<String>(
|
|
|
|
(final d) => d.domainName,
|
|
|
|
)
|
|
|
|
.toList(),
|
|
|
|
),
|
|
|
|
);
|
2021-02-15 18:58:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-09-08 05:54:28 +00:00
|
|
|
Future<void> saveDomain(final String domainName) async {
|
2021-02-15 18:58:29 +00:00
|
|
|
emit(Loading(LoadingTypes.saving));
|
|
|
|
|
2023-06-02 05:44:34 +00:00
|
|
|
final dnsProvider = ProvidersController.currentDnsProvider!;
|
2021-02-15 18:58:29 +00:00
|
|
|
|
2023-08-01 02:40:25 +00:00
|
|
|
final ServerDomain domain = ServerDomain(
|
|
|
|
domainName: domainName,
|
|
|
|
provider: dnsProvider.type,
|
|
|
|
);
|
2021-02-15 18:58:29 +00:00
|
|
|
|
2023-08-01 02:40:25 +00:00
|
|
|
serverInstallationCubit.setDomain(domain);
|
|
|
|
emit(DomainSet());
|
2021-02-15 18:58:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class DomainSetupState {}
|
|
|
|
|
|
|
|
class Initial extends DomainSetupState {}
|
|
|
|
|
|
|
|
class Empty extends DomainSetupState {}
|
|
|
|
|
2023-09-08 05:54:28 +00:00
|
|
|
class MoreThenOne extends DomainSetupState {
|
|
|
|
MoreThenOne(this.domains);
|
|
|
|
final List<String> domains;
|
|
|
|
}
|
2021-02-15 18:58:29 +00:00
|
|
|
|
|
|
|
class Loading extends DomainSetupState {
|
|
|
|
Loading(this.type);
|
|
|
|
final LoadingTypes type;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum LoadingTypes { loadingDomain, saving }
|
|
|
|
|
|
|
|
class Loaded extends DomainSetupState {
|
|
|
|
Loaded(this.domain);
|
2022-06-05 19:36:32 +00:00
|
|
|
final String domain;
|
2021-02-15 18:58:29 +00:00
|
|
|
}
|
|
|
|
|
2022-02-16 07:28:29 +00:00
|
|
|
class DomainSet extends DomainSetupState {}
|