diff --git a/assets/translations/en.json b/assets/translations/en.json index 82f682ba..d6c03a87 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -83,7 +83,7 @@ "no_key_name": "Unnamed key", "root_title": "These are superuser keys", "root_subtitle": "Owners of these keys get full access to the server and can do anything on it. Only add your own keys to the server.", - "input_label": "Public ED25519 or RSA key" + "input_label": "Public ED25519, ECDSA or RSA key" }, "onboarding": { "page1_title": "Digital independence, available to all of us", diff --git a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart index aa1481a0..9ffdb666 100644 --- a/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart +++ b/lib/logic/api_maps/rest_maps/server_providers/digital_ocean/digital_ocean_api.dart @@ -455,8 +455,8 @@ class DigitalOceanApi extends RestApiMap { } Future> resizeVolume( - final String name, - final DiskSize size, + final String uuid, + final int gb, ) async { bool success = false; @@ -464,11 +464,10 @@ class DigitalOceanApi extends RestApiMap { final Dio client = await getClient(); try { resizeVolumeResponse = await client.post( - '/volumes/actions', + '/volumes/$uuid/actions', data: { 'type': 'resize', - 'volume_name': name, - 'size_gigabytes': size.gibibyte, + 'size_gigabytes': gb, 'region': region, }, ); diff --git a/lib/logic/cubit/forms/user/ssh_form_cubit.dart b/lib/logic/cubit/forms/user/ssh_form_cubit.dart index 707e54c3..3305d647 100644 --- a/lib/logic/cubit/forms/user/ssh_form_cubit.dart +++ b/lib/logic/cubit/forms/user/ssh_form_cubit.dart @@ -12,7 +12,7 @@ class SshFormCubit extends FormCubit { required this.user, }) { final RegExp keyRegExp = RegExp( - r'^(ssh-rsa AAAAB3NzaC1yc2|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5)[0-9A-Za-z+/]+[=]{0,3}( .*)?$', + r'^(ecdsa-sha2-nistp256 AAAAE2VjZH|ssh-rsa AAAAB3NzaC1yc2|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5)[0-9A-Za-z+/]+[=]{0,3}( .*)?$', ); key = FieldCubit( diff --git a/lib/logic/providers/server_providers/digital_ocean.dart b/lib/logic/providers/server_providers/digital_ocean.dart index 4b6ee838..6e699723 100644 --- a/lib/logic/providers/server_providers/digital_ocean.dart +++ b/lib/logic/providers/server_providers/digital_ocean.dart @@ -698,8 +698,8 @@ class DigitalOceanServerProvider extends ServerProvider { final DiskSize size, ) async => _adapter.api().resizeVolume( - volume.name, - size, + volume.uuid!, + size.gibibyte.toInt(), ); @override diff --git a/lib/ui/pages/server_storage/extending_volume.dart b/lib/ui/pages/server_storage/extending_volume.dart index 81414bdb..9c40e9ee 100644 --- a/lib/ui/pages/server_storage/extending_volume.dart +++ b/lib/ui/pages/server_storage/extending_volume.dart @@ -157,7 +157,9 @@ class _ExtendingVolumePageState extends State { : () { context.read().resizeVolume( widget.diskVolumeToResize, - DiskSize.fromGibibyte(_currentSliderGbValue), + DiskSize.fromGibibyte( + _currentSliderGbValue.truncate().toDouble(), + ), context.read().reload, ); context.router.popUntilRoot(); diff --git a/lib/ui/pages/server_storage/storage_card.dart b/lib/ui/pages/server_storage/storage_card.dart index ac633463..fbda9bee 100644 --- a/lib/ui/pages/server_storage/storage_card.dart +++ b/lib/ui/pages/server_storage/storage_card.dart @@ -45,8 +45,11 @@ class StorageCard extends StatelessWidget { clipBehavior: Clip.antiAlias, child: InkResponse( highlightShape: BoxShape.rectangle, - onTap: () => - context.pushRoute(ServerStorageRoute(diskStatus: diskStatus)), + + /// TODO: when 'isEmpty' replace with a skeleton + onTap: () => diskStatus.diskVolumes.isEmpty + ? null + : context.pushRoute(ServerStorageRoute(diskStatus: diskStatus)), child: Padding( padding: const EdgeInsets.all(16.0), child: Column(