diff --git a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart index 6cf5a971..04ded55f 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/hetzner/hetzner.dart @@ -150,7 +150,7 @@ class HetznerApi extends ServerProviderApi with VolumeProviderApi { final List rawVolumes = dbGetResponse.data['volumes']; for (final rawVolume in rawVolumes) { final int dbId = rawVolume['id']; - final int dbSize = rawVolume['size']; + final int dbSize = rawVolume['size'] * 1024 * 1024 * 1024; final dbServer = rawVolume['server']; final String dbName = rawVolume['name']; final dbDevice = rawVolume['linux_device']; diff --git a/lib/logic/models/disk_size.dart b/lib/logic/models/disk_size.dart index 60c2d8a1..9fe18b7d 100644 --- a/lib/logic/models/disk_size.dart +++ b/lib/logic/models/disk_size.dart @@ -3,12 +3,26 @@ import 'package:easy_localization/easy_localization.dart'; class DiskSize { const DiskSize({final this.byte = 0}); + DiskSize.fromKibibyte(final double kibibyte) + : this(byte: (kibibyte * 1024).round()); + DiskSize.fromMebibyte(final double mebibyte) + : this(byte: (mebibyte * 1024 * 1024).round()); + DiskSize.fromGibibyte(final double gibibyte) + : this(byte: (gibibyte * 1024 * 1024 * 1024).round()); + final int byte; double get kibibyte => byte / 1024.0; double get mebibyte => byte / 1024.0 / 1024.0; double get gibibyte => byte / 1024.0 / 1024.0 / 1024.0; + DiskSize operator +(final DiskSize other) => + DiskSize(byte: byte + other.byte); + DiskSize operator -(final DiskSize other) => + DiskSize(byte: byte - other.byte); + DiskSize operator *(final double other) => + DiskSize(byte: (byte * other).round()); + @override String toString() { if (byte < 1024) { diff --git a/lib/ui/pages/server_storage/disk_status.dart b/lib/ui/pages/server_storage/disk_status.dart index dbc01c16..1803f609 100644 --- a/lib/ui/pages/server_storage/disk_status.dart +++ b/lib/ui/pages/server_storage/disk_status.dart @@ -78,7 +78,8 @@ class DiskStatus { continue; } - final String deviceId = iterableProviderVolume.linuxDevice!.split('/').last; + final String deviceId = + iterableProviderVolume.linuxDevice!.split('/').last; if (deviceId.contains(volume.model!) && deviceId.contains(volume.serial!)) { providerVolume = iterableProviderVolume; @@ -86,8 +87,8 @@ class DiskStatus { } } - final DiskVolume diskVolume = DiskVolume.fromServerDiscVolume(volume, providerVolume); - + final DiskVolume diskVolume = + DiskVolume.fromServerDiscVolume(volume, providerVolume); return diskVolume; }).toList(); diff --git a/lib/ui/pages/server_storage/extending_volume.dart b/lib/ui/pages/server_storage/extending_volume.dart index e6ceb11e..0c748190 100644 --- a/lib/ui/pages/server_storage/extending_volume.dart +++ b/lib/ui/pages/server_storage/extending_volume.dart @@ -24,7 +24,7 @@ class ExtendingVolumePage extends StatefulWidget { class _ExtendingVolumePageState extends State { @override void initState() { - minSize = widget.diskVolumeToResize.sizeTotal; + minSize = widget.diskVolumeToResize.sizeTotal + DiskSize.fromGibibyte(2); _currentSliderGbValue = minSize.gibibyte; super.initState(); } @@ -70,7 +70,8 @@ class _ExtendingVolumePageState extends State { _priceController.text = (_euroPerGb * double.parse(_sizeController.text)) .toStringAsFixed(2); - minSize = widget.diskVolumeToResize.sizeTotal; + minSize = + widget.diskVolumeToResize.sizeTotal + DiskSize.fromGibibyte(2); if (_currentSliderGbValue < 0) { _currentSliderGbValue = minSize.gibibyte; }