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; return true;
} }
Input$AutoUpgradeSettingsInput copyWith( CopyWith$Input$AutoUpgradeSettingsInput<Input$AutoUpgradeSettingsInput>
{bool? Function()? enableAutoUpgrade, get copyWith => CopyWith$Input$AutoUpgradeSettingsInput(this, (i) => i);
bool? Function()? allowReboot}) => }
Input$AutoUpgradeSettingsInput(
enableAutoUpgrade: enableAutoUpgrade == null abstract class CopyWith$Input$AutoUpgradeSettingsInput<TRes> {
? this.enableAutoUpgrade factory CopyWith$Input$AutoUpgradeSettingsInput(
: enableAutoUpgrade(), Input$AutoUpgradeSettingsInput instance,
allowReboot: allowReboot == null ? this.allowReboot : allowReboot()); 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) @JsonSerializable(explicitToJson: true)
@ -107,28 +144,78 @@ class Input$MigrateToBindsInput {
return true; 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? emailBlockDevice,
String? bitwardenBlockDevice, String? bitwardenBlockDevice,
String? giteaBlockDevice, String? giteaBlockDevice,
String? nextcloudBlockDevice, String? nextcloudBlockDevice,
String? pleromaBlockDevice}) => String? pleromaBlockDevice}) =>
Input$MigrateToBindsInput( _res;
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);
} }
@JsonSerializable(explicitToJson: true) @JsonSerializable(explicitToJson: true)
@ -164,10 +251,48 @@ class Input$MoveServiceInput {
return true; return true;
} }
Input$MoveServiceInput copyWith({String? serviceId, String? location}) => CopyWith$Input$MoveServiceInput<Input$MoveServiceInput> get copyWith =>
Input$MoveServiceInput( CopyWith$Input$MoveServiceInput(this, (i) => i);
serviceId: serviceId == null ? this.serviceId : serviceId, }
location: location == null ? this.location : location);
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) @JsonSerializable(explicitToJson: true)
@ -205,12 +330,47 @@ class Input$RecoveryKeyLimitsInput {
return true; return true;
} }
Input$RecoveryKeyLimitsInput copyWith( CopyWith$Input$RecoveryKeyLimitsInput<Input$RecoveryKeyLimitsInput>
{DateTime? Function()? expirationDate, int? Function()? uses}) => get copyWith => CopyWith$Input$RecoveryKeyLimitsInput(this, (i) => i);
Input$RecoveryKeyLimitsInput( }
expirationDate:
expirationDate == null ? this.expirationDate : expirationDate(), abstract class CopyWith$Input$RecoveryKeyLimitsInput<TRes> {
uses: uses == null ? this.uses : uses()); 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) @JsonSerializable(explicitToJson: true)
@ -246,10 +406,48 @@ class Input$SshMutationInput {
return true; return true;
} }
Input$SshMutationInput copyWith({String? username, String? sshKey}) => CopyWith$Input$SshMutationInput<Input$SshMutationInput> get copyWith =>
Input$SshMutationInput( CopyWith$Input$SshMutationInput(this, (i) => i);
username: username == null ? this.username : username, }
sshKey: sshKey == null ? this.sshKey : sshKey);
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) @JsonSerializable(explicitToJson: true)
@ -285,10 +483,49 @@ class Input$UseNewDeviceKeyInput {
return true; return true;
} }
Input$UseNewDeviceKeyInput copyWith({String? key, String? deviceName}) => CopyWith$Input$UseNewDeviceKeyInput<Input$UseNewDeviceKeyInput>
Input$UseNewDeviceKeyInput( get copyWith => CopyWith$Input$UseNewDeviceKeyInput(this, (i) => i);
key: key == null ? this.key : key, }
deviceName: deviceName == null ? this.deviceName : deviceName);
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) @JsonSerializable(explicitToJson: true)
@ -324,10 +561,48 @@ class Input$UseRecoveryKeyInput {
return true; return true;
} }
Input$UseRecoveryKeyInput copyWith({String? key, String? deviceName}) => CopyWith$Input$UseRecoveryKeyInput<Input$UseRecoveryKeyInput> get copyWith =>
Input$UseRecoveryKeyInput( CopyWith$Input$UseRecoveryKeyInput(this, (i) => i);
key: key == null ? this.key : key, }
deviceName: deviceName == null ? this.deviceName : deviceName);
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) @JsonSerializable(explicitToJson: true)
@ -363,10 +638,48 @@ class Input$UserMutationInput {
return true; return true;
} }
Input$UserMutationInput copyWith({String? username, String? password}) => CopyWith$Input$UserMutationInput<Input$UserMutationInput> get copyWith =>
Input$UserMutationInput( CopyWith$Input$UserMutationInput(this, (i) => i);
username: username == null ? this.username : username, }
password: password == null ? this.password : password);
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 { 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>{ <String, dynamic>{
'domain': instance.domain, 'domain': instance.domain,
'hostname': instance.hostname, 'hostname': instance.hostname,
'provider': _$Enum$DnsProviderEnumMap[instance.provider], 'provider': _$Enum$DnsProviderEnumMap[instance.provider]!,
'requiredDnsRecords': 'requiredDnsRecords':
instance.requiredDnsRecords.map((e) => e.toJson()).toList(), instance.requiredDnsRecords.map((e) => e.toJson()).toList(),
'__typename': instance.$__typename, '__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, 'isEnabled': instance.isEnabled,
'isMovable': instance.isMovable, 'isMovable': instance.isMovable,
'isRequired': instance.isRequired, 'isRequired': instance.isRequired,
'status': _$Enum$ServiceStatusEnumEnumMap[instance.status], 'status': _$Enum$ServiceStatusEnumEnumMap[instance.status]!,
'storageUsage': instance.storageUsage.toJson(), 'storageUsage': instance.storageUsage.toJson(),
'svgIcon': instance.svgIcon, 'svgIcon': instance.svgIcon,
'url': instance.url, '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) => Mutation$CreateUser$createUser$user instance) =>
<String, dynamic>{ <String, dynamic>{
'username': instance.username, 'username': instance.username,
'userType': _$Enum$UserTypeEnumMap[instance.userType], 'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'sshKeys': instance.sshKeys, 'sshKeys': instance.sshKeys,
'__typename': instance.$__typename, '__typename': instance.$__typename,
}; };
@ -146,7 +146,7 @@ Query$AllUsers$users$allUsers _$Query$AllUsers$users$allUsersFromJson(
Map<String, dynamic> _$Query$AllUsers$users$allUsersToJson( Map<String, dynamic> _$Query$AllUsers$users$allUsersToJson(
Query$AllUsers$users$allUsers instance) => Query$AllUsers$users$allUsers instance) =>
<String, dynamic>{ <String, dynamic>{
'userType': _$Enum$UserTypeEnumMap[instance.userType], 'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username, 'username': instance.username,
'sshKeys': instance.sshKeys, 'sshKeys': instance.sshKeys,
'__typename': instance.$__typename, '__typename': instance.$__typename,
@ -216,7 +216,7 @@ Map<String, dynamic> _$Mutation$AddSshKey$addSshKey$userToJson(
Mutation$AddSshKey$addSshKey$user instance) => Mutation$AddSshKey$addSshKey$user instance) =>
<String, dynamic>{ <String, dynamic>{
'sshKeys': instance.sshKeys, 'sshKeys': instance.sshKeys,
'userType': _$Enum$UserTypeEnumMap[instance.userType], 'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username, 'username': instance.username,
'__typename': instance.$__typename, '__typename': instance.$__typename,
}; };
@ -277,7 +277,7 @@ Map<String, dynamic> _$Query$GetUser$users$getUserToJson(
Query$GetUser$users$getUser instance) => Query$GetUser$users$getUser instance) =>
<String, dynamic>{ <String, dynamic>{
'sshKeys': instance.sshKeys, 'sshKeys': instance.sshKeys,
'userType': _$Enum$UserTypeEnumMap[instance.userType], 'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username, 'username': instance.username,
'__typename': instance.$__typename, '__typename': instance.$__typename,
}; };
@ -350,7 +350,7 @@ Map<String, dynamic> _$Mutation$RemoveSshKey$removeSshKey$userToJson(
Mutation$RemoveSshKey$removeSshKey$user instance) => Mutation$RemoveSshKey$removeSshKey$user instance) =>
<String, dynamic>{ <String, dynamic>{
'sshKeys': instance.sshKeys, 'sshKeys': instance.sshKeys,
'userType': _$Enum$UserTypeEnumMap[instance.userType], 'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username, 'username': instance.username,
'__typename': instance.$__typename, '__typename': instance.$__typename,
}; };
@ -465,7 +465,7 @@ Map<String, dynamic> _$Mutation$UpdateUser$updateUser$userToJson(
Mutation$UpdateUser$updateUser$user instance) => Mutation$UpdateUser$updateUser$user instance) =>
<String, dynamic>{ <String, dynamic>{
'sshKeys': instance.sshKeys, 'sshKeys': instance.sshKeys,
'userType': _$Enum$UserTypeEnumMap[instance.userType], 'userType': _$Enum$UserTypeEnumMap[instance.userType]!,
'username': instance.username, 'username': instance.username,
'__typename': instance.$__typename, '__typename': instance.$__typename,
}; };

View File

@ -498,13 +498,16 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
final Dio client = await getClient(); final Dio client = await getClient();
try { try {
final Response response = await client.get('/servers'); final Response response = await client.get('/servers');
servers = (response.data!['servers'] as List) servers = response.data!['servers']
.map( .map<HetznerServerInfo>(
(final e) => HetznerServerInfo.fromJson(e), (final e) => HetznerServerInfo.fromJson(e),
) )
.toList() .toList()
.map( .where(
(final HetznerServerInfo server) => ServerBasicInfo( (final server) => server.publicNet.ipv4 != null,
)
.map<ServerBasicInfo>(
(final server) => ServerBasicInfo(
id: server.id, id: server.id,
name: server.name, name: server.name,
ip: server.publicNet.ipv4.ip, ip: server.publicNet.ipv4.ip,
@ -520,6 +523,7 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi {
close(client); close(client);
} }
print(servers);
return 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:easy_localization/easy_localization.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:selfprivacy/config/get_it_config.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/dns_providers/dns_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/provider_api_settings.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/backblaze_credential.dart';
import 'package:selfprivacy/logic/models/hive/server_details.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/server_domain.dart';
import 'package:selfprivacy/logic/models/hive/user.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/models/server_basic_info.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_repository.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) => Map<String, dynamic> _$BackupStatusToJson(BackupStatus instance) =>
<String, dynamic>{ <String, dynamic>{
'status': _$BackupStatusEnumEnumMap[instance.status], 'status': _$BackupStatusEnumEnumMap[instance.status]!,
'progress': instance.progress, 'progress': instance.progress,
'error_message': instance.errorMessage, 'error_message': instance.errorMessage,
}; };

View File

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

View File

@ -23,7 +23,7 @@ Map<String, dynamic> _$HetznerServerInfoToJson(HetznerServerInfo instance) =>
<String, dynamic>{ <String, dynamic>{
'id': instance.id, 'id': instance.id,
'name': instance.name, 'name': instance.name,
'status': _$ServerStatusEnumMap[instance.status], 'status': _$ServerStatusEnumMap[instance.status]!,
'created': instance.created.toIso8601String(), 'created': instance.created.toIso8601String(),
'volumes': instance.volumes, 'volumes': instance.volumes,
'server_type': instance.serverType, 'server_type': instance.serverType,
@ -46,7 +46,9 @@ const _$ServerStatusEnumMap = {
HetznerPublicNetInfo _$HetznerPublicNetInfoFromJson( HetznerPublicNetInfo _$HetznerPublicNetInfoFromJson(
Map<String, dynamic> json) => Map<String, dynamic> json) =>
HetznerPublicNetInfo( 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( Map<String, dynamic> _$HetznerPublicNetInfoToJson(

View File

@ -11,13 +11,13 @@ ServerJob _$ServerJobFromJson(Map<String, dynamic> json) => ServerJob(
description: json['description'] as String, description: json['description'] as String,
status: json['status'] as String, status: json['status'] as String,
uid: json['uid'] as String, uid: json['uid'] as String,
updatedAt: json['updated_at'] as String, updatedAt: json['updatedAt'] as String,
createdAt: DateTime.parse(json['created_at'] as String), createdAt: DateTime.parse(json['createdAt'] as String),
error: json['error'] as String?, error: json['error'] as String?,
progress: json['progress'] as int?, progress: json['progress'] as int?,
result: json['result'] as String?, result: json['result'] as String?,
statusText: json['status_text'] as String?, statusText: json['statusText'] as String?,
finishedAt: json['finished_at'] as String?, finishedAt: json['finishedAt'] as String?,
); );
Map<String, dynamic> _$ServerJobToJson(ServerJob instance) => <String, dynamic>{ Map<String, dynamic> _$ServerJobToJson(ServerJob instance) => <String, dynamic>{
@ -25,11 +25,11 @@ Map<String, dynamic> _$ServerJobToJson(ServerJob instance) => <String, dynamic>{
'description': instance.description, 'description': instance.description,
'status': instance.status, 'status': instance.status,
'uid': instance.uid, 'uid': instance.uid,
'updated_at': instance.updatedAt, 'updatedAt': instance.updatedAt,
'created_at': instance.createdAt.toIso8601String(), 'createdAt': instance.createdAt.toIso8601String(),
'error': instance.error, 'error': instance.error,
'progress': instance.progress, 'progress': instance.progress,
'result': instance.result, 'result': instance.result,
'status_text': instance.statusText, 'statusText': instance.statusText,
'finished_at': instance.finishedAt, '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/brand_colors.dart';
import 'package:selfprivacy/config/text_themes.dart'; import 'package:selfprivacy/config/text_themes.dart';
import 'package:selfprivacy/logic/cubit/app_settings/app_settings_cubit.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'; import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
class ProgressBar extends StatefulWidget { class ProgressBar extends StatefulWidget {
@ -114,7 +113,6 @@ class _ProgressBarState extends State<ProgressBar> {
final String? step, final String? step,
}) { }) {
final bool isActive = index == widget.activeIndex; final bool isActive = index == widget.activeIndex;
final bool checked = index < widget.activeIndex;
style = isActive ? style!.copyWith(fontWeight: FontWeight.w700) : style; style = isActive ? style!.copyWith(fontWeight: FontWeight.w700) : style;
return Container( return Container(

View File

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

View File

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