2024-02-20 17:09:14 +00:00
|
|
|
import 'dart:async';
|
|
|
|
|
2021-03-26 13:38:39 +00:00
|
|
|
import 'package:selfprivacy/config/get_it_config.dart';
|
2024-01-26 14:46:09 +00:00
|
|
|
import 'package:selfprivacy/logic/cubit/server_connection_dependent/server_connection_dependent_cubit.dart';
|
2022-09-14 23:31:25 +00:00
|
|
|
import 'package:selfprivacy/logic/models/auto_upgrade_settings.dart';
|
2022-11-11 03:32:01 +00:00
|
|
|
import 'package:selfprivacy/logic/models/server_metadata.dart';
|
2024-03-09 16:30:43 +00:00
|
|
|
import 'package:selfprivacy/logic/models/ssh_settings.dart';
|
2024-02-20 17:09:14 +00:00
|
|
|
import 'package:selfprivacy/logic/models/system_settings.dart';
|
2022-02-08 21:01:08 +00:00
|
|
|
import 'package:selfprivacy/logic/models/timezone_settings.dart';
|
2024-02-20 17:09:14 +00:00
|
|
|
import 'package:selfprivacy/logic/providers/providers_controller.dart';
|
2021-03-26 13:38:39 +00:00
|
|
|
|
|
|
|
part 'server_detailed_info_state.dart';
|
|
|
|
|
2022-09-16 08:06:27 +00:00
|
|
|
class ServerDetailsCubit
|
2024-01-26 14:46:09 +00:00
|
|
|
extends ServerConnectionDependentCubit<ServerDetailsState> {
|
2024-02-20 17:09:14 +00:00
|
|
|
ServerDetailsCubit() : super(const ServerDetailsInitial()) {
|
|
|
|
final apiConnectionRepository = getIt<ApiConnectionRepository>();
|
|
|
|
_apiDataSubscription = apiConnectionRepository.dataStream.listen(
|
|
|
|
(final ApiData apiData) {
|
|
|
|
if (apiData.settings.data != null) {
|
|
|
|
_handleServerSettings(apiData.settings.data!);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
);
|
|
|
|
}
|
2021-03-26 13:38:39 +00:00
|
|
|
|
2024-02-20 17:09:14 +00:00
|
|
|
StreamSubscription? _apiDataSubscription;
|
|
|
|
|
|
|
|
void _handleServerSettings(final SystemSettings settings) {
|
|
|
|
emit(
|
|
|
|
Loaded(
|
|
|
|
metadata: state.metadata,
|
|
|
|
serverTimezone: TimeZoneSettings.fromString(settings.timezone),
|
|
|
|
autoUpgradeSettings: settings.autoUpgradeSettings,
|
2024-03-09 16:30:43 +00:00
|
|
|
sshSettings: settings.sshSettings,
|
2024-02-20 17:09:14 +00:00
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<List<ServerMetadataEntity>> get _metadata async {
|
|
|
|
List<ServerMetadataEntity> data = [];
|
|
|
|
|
|
|
|
final serverProviderApi = ProvidersController.currentServerProvider;
|
|
|
|
final dnsProviderApi = ProvidersController.currentDnsProvider;
|
|
|
|
if (serverProviderApi != null && dnsProviderApi != null) {
|
|
|
|
final serverId = getIt<ApiConfigModel>().serverDetails?.id ?? 0;
|
|
|
|
final metadataResult = await serverProviderApi.getMetadata(serverId);
|
|
|
|
metadataResult.data.add(
|
|
|
|
ServerMetadataEntity(
|
|
|
|
trId: 'server.dns_provider',
|
|
|
|
value: dnsProviderApi.type.displayName,
|
|
|
|
type: MetadataType.other,
|
|
|
|
),
|
|
|
|
);
|
|
|
|
|
|
|
|
data = metadataResult.data;
|
|
|
|
}
|
|
|
|
|
|
|
|
return data;
|
|
|
|
}
|
2021-03-26 13:38:39 +00:00
|
|
|
|
|
|
|
void check() async {
|
2022-06-05 19:36:32 +00:00
|
|
|
final bool isReadyToCheck = getIt<ApiConfigModel>().serverDetails != null;
|
2022-09-16 07:50:05 +00:00
|
|
|
try {
|
|
|
|
if (isReadyToCheck) {
|
2024-02-20 17:09:14 +00:00
|
|
|
emit(const ServerDetailsLoading());
|
|
|
|
final List<ServerMetadataEntity> metadata = await _metadata;
|
2022-09-16 07:50:05 +00:00
|
|
|
emit(
|
2024-02-20 17:09:14 +00:00
|
|
|
state.copyWith(
|
|
|
|
metadata: metadata,
|
2022-09-16 07:50:05 +00:00
|
|
|
),
|
|
|
|
);
|
|
|
|
} else {
|
2024-02-20 17:09:14 +00:00
|
|
|
emit(const ServerDetailsNotReady());
|
2022-09-16 07:50:05 +00:00
|
|
|
}
|
|
|
|
} on StateError {
|
|
|
|
print('Tried to emit server info state when cubit is closed');
|
2021-03-26 13:38:39 +00:00
|
|
|
}
|
|
|
|
}
|
2022-09-16 08:06:27 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
void clear() {
|
2024-02-20 17:09:14 +00:00
|
|
|
emit(const ServerDetailsNotReady());
|
2022-09-16 08:06:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void load() async {
|
|
|
|
check();
|
|
|
|
}
|
2024-02-20 17:09:14 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
Future<void> close() {
|
|
|
|
_apiDataSubscription?.cancel();
|
|
|
|
return super.close();
|
|
|
|
}
|
2021-03-26 13:38:39 +00:00
|
|
|
}
|