selfprivacy.org.app/lib/logic/cubit/server_installation/server_installation_state.dart

323 lines
9.6 KiB
Dart
Raw Normal View History

part of '../server_installation/server_installation_cubit.dart';
2021-01-06 19:35:57 +02:00
abstract class ServerInstallationState extends Equatable {
const ServerInstallationState({
2022-07-12 15:54:16 +03:00
required this.providerApiToken,
2021-03-15 17:39:44 +02:00
required this.cloudFlareKey,
required this.backblazeCredential,
required this.serverDomain,
2021-03-15 17:39:44 +02:00
required this.rootUser,
required this.serverDetails,
2021-03-15 17:39:44 +02:00
required this.isServerStarted,
2021-03-31 14:37:39 +03:00
required this.isServerResetedFirstTime,
required this.isServerResetedSecondTime,
2021-01-06 19:35:57 +02:00
});
@override
2021-03-15 17:39:44 +02:00
List<Object?> get props => [
2022-07-12 15:54:16 +03:00
providerApiToken,
2021-01-06 19:35:57 +02:00
cloudFlareKey,
2021-02-03 22:26:38 +02:00
backblazeCredential,
serverDomain,
2021-01-06 19:35:57 +02:00
rootUser,
serverDetails,
2021-02-16 20:48:15 +02:00
isServerStarted,
2021-03-31 14:37:39 +03:00
isServerResetedFirstTime,
2021-01-06 19:35:57 +02:00
];
2022-07-12 15:54:16 +03:00
final String? providerApiToken;
2021-03-15 17:39:44 +02:00
final String? cloudFlareKey;
final BackblazeCredential? backblazeCredential;
final ServerDomain? serverDomain;
2021-03-15 17:39:44 +02:00
final User? rootUser;
final ServerHostingDetails? serverDetails;
2021-03-23 21:50:11 +02:00
final bool isServerStarted;
2021-03-31 14:37:39 +03:00
final bool isServerResetedFirstTime;
final bool isServerResetedSecondTime;
bool get isServerProviderFilled => providerApiToken != null;
bool get isDnsProviderFilled => cloudFlareKey != null;
bool get isBackupsProviderFilled => backblazeCredential != null;
bool get isDomainSelected => serverDomain != null;
bool get isPrimaryUserFilled => rootUser != null;
bool get isServerCreated => serverDetails != null;
2021-01-21 23:01:42 +02:00
2022-06-05 22:36:32 +03:00
bool get isFullyInitilized => _fulfilementList.every((final el) => el!);
ServerSetupProgress get progress => ServerSetupProgress
.values[_fulfilementList.where((final el) => el!).length];
2021-06-21 00:08:52 +03:00
int get porgressBar {
if (progress.index < 6) {
return progress.index;
} else if (progress.index < 10) {
2021-06-21 00:08:52 +03:00
return 6;
} else {
return 7;
}
}
2021-01-06 19:35:57 +02:00
2021-03-25 10:32:00 +02:00
List<bool?> get _fulfilementList {
2022-06-05 22:36:32 +03:00
final List<bool> res = [
isServerProviderFilled,
isDnsProviderFilled,
isBackupsProviderFilled,
isDomainSelected,
isPrimaryUserFilled,
2021-03-25 10:32:00 +02:00
isServerCreated,
isServerStarted,
2021-03-31 14:37:39 +03:00
isServerResetedFirstTime,
isServerResetedSecondTime,
2021-03-25 10:32:00 +02:00
];
2021-03-30 20:38:40 +03:00
2021-03-25 10:32:00 +02:00
return res;
}
2021-01-06 19:35:57 +02:00
}
class TimerState extends ServerInstallationNotFinished {
2021-02-15 20:58:29 +02:00
TimerState({
2021-03-15 17:39:44 +02:00
required this.dataState,
2022-06-05 22:36:32 +03:00
required final super.isLoading,
2021-02-15 20:58:29 +02:00
this.timerStart,
this.duration,
2021-02-16 20:48:15 +02:00
}) : super(
2022-07-12 15:54:16 +03:00
providerApiToken: dataState.providerApiToken,
2021-02-16 20:48:15 +02:00
cloudFlareKey: dataState.cloudFlareKey,
backblazeCredential: dataState.backblazeCredential,
serverDomain: dataState.serverDomain,
2021-02-16 20:48:15 +02:00
rootUser: dataState.rootUser,
serverDetails: dataState.serverDetails,
2021-02-16 20:48:15 +02:00
isServerStarted: dataState.isServerStarted,
2021-03-31 14:37:39 +03:00
isServerResetedFirstTime: dataState.isServerResetedFirstTime,
isServerResetedSecondTime: dataState.isServerResetedSecondTime,
2022-02-08 08:59:19 +02:00
dnsMatches: dataState.dnsMatches,
2021-02-16 20:48:15 +02:00
);
2021-02-15 20:58:29 +02:00
final ServerInstallationNotFinished dataState;
2021-03-15 17:39:44 +02:00
final DateTime? timerStart;
final Duration? duration;
2021-02-15 20:58:29 +02:00
@override
2021-03-15 17:39:44 +02:00
List<Object?> get props => [
2021-02-15 20:58:29 +02:00
dataState,
timerStart,
duration,
];
}
enum ServerSetupProgress {
nothingYet,
hetznerFilled,
cloudFlareFilled,
backblazeFilled,
domainFilled,
userFilled,
serverCreated,
serverStarted,
serverResetedFirstTime,
serverResetedSecondTime,
}
class ServerInstallationNotFinished extends ServerInstallationState {
2022-05-24 21:55:39 +03:00
const ServerInstallationNotFinished({
2022-06-05 22:36:32 +03:00
required final super.isServerStarted,
required final super.isServerResetedFirstTime,
required final super.isServerResetedSecondTime,
required final this.isLoading,
2022-02-08 08:59:19 +02:00
required this.dnsMatches,
2022-07-12 15:54:16 +03:00
final super.providerApiToken,
2022-06-05 22:36:32 +03:00
final super.cloudFlareKey,
final super.backblazeCredential,
final super.serverDomain,
final super.rootUser,
final super.serverDetails,
});
final bool isLoading;
final Map<String, bool>? dnsMatches;
@override
List<Object?> get props => [
2022-07-12 15:54:16 +03:00
providerApiToken,
cloudFlareKey,
backblazeCredential,
serverDomain,
rootUser,
serverDetails,
isServerStarted,
isServerResetedFirstTime,
2022-02-08 08:59:19 +02:00
isLoading,
dnsMatches,
];
ServerInstallationNotFinished copyWith({
2022-07-12 15:54:16 +03:00
final String? providerApiToken,
2022-06-05 22:36:32 +03:00
final String? cloudFlareKey,
final BackblazeCredential? backblazeCredential,
final ServerDomain? serverDomain,
final User? rootUser,
final ServerHostingDetails? serverDetails,
final bool? isServerStarted,
final bool? isServerResetedFirstTime,
final bool? isServerResetedSecondTime,
final bool? isLoading,
final Map<String, bool>? dnsMatches,
}) =>
ServerInstallationNotFinished(
2022-07-12 15:54:16 +03:00
providerApiToken: providerApiToken ?? this.providerApiToken,
cloudFlareKey: cloudFlareKey ?? this.cloudFlareKey,
backblazeCredential: backblazeCredential ?? this.backblazeCredential,
serverDomain: serverDomain ?? this.serverDomain,
rootUser: rootUser ?? this.rootUser,
serverDetails: serverDetails ?? this.serverDetails,
isServerStarted: isServerStarted ?? this.isServerStarted,
isServerResetedFirstTime:
isServerResetedFirstTime ?? this.isServerResetedFirstTime,
isServerResetedSecondTime:
isServerResetedSecondTime ?? this.isServerResetedSecondTime,
isLoading: isLoading ?? this.isLoading,
2022-02-08 08:59:19 +02:00
dnsMatches: dnsMatches ?? this.dnsMatches,
);
ServerInstallationFinished finish() => ServerInstallationFinished(
2022-07-12 15:54:16 +03:00
providerApiToken: providerApiToken!,
cloudFlareKey: cloudFlareKey!,
backblazeCredential: backblazeCredential!,
serverDomain: serverDomain!,
rootUser: rootUser!,
serverDetails: serverDetails!,
isServerStarted: isServerStarted,
isServerResetedFirstTime: isServerResetedFirstTime,
isServerResetedSecondTime: isServerResetedSecondTime,
);
}
class ServerInstallationEmpty extends ServerInstallationNotFinished {
2022-05-24 21:55:39 +03:00
const ServerInstallationEmpty()
: super(
2022-07-12 15:54:16 +03:00
providerApiToken: null,
cloudFlareKey: null,
backblazeCredential: null,
serverDomain: null,
rootUser: null,
serverDetails: null,
isServerStarted: false,
isServerResetedFirstTime: false,
isServerResetedSecondTime: false,
isLoading: false,
2022-02-08 08:59:19 +02:00
dnsMatches: null,
);
}
class ServerInstallationFinished extends ServerInstallationState {
const ServerInstallationFinished({
2022-07-12 15:54:16 +03:00
required final String super.providerApiToken,
2022-06-05 22:36:32 +03:00
required final String super.cloudFlareKey,
required final BackblazeCredential super.backblazeCredential,
required final ServerDomain super.serverDomain,
required final User super.rootUser,
required final ServerHostingDetails super.serverDetails,
required final super.isServerStarted,
required final super.isServerResetedFirstTime,
required final super.isServerResetedSecondTime,
});
@override
List<Object?> get props => [
2022-07-12 15:54:16 +03:00
providerApiToken,
cloudFlareKey,
backblazeCredential,
serverDomain,
rootUser,
serverDetails,
isServerStarted,
isServerResetedFirstTime,
];
}
enum RecoveryStep {
2022-05-24 21:55:39 +03:00
selecting,
recoveryKey,
newDeviceKey,
oldToken,
serverProviderToken,
2022-05-24 21:55:39 +03:00
serverSelection,
cloudflareToken,
backblazeToken,
}
enum ServerRecoveryCapabilities {
none,
legacy,
loginTokens,
}
enum ServerRecoveryMethods {
newDeviceKey,
recoveryKey,
oldToken,
}
class ServerInstallationRecovery extends ServerInstallationState {
const ServerInstallationRecovery({
2022-05-24 21:55:39 +03:00
required this.currentStep,
required this.recoveryCapabilities,
2022-07-12 15:54:16 +03:00
final super.providerApiToken,
2022-06-05 22:36:32 +03:00
final super.cloudFlareKey,
final super.backblazeCredential,
final super.serverDomain,
final super.rootUser,
final super.serverDetails,
}) : super(
isServerStarted: true,
isServerResetedFirstTime: true,
isServerResetedSecondTime: true,
);
2022-06-05 22:36:32 +03:00
final RecoveryStep currentStep;
final ServerRecoveryCapabilities recoveryCapabilities;
@override
List<Object?> get props => [
2022-07-12 15:54:16 +03:00
providerApiToken,
cloudFlareKey,
backblazeCredential,
serverDomain,
rootUser,
serverDetails,
isServerStarted,
isServerResetedFirstTime,
currentStep
];
ServerInstallationRecovery copyWith({
2022-07-12 15:54:16 +03:00
final String? providerApiToken,
2022-06-05 22:36:32 +03:00
final String? cloudFlareKey,
final BackblazeCredential? backblazeCredential,
final ServerDomain? serverDomain,
final User? rootUser,
final ServerHostingDetails? serverDetails,
final RecoveryStep? currentStep,
final ServerRecoveryCapabilities? recoveryCapabilities,
}) =>
ServerInstallationRecovery(
2022-07-12 15:54:16 +03:00
providerApiToken: providerApiToken ?? this.providerApiToken,
cloudFlareKey: cloudFlareKey ?? this.cloudFlareKey,
backblazeCredential: backblazeCredential ?? this.backblazeCredential,
serverDomain: serverDomain ?? this.serverDomain,
rootUser: rootUser ?? this.rootUser,
serverDetails: serverDetails ?? this.serverDetails,
currentStep: currentStep ?? this.currentStep,
recoveryCapabilities: recoveryCapabilities ?? this.recoveryCapabilities,
);
2022-05-23 17:21:34 +03:00
2022-06-05 22:36:32 +03:00
ServerInstallationFinished finish() => ServerInstallationFinished(
2022-07-12 15:54:16 +03:00
providerApiToken: providerApiToken!,
cloudFlareKey: cloudFlareKey!,
backblazeCredential: backblazeCredential!,
serverDomain: serverDomain!,
rootUser: rootUser!,
serverDetails: serverDetails!,
isServerStarted: true,
isServerResetedFirstTime: true,
isServerResetedSecondTime: true,
);
}