2021-01-06 17:35:57 +00:00
|
|
|
part of 'app_config_cubit.dart';
|
|
|
|
|
2021-10-11 21:10:04 +00:00
|
|
|
abstract class AppConfigState extends Equatable {
|
2021-01-06 17:35:57 +00:00
|
|
|
const AppConfigState({
|
2021-03-15 15:39:44 +00:00
|
|
|
required this.hetznerKey,
|
|
|
|
required this.cloudFlareKey,
|
|
|
|
required this.backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
required this.serverDomain,
|
2021-03-15 15:39:44 +00:00
|
|
|
required this.rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
required this.serverDetails,
|
2021-03-15 15:39:44 +00:00
|
|
|
required this.isServerStarted,
|
2021-03-31 11:37:39 +00:00
|
|
|
required this.isServerResetedFirstTime,
|
|
|
|
required this.isServerResetedSecondTime,
|
2021-01-06 17:35:57 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
@override
|
2021-03-15 15:39:44 +00:00
|
|
|
List<Object?> get props => [
|
2021-01-06 17:35:57 +00:00
|
|
|
hetznerKey,
|
|
|
|
cloudFlareKey,
|
2021-02-03 20:26:38 +00:00
|
|
|
backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain,
|
2021-01-06 17:35:57 +00:00
|
|
|
rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails,
|
2021-02-16 18:48:15 +00:00
|
|
|
isServerStarted,
|
2021-03-31 11:37:39 +00:00
|
|
|
isServerResetedFirstTime,
|
2021-01-06 17:35:57 +00:00
|
|
|
];
|
|
|
|
|
2021-03-15 15:39:44 +00:00
|
|
|
final String? hetznerKey;
|
|
|
|
final String? cloudFlareKey;
|
|
|
|
final BackblazeCredential? backblazeCredential;
|
2022-05-13 13:57:56 +00:00
|
|
|
final ServerDomain? serverDomain;
|
2021-03-15 15:39:44 +00:00
|
|
|
final User? rootUser;
|
2022-05-13 13:57:56 +00:00
|
|
|
final ServerHostingDetails? serverDetails;
|
2021-03-23 19:50:11 +00:00
|
|
|
final bool isServerStarted;
|
2021-03-31 11:37:39 +00:00
|
|
|
final bool isServerResetedFirstTime;
|
|
|
|
final bool isServerResetedSecondTime;
|
|
|
|
|
2021-01-06 17:35:57 +00:00
|
|
|
bool get isHetznerFilled => hetznerKey != null;
|
|
|
|
bool get isCloudFlareFilled => cloudFlareKey != null;
|
2021-02-03 20:26:38 +00:00
|
|
|
bool get isBackblazeFilled => backblazeCredential != null;
|
2022-05-13 13:57:56 +00:00
|
|
|
bool get isDomainFilled => serverDomain != null;
|
2021-01-06 17:35:57 +00:00
|
|
|
bool get isUserFilled => rootUser != null;
|
2022-05-13 13:57:56 +00:00
|
|
|
bool get isServerCreated => serverDetails != null;
|
2021-01-21 21:01:42 +00:00
|
|
|
|
2021-10-13 21:49:24 +00:00
|
|
|
bool get isFullyInitilized => _fulfilementList.every((el) => el!);
|
2022-05-13 13:57:56 +00:00
|
|
|
ServerSetupProgress get progress =>
|
|
|
|
ServerSetupProgress.values[_fulfilementList.where((el) => el!).length];
|
2021-06-20 21:08:52 +00:00
|
|
|
|
|
|
|
int get porgressBar {
|
2022-05-13 13:57:56 +00:00
|
|
|
if (progress.index < 6) {
|
|
|
|
return progress.index;
|
|
|
|
} else if (progress.index < 10) {
|
2021-06-20 21:08:52 +00:00
|
|
|
return 6;
|
|
|
|
} else {
|
|
|
|
return 7;
|
|
|
|
}
|
|
|
|
}
|
2021-01-06 17:35:57 +00:00
|
|
|
|
2021-03-25 08:32:00 +00:00
|
|
|
List<bool?> get _fulfilementList {
|
|
|
|
var res = [
|
|
|
|
isHetznerFilled,
|
|
|
|
isCloudFlareFilled,
|
|
|
|
isBackblazeFilled,
|
|
|
|
isDomainFilled,
|
|
|
|
isUserFilled,
|
|
|
|
isServerCreated,
|
|
|
|
isServerStarted,
|
2021-03-31 11:37:39 +00:00
|
|
|
isServerResetedFirstTime,
|
|
|
|
isServerResetedSecondTime,
|
2021-03-25 08:32:00 +00:00
|
|
|
];
|
2021-03-30 17:38:40 +00:00
|
|
|
|
2021-03-25 08:32:00 +00:00
|
|
|
return res;
|
|
|
|
}
|
2021-01-06 17:35:57 +00:00
|
|
|
}
|
|
|
|
|
2021-09-29 13:08:19 +00:00
|
|
|
class TimerState extends AppConfigNotFinished {
|
2021-02-15 18:58:29 +00:00
|
|
|
TimerState({
|
2021-03-15 15:39:44 +00:00
|
|
|
required this.dataState,
|
2021-02-15 18:58:29 +00:00
|
|
|
this.timerStart,
|
|
|
|
this.duration,
|
2021-03-15 15:39:44 +00:00
|
|
|
required bool isLoading,
|
2021-02-16 18:48:15 +00:00
|
|
|
}) : super(
|
|
|
|
hetznerKey: dataState.hetznerKey,
|
|
|
|
cloudFlareKey: dataState.cloudFlareKey,
|
|
|
|
backblazeCredential: dataState.backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain: dataState.serverDomain,
|
2021-02-16 18:48:15 +00:00
|
|
|
rootUser: dataState.rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails: dataState.serverDetails,
|
2021-02-16 18:48:15 +00:00
|
|
|
isServerStarted: dataState.isServerStarted,
|
2021-03-31 11:37:39 +00:00
|
|
|
isServerResetedFirstTime: dataState.isServerResetedFirstTime,
|
|
|
|
isServerResetedSecondTime: dataState.isServerResetedSecondTime,
|
2021-02-16 18:48:15 +00:00
|
|
|
isLoading: isLoading,
|
2022-02-08 06:59:19 +00:00
|
|
|
dnsMatches: dataState.dnsMatches,
|
2021-02-16 18:48:15 +00:00
|
|
|
);
|
2021-02-15 18:58:29 +00:00
|
|
|
|
2021-09-29 13:08:19 +00:00
|
|
|
final AppConfigNotFinished dataState;
|
2021-03-15 15:39:44 +00:00
|
|
|
final DateTime? timerStart;
|
|
|
|
final Duration? duration;
|
2021-02-15 18:58:29 +00:00
|
|
|
|
|
|
|
@override
|
2021-03-15 15:39:44 +00:00
|
|
|
List<Object?> get props => [
|
2021-02-15 18:58:29 +00:00
|
|
|
dataState,
|
|
|
|
timerStart,
|
|
|
|
duration,
|
|
|
|
];
|
|
|
|
}
|
2021-09-29 13:08:19 +00:00
|
|
|
|
2022-05-13 13:57:56 +00:00
|
|
|
enum ServerSetupProgress {
|
|
|
|
nothingYet,
|
|
|
|
hetznerFilled,
|
|
|
|
cloudFlareFilled,
|
|
|
|
backblazeFilled,
|
|
|
|
domainFilled,
|
|
|
|
userFilled,
|
|
|
|
serverCreated,
|
|
|
|
serverStarted,
|
|
|
|
serverResetedFirstTime,
|
|
|
|
serverResetedSecondTime,
|
|
|
|
}
|
|
|
|
|
2021-09-29 13:08:19 +00:00
|
|
|
class AppConfigNotFinished extends AppConfigState {
|
|
|
|
final bool isLoading;
|
2022-02-08 06:59:19 +00:00
|
|
|
final Map<String, bool>? dnsMatches;
|
2021-09-29 13:08:19 +00:00
|
|
|
|
|
|
|
AppConfigNotFinished({
|
|
|
|
String? hetznerKey,
|
|
|
|
String? cloudFlareKey,
|
|
|
|
BackblazeCredential? backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
ServerDomain? serverDomain,
|
2021-09-29 13:08:19 +00:00
|
|
|
User? rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
ServerHostingDetails? serverDetails,
|
2021-09-29 13:08:19 +00:00
|
|
|
required bool isServerStarted,
|
|
|
|
required bool isServerResetedFirstTime,
|
|
|
|
required bool isServerResetedSecondTime,
|
|
|
|
required this.isLoading,
|
2022-02-08 06:59:19 +00:00
|
|
|
required this.dnsMatches,
|
2021-09-29 13:08:19 +00:00
|
|
|
}) : super(
|
|
|
|
hetznerKey: hetznerKey,
|
|
|
|
cloudFlareKey: cloudFlareKey,
|
|
|
|
backblazeCredential: backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain: serverDomain,
|
2021-09-29 13:08:19 +00:00
|
|
|
rootUser: rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails: serverDetails,
|
2021-09-29 13:08:19 +00:00
|
|
|
isServerStarted: isServerStarted,
|
|
|
|
isServerResetedFirstTime: isServerResetedFirstTime,
|
|
|
|
isServerResetedSecondTime: isServerResetedSecondTime,
|
|
|
|
);
|
|
|
|
|
|
|
|
@override
|
|
|
|
List<Object?> get props => [
|
|
|
|
hetznerKey,
|
|
|
|
cloudFlareKey,
|
|
|
|
backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain,
|
2021-09-29 13:08:19 +00:00
|
|
|
rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails,
|
2021-09-29 13:08:19 +00:00
|
|
|
isServerStarted,
|
|
|
|
isServerResetedFirstTime,
|
2022-02-08 06:59:19 +00:00
|
|
|
isLoading,
|
|
|
|
dnsMatches,
|
2021-09-29 13:08:19 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
AppConfigNotFinished copyWith({
|
|
|
|
String? hetznerKey,
|
|
|
|
String? cloudFlareKey,
|
|
|
|
BackblazeCredential? backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
ServerDomain? serverDomain,
|
2021-09-29 13:08:19 +00:00
|
|
|
User? rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
ServerHostingDetails? serverDetails,
|
2021-09-29 13:08:19 +00:00
|
|
|
bool? isServerStarted,
|
|
|
|
bool? isServerResetedFirstTime,
|
|
|
|
bool? isServerResetedSecondTime,
|
|
|
|
bool? isLoading,
|
2022-02-08 06:59:19 +00:00
|
|
|
Map<String, bool>? dnsMatches,
|
2021-09-29 13:08:19 +00:00
|
|
|
}) =>
|
|
|
|
AppConfigNotFinished(
|
|
|
|
hetznerKey: hetznerKey ?? this.hetznerKey,
|
|
|
|
cloudFlareKey: cloudFlareKey ?? this.cloudFlareKey,
|
|
|
|
backblazeCredential: backblazeCredential ?? this.backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain: serverDomain ?? this.serverDomain,
|
2021-09-29 13:08:19 +00:00
|
|
|
rootUser: rootUser ?? this.rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails: serverDetails ?? this.serverDetails,
|
2021-09-29 13:08:19 +00:00
|
|
|
isServerStarted: isServerStarted ?? this.isServerStarted,
|
|
|
|
isServerResetedFirstTime:
|
|
|
|
isServerResetedFirstTime ?? this.isServerResetedFirstTime,
|
|
|
|
isServerResetedSecondTime:
|
|
|
|
isServerResetedSecondTime ?? this.isServerResetedSecondTime,
|
|
|
|
isLoading: isLoading ?? this.isLoading,
|
2022-02-08 06:59:19 +00:00
|
|
|
dnsMatches: dnsMatches ?? this.dnsMatches,
|
2021-09-29 13:08:19 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
AppConfigFinished finish() => AppConfigFinished(
|
|
|
|
hetznerKey: hetznerKey!,
|
|
|
|
cloudFlareKey: cloudFlareKey!,
|
|
|
|
backblazeCredential: backblazeCredential!,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain: serverDomain!,
|
2021-09-29 13:08:19 +00:00
|
|
|
rootUser: rootUser!,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails: serverDetails!,
|
2021-09-29 13:08:19 +00:00
|
|
|
isServerStarted: isServerStarted,
|
|
|
|
isServerResetedFirstTime: isServerResetedFirstTime,
|
|
|
|
isServerResetedSecondTime: isServerResetedSecondTime,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
class AppConfigEmpty extends AppConfigNotFinished {
|
|
|
|
AppConfigEmpty()
|
|
|
|
: super(
|
|
|
|
hetznerKey: null,
|
|
|
|
cloudFlareKey: null,
|
|
|
|
backblazeCredential: null,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain: null,
|
2021-09-29 13:08:19 +00:00
|
|
|
rootUser: null,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails: null,
|
2021-09-29 13:08:19 +00:00
|
|
|
isServerStarted: false,
|
|
|
|
isServerResetedFirstTime: false,
|
|
|
|
isServerResetedSecondTime: false,
|
|
|
|
isLoading: false,
|
2022-02-08 06:59:19 +00:00
|
|
|
dnsMatches: null,
|
2021-09-29 13:08:19 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
class AppConfigFinished extends AppConfigState {
|
|
|
|
const AppConfigFinished({
|
|
|
|
required String hetznerKey,
|
|
|
|
required String cloudFlareKey,
|
2022-05-11 18:37:08 +00:00
|
|
|
required BackblazeCredential backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
required ServerDomain serverDomain,
|
2022-05-11 18:37:08 +00:00
|
|
|
required User rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
required ServerHostingDetails serverDetails,
|
2022-05-11 18:37:08 +00:00
|
|
|
required bool isServerStarted,
|
|
|
|
required bool isServerResetedFirstTime,
|
|
|
|
required bool isServerResetedSecondTime,
|
|
|
|
}) : super(
|
|
|
|
hetznerKey: hetznerKey,
|
|
|
|
cloudFlareKey: cloudFlareKey,
|
|
|
|
backblazeCredential: backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain: serverDomain,
|
2022-05-11 18:37:08 +00:00
|
|
|
rootUser: rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails: serverDetails,
|
2022-05-11 18:37:08 +00:00
|
|
|
isServerStarted: isServerStarted,
|
|
|
|
isServerResetedFirstTime: isServerResetedFirstTime,
|
|
|
|
isServerResetedSecondTime: isServerResetedSecondTime,
|
|
|
|
);
|
|
|
|
|
|
|
|
@override
|
|
|
|
List<Object?> get props => [
|
|
|
|
hetznerKey,
|
|
|
|
cloudFlareKey,
|
|
|
|
backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain,
|
2022-05-11 18:37:08 +00:00
|
|
|
rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails,
|
2022-05-11 18:37:08 +00:00
|
|
|
isServerStarted,
|
|
|
|
isServerResetedFirstTime,
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
2022-05-13 13:57:56 +00:00
|
|
|
enum RecoveryStep {
|
|
|
|
Selecting,
|
|
|
|
RecoveryKey,
|
|
|
|
NewDeviceKey,
|
|
|
|
OldToken,
|
|
|
|
HetznerToken,
|
|
|
|
CloudflareToken,
|
|
|
|
BackblazeToken,
|
|
|
|
}
|
|
|
|
|
|
|
|
class AppConfigRecovery extends AppConfigState {
|
|
|
|
final RecoveryStep currentStep;
|
|
|
|
|
|
|
|
const AppConfigRecovery({
|
|
|
|
String? hetznerKey,
|
|
|
|
String? cloudFlareKey,
|
|
|
|
BackblazeCredential? backblazeCredential,
|
|
|
|
ServerDomain? serverDomain,
|
|
|
|
User? rootUser,
|
|
|
|
ServerHostingDetails? serverDetails,
|
|
|
|
required RecoveryStep this.currentStep,
|
2021-09-29 13:08:19 +00:00
|
|
|
}) : super(
|
|
|
|
hetznerKey: hetznerKey,
|
|
|
|
cloudFlareKey: cloudFlareKey,
|
|
|
|
backblazeCredential: backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain: serverDomain,
|
2021-09-29 13:08:19 +00:00
|
|
|
rootUser: rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails: serverDetails,
|
|
|
|
isServerStarted: true,
|
|
|
|
isServerResetedFirstTime: true,
|
|
|
|
isServerResetedSecondTime: true,
|
2021-09-29 13:08:19 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
@override
|
|
|
|
List<Object?> get props => [
|
|
|
|
hetznerKey,
|
|
|
|
cloudFlareKey,
|
|
|
|
backblazeCredential,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDomain,
|
2021-09-29 13:08:19 +00:00
|
|
|
rootUser,
|
2022-05-13 13:57:56 +00:00
|
|
|
serverDetails,
|
2021-09-29 13:08:19 +00:00
|
|
|
isServerStarted,
|
|
|
|
isServerResetedFirstTime,
|
2022-05-13 13:57:56 +00:00
|
|
|
currentStep
|
2021-09-29 13:08:19 +00:00
|
|
|
];
|
2022-05-13 13:57:56 +00:00
|
|
|
|
|
|
|
AppConfigRecovery copyWith({
|
|
|
|
String? hetznerKey,
|
|
|
|
String? cloudFlareKey,
|
|
|
|
BackblazeCredential? backblazeCredential,
|
|
|
|
ServerDomain? serverDomain,
|
|
|
|
User? rootUser,
|
|
|
|
ServerHostingDetails? serverDetails,
|
|
|
|
RecoveryStep? currentStep,
|
|
|
|
}) =>
|
|
|
|
AppConfigRecovery(
|
|
|
|
hetznerKey: hetznerKey ?? this.hetznerKey,
|
|
|
|
cloudFlareKey: cloudFlareKey ?? this.cloudFlareKey,
|
|
|
|
backblazeCredential: backblazeCredential ?? this.backblazeCredential,
|
|
|
|
serverDomain: serverDomain ?? this.serverDomain,
|
|
|
|
rootUser: rootUser ?? this.rootUser,
|
|
|
|
serverDetails: serverDetails ?? this.serverDetails,
|
|
|
|
currentStep: currentStep ?? this.currentStep);
|
2021-09-29 13:08:19 +00:00
|
|
|
}
|