Fix ipv4 bug

pull/111/head
NaiJi ✨ 2022-08-29 21:18:07 +03:00
parent b48017508a
commit 62db476575
19 changed files with 8261 additions and 987 deletions

View File

@ -35,14 +35,51 @@ class Input$AutoUpgradeSettingsInput {
return true;
}
Input$AutoUpgradeSettingsInput copyWith(
{bool? Function()? enableAutoUpgrade,
bool? Function()? allowReboot}) =>
Input$AutoUpgradeSettingsInput(
enableAutoUpgrade: enableAutoUpgrade == null
? this.enableAutoUpgrade
: enableAutoUpgrade(),
allowReboot: allowReboot == null ? this.allowReboot : allowReboot());
CopyWith$Input$AutoUpgradeSettingsInput<Input$AutoUpgradeSettingsInput>
get copyWith => CopyWith$Input$AutoUpgradeSettingsInput(this, (i) => i);
}
abstract class CopyWith$Input$AutoUpgradeSettingsInput<TRes> {
factory CopyWith$Input$AutoUpgradeSettingsInput(
Input$AutoUpgradeSettingsInput instance,
TRes Function(Input$AutoUpgradeSettingsInput) then) =
_CopyWithImpl$Input$AutoUpgradeSettingsInput;
factory CopyWith$Input$AutoUpgradeSettingsInput.stub(TRes res) =
_CopyWithStubImpl$Input$AutoUpgradeSettingsInput;
TRes call({bool? enableAutoUpgrade, bool? allowReboot});
}
class _CopyWithImpl$Input$AutoUpgradeSettingsInput<TRes>
implements CopyWith$Input$AutoUpgradeSettingsInput<TRes> {
_CopyWithImpl$Input$AutoUpgradeSettingsInput(this._instance, this._then);
final Input$AutoUpgradeSettingsInput _instance;
final TRes Function(Input$AutoUpgradeSettingsInput) _then;
static const _undefined = {};
TRes call(
{Object? enableAutoUpgrade = _undefined,
Object? allowReboot = _undefined}) =>
_then(Input$AutoUpgradeSettingsInput(
enableAutoUpgrade: enableAutoUpgrade == _undefined
? _instance.enableAutoUpgrade
: (enableAutoUpgrade as bool?),
allowReboot: allowReboot == _undefined
? _instance.allowReboot
: (allowReboot as bool?)));
}
class _CopyWithStubImpl$Input$AutoUpgradeSettingsInput<TRes>
implements CopyWith$Input$AutoUpgradeSettingsInput<TRes> {
_CopyWithStubImpl$Input$AutoUpgradeSettingsInput(this._res);
TRes _res;
call({bool? enableAutoUpgrade, bool? allowReboot}) => _res;
}
@JsonSerializable(explicitToJson: true)
@ -107,28 +144,78 @@ class Input$MigrateToBindsInput {
return true;
}
Input$MigrateToBindsInput copyWith(
CopyWith$Input$MigrateToBindsInput<Input$MigrateToBindsInput> get copyWith =>
CopyWith$Input$MigrateToBindsInput(this, (i) => i);
}
abstract class CopyWith$Input$MigrateToBindsInput<TRes> {
factory CopyWith$Input$MigrateToBindsInput(Input$MigrateToBindsInput instance,
TRes Function(Input$MigrateToBindsInput) then) =
_CopyWithImpl$Input$MigrateToBindsInput;
factory CopyWith$Input$MigrateToBindsInput.stub(TRes res) =
_CopyWithStubImpl$Input$MigrateToBindsInput;
TRes call(
{String? emailBlockDevice,
String? bitwardenBlockDevice,
String? giteaBlockDevice,
String? nextcloudBlockDevice,
String? pleromaBlockDevice});
}
class _CopyWithImpl$Input$MigrateToBindsInput<TRes>
implements CopyWith$Input$MigrateToBindsInput<TRes> {
_CopyWithImpl$Input$MigrateToBindsInput(this._instance, this._then);
final Input$MigrateToBindsInput _instance;
final TRes Function(Input$MigrateToBindsInput) _then;
static const _undefined = {};
TRes call(
{Object? emailBlockDevice = _undefined,
Object? bitwardenBlockDevice = _undefined,
Object? giteaBlockDevice = _undefined,
Object? nextcloudBlockDevice = _undefined,
Object? pleromaBlockDevice = _undefined}) =>
_then(Input$MigrateToBindsInput(
emailBlockDevice:
emailBlockDevice == _undefined || emailBlockDevice == null
? _instance.emailBlockDevice
: (emailBlockDevice as String),
bitwardenBlockDevice:
bitwardenBlockDevice == _undefined || bitwardenBlockDevice == null
? _instance.bitwardenBlockDevice
: (bitwardenBlockDevice as String),
giteaBlockDevice:
giteaBlockDevice == _undefined || giteaBlockDevice == null
? _instance.giteaBlockDevice
: (giteaBlockDevice as String),
nextcloudBlockDevice:
nextcloudBlockDevice == _undefined || nextcloudBlockDevice == null
? _instance.nextcloudBlockDevice
: (nextcloudBlockDevice as String),
pleromaBlockDevice:
pleromaBlockDevice == _undefined || pleromaBlockDevice == null
? _instance.pleromaBlockDevice
: (pleromaBlockDevice as String)));
}
class _CopyWithStubImpl$Input$MigrateToBindsInput<TRes>
implements CopyWith$Input$MigrateToBindsInput<TRes> {
_CopyWithStubImpl$Input$MigrateToBindsInput(this._res);
TRes _res;
call(
{String? emailBlockDevice,
String? bitwardenBlockDevice,
String? giteaBlockDevice,
String? nextcloudBlockDevice,
String? pleromaBlockDevice}) =>
Input$MigrateToBindsInput(
emailBlockDevice: emailBlockDevice == null
? this.emailBlockDevice
: emailBlockDevice,
bitwardenBlockDevice: bitwardenBlockDevice == null
? this.bitwardenBlockDevice
: bitwardenBlockDevice,
giteaBlockDevice: giteaBlockDevice == null
? this.giteaBlockDevice
: giteaBlockDevice,
nextcloudBlockDevice: nextcloudBlockDevice == null
? this.nextcloudBlockDevice
: nextcloudBlockDevice,
pleromaBlockDevice: pleromaBlockDevice == null
? this.pleromaBlockDevice
: pleromaBlockDevice);
_res;
}
@JsonSerializable(explicitToJson: true)
@ -164,10 +251,48 @@ class Input$MoveServiceInput {
return true;
}
Input$MoveServiceInput copyWith({String? serviceId, String? location}) =>
Input$MoveServiceInput(
serviceId: serviceId == null ? this.serviceId : serviceId,
location: location == null ? this.location : location);
CopyWith$Input$MoveServiceInput<Input$MoveServiceInput> get copyWith =>
CopyWith$Input$MoveServiceInput(this, (i) => i);
}
abstract class CopyWith$Input$MoveServiceInput<TRes> {
factory CopyWith$Input$MoveServiceInput(Input$MoveServiceInput instance,
TRes Function(Input$MoveServiceInput) then) =
_CopyWithImpl$Input$MoveServiceInput;
factory CopyWith$Input$MoveServiceInput.stub(TRes res) =
_CopyWithStubImpl$Input$MoveServiceInput;
TRes call({String? serviceId, String? location});
}
class _CopyWithImpl$Input$MoveServiceInput<TRes>
implements CopyWith$Input$MoveServiceInput<TRes> {
_CopyWithImpl$Input$MoveServiceInput(this._instance, this._then);
final Input$MoveServiceInput _instance;
final TRes Function(Input$MoveServiceInput) _then;
static const _undefined = {};
TRes call({Object? serviceId = _undefined, Object? location = _undefined}) =>
_then(Input$MoveServiceInput(
serviceId: serviceId == _undefined || serviceId == null
? _instance.serviceId
: (serviceId as String),
location: location == _undefined || location == null
? _instance.location
: (location as String)));
}
class _CopyWithStubImpl$Input$MoveServiceInput<TRes>
implements CopyWith$Input$MoveServiceInput<TRes> {
_CopyWithStubImpl$Input$MoveServiceInput(this._res);
TRes _res;
call({String? serviceId, String? location}) => _res;
}
@JsonSerializable(explicitToJson: true)
@ -205,12 +330,47 @@ class Input$RecoveryKeyLimitsInput {
return true;
}
Input$RecoveryKeyLimitsInput copyWith(
{DateTime? Function()? expirationDate, int? Function()? uses}) =>
Input$RecoveryKeyLimitsInput(
expirationDate:
expirationDate == null ? this.expirationDate : expirationDate(),
uses: uses == null ? this.uses : uses());
CopyWith$Input$RecoveryKeyLimitsInput<Input$RecoveryKeyLimitsInput>
get copyWith => CopyWith$Input$RecoveryKeyLimitsInput(this, (i) => i);
}
abstract class CopyWith$Input$RecoveryKeyLimitsInput<TRes> {
factory CopyWith$Input$RecoveryKeyLimitsInput(
Input$RecoveryKeyLimitsInput instance,
TRes Function(Input$RecoveryKeyLimitsInput) then) =
_CopyWithImpl$Input$RecoveryKeyLimitsInput;
factory CopyWith$Input$RecoveryKeyLimitsInput.stub(TRes res) =
_CopyWithStubImpl$Input$RecoveryKeyLimitsInput;
TRes call({DateTime? expirationDate, int? uses});
}
class _CopyWithImpl$Input$RecoveryKeyLimitsInput<TRes>
implements CopyWith$Input$RecoveryKeyLimitsInput<TRes> {
_CopyWithImpl$Input$RecoveryKeyLimitsInput(this._instance, this._then);
final Input$RecoveryKeyLimitsInput _instance;
final TRes Function(Input$RecoveryKeyLimitsInput) _then;
static const _undefined = {};
TRes call({Object? expirationDate = _undefined, Object? uses = _undefined}) =>
_then(Input$RecoveryKeyLimitsInput(
expirationDate: expirationDate == _undefined
? _instance.expirationDate
: (expirationDate as DateTime?),
uses: uses == _undefined ? _instance.uses : (uses as int?)));
}
class _CopyWithStubImpl$Input$RecoveryKeyLimitsInput<TRes>
implements CopyWith$Input$RecoveryKeyLimitsInput<TRes> {
_CopyWithStubImpl$Input$RecoveryKeyLimitsInput(this._res);
TRes _res;
call({DateTime? expirationDate, int? uses}) => _res;
}
@JsonSerializable(explicitToJson: true)
@ -246,10 +406,48 @@ class Input$SshMutationInput {
return true;
}
Input$SshMutationInput copyWith({String? username, String? sshKey}) =>
Input$SshMutationInput(
username: username == null ? this.username : username,
sshKey: sshKey == null ? this.sshKey : sshKey);
CopyWith$Input$SshMutationInput<Input$SshMutationInput> get copyWith =>
CopyWith$Input$SshMutationInput(this, (i) => i);
}
abstract class CopyWith$Input$SshMutationInput<TRes> {
factory CopyWith$Input$SshMutationInput(Input$SshMutationInput instance,
TRes Function(Input$SshMutationInput) then) =
_CopyWithImpl$Input$SshMutationInput;
factory CopyWith$Input$SshMutationInput.stub(TRes res) =
_CopyWithStubImpl$Input$SshMutationInput;
TRes call({String? username, String? sshKey});
}
class _CopyWithImpl$Input$SshMutationInput<TRes>
implements CopyWith$Input$SshMutationInput<TRes> {
_CopyWithImpl$Input$SshMutationInput(this._instance, this._then);
final Input$SshMutationInput _instance;
final TRes Function(Input$SshMutationInput) _then;
static const _undefined = {};
TRes call({Object? username = _undefined, Object? sshKey = _undefined}) =>
_then(Input$SshMutationInput(
username: username == _undefined || username == null
? _instance.username
: (username as String),
sshKey: sshKey == _undefined || sshKey == null
? _instance.sshKey
: (sshKey as String)));
}
class _CopyWithStubImpl$Input$SshMutationInput<TRes>
implements CopyWith$Input$SshMutationInput<TRes> {
_CopyWithStubImpl$Input$SshMutationInput(this._res);
TRes _res;
call({String? username, String? sshKey}) => _res;
}
@JsonSerializable(explicitToJson: true)
@ -285,10 +483,49 @@ class Input$UseNewDeviceKeyInput {
return true;
}
Input$UseNewDeviceKeyInput copyWith({String? key, String? deviceName}) =>
Input$UseNewDeviceKeyInput(
key: key == null ? this.key : key,
deviceName: deviceName == null ? this.deviceName : deviceName);
CopyWith$Input$UseNewDeviceKeyInput<Input$UseNewDeviceKeyInput>
get copyWith => CopyWith$Input$UseNewDeviceKeyInput(this, (i) => i);
}
abstract class CopyWith$Input$UseNewDeviceKeyInput<TRes> {
factory CopyWith$Input$UseNewDeviceKeyInput(
Input$UseNewDeviceKeyInput instance,
TRes Function(Input$UseNewDeviceKeyInput) then) =
_CopyWithImpl$Input$UseNewDeviceKeyInput;
factory CopyWith$Input$UseNewDeviceKeyInput.stub(TRes res) =
_CopyWithStubImpl$Input$UseNewDeviceKeyInput;
TRes call({String? key, String? deviceName});
}
class _CopyWithImpl$Input$UseNewDeviceKeyInput<TRes>
implements CopyWith$Input$UseNewDeviceKeyInput<TRes> {
_CopyWithImpl$Input$UseNewDeviceKeyInput(this._instance, this._then);
final Input$UseNewDeviceKeyInput _instance;
final TRes Function(Input$UseNewDeviceKeyInput) _then;
static const _undefined = {};
TRes call({Object? key = _undefined, Object? deviceName = _undefined}) =>
_then(Input$UseNewDeviceKeyInput(
key: key == _undefined || key == null
? _instance.key
: (key as String),
deviceName: deviceName == _undefined || deviceName == null
? _instance.deviceName
: (deviceName as String)));
}
class _CopyWithStubImpl$Input$UseNewDeviceKeyInput<TRes>
implements CopyWith$Input$UseNewDeviceKeyInput<TRes> {
_CopyWithStubImpl$Input$UseNewDeviceKeyInput(this._res);
TRes _res;
call({String? key, String? deviceName}) => _res;
}
@JsonSerializable(explicitToJson: true)
@ -324,10 +561,48 @@ class Input$UseRecoveryKeyInput {
return true;
}
Input$UseRecoveryKeyInput copyWith({String? key, String? deviceName}) =>
Input$UseRecoveryKeyInput(
key: key == null ? this.key : key,
deviceName: deviceName == null ? this.deviceName : deviceName);
CopyWith$Input$UseRecoveryKeyInput<Input$UseRecoveryKeyInput> get copyWith =>
CopyWith$Input$UseRecoveryKeyInput(this, (i) => i);
}
abstract class CopyWith$Input$UseRecoveryKeyInput<TRes> {
factory CopyWith$Input$UseRecoveryKeyInput(Input$UseRecoveryKeyInput instance,
TRes Function(Input$UseRecoveryKeyInput) then) =
_CopyWithImpl$Input$UseRecoveryKeyInput;
factory CopyWith$Input$UseRecoveryKeyInput.stub(TRes res) =
_CopyWithStubImpl$Input$UseRecoveryKeyInput;
TRes call({String? key, String? deviceName});
}
class _CopyWithImpl$Input$UseRecoveryKeyInput<TRes>
implements CopyWith$Input$UseRecoveryKeyInput<TRes> {
_CopyWithImpl$Input$UseRecoveryKeyInput(this._instance, this._then);
final Input$UseRecoveryKeyInput _instance;
final TRes Function(Input$UseRecoveryKeyInput) _then;
static const _undefined = {};
TRes call({Object? key = _undefined, Object? deviceName = _undefined}) =>
_then(Input$UseRecoveryKeyInput(
key: key == _undefined || key == null
? _instance.key
: (key as String),
deviceName: deviceName == _undefined || deviceName == null
? _instance.deviceName
: (deviceName as String)));
}
class _CopyWithStubImpl$Input$UseRecoveryKeyInput<TRes>
implements CopyWith$Input$UseRecoveryKeyInput<TRes> {
_CopyWithStubImpl$Input$UseRecoveryKeyInput(this._res);
TRes _res;
call({String? key, String? deviceName}) => _res;
}
@JsonSerializable(explicitToJson: true)
@ -363,10 +638,48 @@ class Input$UserMutationInput {
return true;
}
Input$UserMutationInput copyWith({String? username, String? password}) =>
Input$UserMutationInput(
username: username == null ? this.username : username,
password: password == null ? this.password : password);
CopyWith$Input$UserMutationInput<Input$UserMutationInput> get copyWith =>
CopyWith$Input$UserMutationInput(this, (i) => i);
}
abstract class CopyWith$Input$UserMutationInput<TRes> {
factory CopyWith$Input$UserMutationInput(Input$UserMutationInput instance,
TRes Function(Input$UserMutationInput) then) =
_CopyWithImpl$Input$UserMutationInput;
factory CopyWith$Input$UserMutationInput.stub(TRes res) =
_CopyWithStubImpl$Input$UserMutationInput;
TRes call({String? username, String? password});
}
class _CopyWithImpl$Input$UserMutationInput<TRes>
implements CopyWith$Input$UserMutationInput<TRes> {
_CopyWithImpl$Input$UserMutationInput(this._instance, this._then);
final Input$UserMutationInput _instance;
final TRes Function(Input$UserMutationInput) _then;
static const _undefined = {};
TRes call({Object? username = _undefined, Object? password = _undefined}) =>
_then(Input$UserMutationInput(
username: username == _undefined || username == null
? _instance.username
: (username as String),
password: password == _undefined || password == null
? _instance.password
: (password as String)));
}
class _CopyWithStubImpl$Input$UserMutationInput<TRes>
implements CopyWith$Input$UserMutationInput<TRes> {
_CopyWithStubImpl$Input$UserMutationInput(this._res);
TRes _res;
call({String? username, String? password}) => _res;
}
enum Enum$DnsProvider {

File diff suppressed because it is too large Load Diff

View File

@ -161,7 +161,7 @@ Map<String, dynamic> _$Query$DomainInfo$system$domainInfoToJson(
<String, dynamic>{
'domain': instance.domain,
'hostname': instance.hostname,
'provider': _$Enum$DnsProviderEnumMap[instance.provider],
'provider': _$Enum$DnsProviderEnumMap[instance.provider]!,
'requiredDnsRecords':
instance.requiredDnsRecords.map((e) => e.toJson()).toList(),
'__typename': instance.$__typename,

File diff suppressed because it is too large Load Diff

View File

@ -89,7 +89,7 @@ Map<String, dynamic> _$Query$AllServices$services$allServicesToJson(
'isEnabled': instance.isEnabled,
'isMovable': instance.isMovable,
'isRequired': instance.isRequired,
'status': _$Enum$ServiceStatusEnumEnumMap[instance.status],
'status': _$Enum$ServiceStatusEnumEnumMap[instance.status]!,
'storageUsage': instance.storageUsage.toJson(),
'svgIcon': instance.svgIcon,
'url': instance.url,

File diff suppressed because it is too large Load Diff

View File

@ -90,7 +90,7 @@ Map<String, dynamic> _$Mutation$CreateUser$createUser$userToJson(
Mutation$CreateUser$createUser$user instance) =>
<String, dynamic>{
'username': instance.username,
'userType': _$Enum$UserTypeEnumMap[instance.userType],
'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'sshKeys': instance.sshKeys,
'__typename': instance.$__typename,
};
@ -146,7 +146,7 @@ Query$AllUsers$users$allUsers _$Query$AllUsers$users$allUsersFromJson(
Map<String, dynamic> _$Query$AllUsers$users$allUsersToJson(
Query$AllUsers$users$allUsers instance) =>
<String, dynamic>{
'userType': _$Enum$UserTypeEnumMap[instance.userType],
'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username,
'sshKeys': instance.sshKeys,
'__typename': instance.$__typename,
@ -216,7 +216,7 @@ Map<String, dynamic> _$Mutation$AddSshKey$addSshKey$userToJson(
Mutation$AddSshKey$addSshKey$user instance) =>
<String, dynamic>{
'sshKeys': instance.sshKeys,
'userType': _$Enum$UserTypeEnumMap[instance.userType],
'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username,
'__typename': instance.$__typename,
};
@ -277,7 +277,7 @@ Map<String, dynamic> _$Query$GetUser$users$getUserToJson(
Query$GetUser$users$getUser instance) =>
<String, dynamic>{
'sshKeys': instance.sshKeys,
'userType': _$Enum$UserTypeEnumMap[instance.userType],
'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username,
'__typename': instance.$__typename,
};
@ -350,7 +350,7 @@ Map<String, dynamic> _$Mutation$RemoveSshKey$removeSshKey$userToJson(
Mutation$RemoveSshKey$removeSshKey$user instance) =>
<String, dynamic>{
'sshKeys': instance.sshKeys,
'userType': _$Enum$UserTypeEnumMap[instance.userType],
'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username,
'__typename': instance.$__typename,
};
@ -465,7 +465,7 @@ Map<String, dynamic> _$Mutation$UpdateUser$updateUser$userToJson(
Mutation$UpdateUser$updateUser$user instance) =>
<String, dynamic>{
'sshKeys': instance.sshKeys,
'userType': _$Enum$UserTypeEnumMap[instance.userType],
'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username,
'__typename': instance.$__typename,
};

View File

@ -498,13 +498,16 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
final Dio client = await getClient();
try {
final Response response = await client.get('/servers');
servers = (response.data!['servers'] as List)
.map(
servers = response.data!['servers']
.map<HetznerServerInfo>(
(final e) => HetznerServerInfo.fromJson(e),
)
.toList()
.map(
(final HetznerServerInfo server) => ServerBasicInfo(
.where(
(final server) => server.publicNet.ipv4 != null,
)
.map<ServerBasicInfo>(
(final server) => ServerBasicInfo(
id: server.id,
name: server.name,
ip: server.publicNet.ipv4.ip,
@ -520,6 +523,7 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
close(client);
}
print(servers);
return servers;
}

View File

@ -4,14 +4,12 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:equatable/equatable.dart';
import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.dart';
import 'package:selfprivacy/logic/models/hive/backblaze_credential.dart';
import 'package:selfprivacy/logic/models/hive/server_details.dart';
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
import 'package:selfprivacy/logic/models/hive/user.dart';
import 'package:selfprivacy/logic/models/json/server_disk_volume.dart';
import 'package:selfprivacy/logic/models/server_basic_info.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_repository.dart';

View File

@ -24,7 +24,7 @@ BackupStatus _$BackupStatusFromJson(Map<String, dynamic> json) => BackupStatus(
Map<String, dynamic> _$BackupStatusToJson(BackupStatus instance) =>
<String, dynamic>{
'status': _$BackupStatusEnumEnumMap[instance.status],
'status': _$BackupStatusEnumEnumMap[instance.status]!,
'progress': instance.progress,
'error_message': instance.errorMessage,
};

View File

@ -39,7 +39,7 @@ class HetznerServerInfo {
@JsonSerializable()
class HetznerPublicNetInfo {
HetznerPublicNetInfo(this.ipv4);
final HetznerIp4 ipv4;
final HetznerIp4? ipv4;
static HetznerPublicNetInfo fromJson(final Map<String, dynamic> json) =>
_$HetznerPublicNetInfoFromJson(json);

View File

@ -23,7 +23,7 @@ Map<String, dynamic> _$HetznerServerInfoToJson(HetznerServerInfo instance) =>
<String, dynamic>{
'id': instance.id,
'name': instance.name,
'status': _$ServerStatusEnumMap[instance.status],
'status': _$ServerStatusEnumMap[instance.status]!,
'created': instance.created.toIso8601String(),
'volumes': instance.volumes,
'server_type': instance.serverType,
@ -46,7 +46,9 @@ const _$ServerStatusEnumMap = {
HetznerPublicNetInfo _$HetznerPublicNetInfoFromJson(
Map<String, dynamic> json) =>
HetznerPublicNetInfo(
HetznerIp4.fromJson(json['ipv4'] as Map<String, dynamic>),
json['ipv4'] == null
? null
: HetznerIp4.fromJson(json['ipv4'] as Map<String, dynamic>),
);
Map<String, dynamic> _$HetznerPublicNetInfoToJson(

View File

@ -11,13 +11,13 @@ ServerJob _$ServerJobFromJson(Map<String, dynamic> json) => ServerJob(
description: json['description'] as String,
status: json['status'] as String,
uid: json['uid'] as String,
updatedAt: json['updated_at'] as String,
createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: json['updatedAt'] as String,
createdAt: DateTime.parse(json['createdAt'] as String),
error: json['error'] as String?,
progress: json['progress'] as int?,
result: json['result'] as String?,
statusText: json['status_text'] as String?,
finishedAt: json['finished_at'] as String?,
statusText: json['statusText'] as String?,
finishedAt: json['finishedAt'] as String?,
);
Map<String, dynamic> _$ServerJobToJson(ServerJob instance) => <String, dynamic>{
@ -25,11 +25,11 @@ Map<String, dynamic> _$ServerJobToJson(ServerJob instance) => <String, dynamic>{
'description': instance.description,
'status': instance.status,
'uid': instance.uid,
'updated_at': instance.updatedAt,
'created_at': instance.createdAt.toIso8601String(),
'updatedAt': instance.updatedAt,
'createdAt': instance.createdAt.toIso8601String(),
'error': instance.error,
'progress': instance.progress,
'result': instance.result,
'status_text': instance.statusText,
'finished_at': instance.finishedAt,
'statusText': instance.statusText,
'finishedAt': instance.finishedAt,
};

View File

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:selfprivacy/config/brand_colors.dart';
import 'package:selfprivacy/config/text_themes.dart';
import 'package:selfprivacy/logic/cubit/app_settings/app_settings_cubit.dart';
import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart';
import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
class ProgressBar extends StatefulWidget {
@ -114,7 +113,6 @@ class _ProgressBarState extends State<ProgressBar> {
final String? step,
}) {
final bool isActive = index == widget.activeIndex;
final bool checked = index < widget.activeIndex;
style = isActive ? style!.copyWith(fontWeight: FontWeight.w700) : style;
return Container(

View File

@ -23,25 +23,22 @@ class DataMigrationPage extends StatefulWidget {
class _DataMigrationPageState extends State<DataMigrationPage> {
@override
Widget build(final BuildContext context) {
int a = 0;
return BrandHeroScreen(
hasBackButton: true,
heroTitle: 'providers.storage.data_migration_title'.tr(),
children: [
...widget.diskStatus.diskVolumes
.map(
(final volume) => Column(
children: [
ServerStorageListItem(
volume: volume,
),
const SizedBox(height: 16),
],
),
)
.toList(),
],
);
}
Widget build(final BuildContext context) => BrandHeroScreen(
hasBackButton: true,
heroTitle: 'providers.storage.data_migration_title'.tr(),
children: [
...widget.diskStatus.diskVolumes
.map(
(final volume) => Column(
children: [
ServerStorageListItem(
volume: volume,
),
const SizedBox(height: 16),
],
),
)
.toList(),
],
);
}

View File

@ -1,4 +1,3 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:selfprivacy/ui/components/brand_linear_indicator/brand_linear_indicator.dart';

View File

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart';
import 'package:selfprivacy/ui/components/brand_cards/brand_cards.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
@ -12,76 +11,73 @@ class ServicePage extends StatefulWidget {
class _ServicePageState extends State<ServicePage> {
@override
Widget build(final BuildContext context) {
int a;
return BrandHeroScreen(
hasBackButton: true,
children: [
const SizedBox(height: 16),
Container(
alignment: Alignment.center,
child: const Icon(
Icons.question_mark_outlined,
size: 48,
Widget build(final BuildContext context) => BrandHeroScreen(
hasBackButton: true,
children: [
const SizedBox(height: 16),
Container(
alignment: Alignment.center,
child: const Icon(
Icons.question_mark_outlined,
size: 48,
),
),
),
const SizedBox(height: 16),
Text(
'My Incredible Service',
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.headlineMedium!.copyWith(
color: Theme.of(context).colorScheme.onBackground,
),
),
const SizedBox(height: 16),
BrandCards.outlined(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 24),
child: const Icon(
Icons.check_box_outlined,
size: 24,
const SizedBox(height: 16),
Text(
'My Incredible Service',
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.headlineMedium!.copyWith(
color: Theme.of(context).colorScheme.onBackground,
),
),
const SizedBox(width: 16),
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 130),
child: const Text(''),
),
],
),
),
const SizedBox(height: 16),
const Divider(),
const SizedBox(height: 16),
ElevatedButton(
onPressed: null,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 24),
child: const Icon(
Icons.language_outlined,
size: 24,
const SizedBox(height: 16),
BrandCards.outlined(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 24),
child: const Icon(
Icons.check_box_outlined,
size: 24,
),
),
),
const SizedBox(width: 16),
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 130),
child: const Text('Your Cool Domain'),
),
],
const SizedBox(width: 16),
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 130),
child: const Text(''),
),
],
),
),
),
const SizedBox(height: 16),
],
);
}
const SizedBox(height: 16),
const Divider(),
const SizedBox(height: 16),
ElevatedButton(
onPressed: null,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 24),
child: const Icon(
Icons.language_outlined,
size: 24,
),
),
const SizedBox(width: 16),
ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 130),
child: const Text('Your Cool Domain'),
),
],
),
),
const SizedBox(height: 16),
],
);
}