feat: Implement confirmation modal for volume resizing

- Resolve #308
pull/372/head
NaiJi ✨ 2023-10-07 18:49:55 -03:00
parent 7a10d46f0f
commit 87b58ec6d8
2 changed files with 20 additions and 9 deletions

View File

@ -304,6 +304,7 @@
"extending_volume_description": "Resizing volume will allow you to store more data on your server without extending the server itself. Volume can only be extended: shrinking is not possible.",
"extending_volume_price_info": "Price includes VAT and is estimated from pricing data provided by your server provider. Server will be rebooted after resizing.",
"extending_volume_error": "Couldn't initialize volume extending.",
"extending_volume_modal_description": "Upgrade to {} for {} plan per month.",
"size": "Size",
"price": "Price",
"data_migration_title": "Data migration",

View File

@ -8,6 +8,7 @@ import 'package:selfprivacy/logic/models/disk_size.dart';
import 'package:selfprivacy/logic/models/price.dart';
import 'package:selfprivacy/ui/components/buttons/brand_button.dart';
import 'package:selfprivacy/ui/components/info_box/info_box.dart';
import 'package:selfprivacy/ui/helpers/modals.dart';
import 'package:selfprivacy/ui/layouts/brand_hero_screen.dart';
import 'package:selfprivacy/logic/models/disk_status.dart';
@ -46,7 +47,6 @@ class _ExtendingVolumePageState extends State<ExtendingVolumePage> {
late double _currentSliderGbValue;
double _pricePerGb = 1.0;
// TODO: Wtfff hardcode?!?!?
final DiskSize maxSize = const DiskSize(byte: 500000000000);
late DiskSize minSize;
@ -155,14 +155,24 @@ class _ExtendingVolumePageState extends State<ExtendingVolumePage> {
onPressed: _isError || isAlreadyResizing
? null
: () {
context.read<ApiProviderVolumeCubit>().resizeVolume(
widget.diskVolumeToResize,
DiskSize.fromGibibyte(
_currentSliderGbValue.truncate().toDouble(),
),
context.read<ApiServerVolumeCubit>().reload,
);
context.router.popUntilRoot();
showPopUpAlert(
alertTitle: 'storage.extending_volume_title'.tr(),
description:
'storage.extending_volume_modal_description'.tr(
args: [_sizeController.text, _priceController.text],
),
actionButtonTitle: 'basis.continue'.tr(),
actionButtonOnPressed: () {
context.read<ApiProviderVolumeCubit>().resizeVolume(
widget.diskVolumeToResize,
DiskSize.fromGibibyte(
_currentSliderGbValue.truncate().toDouble(),
),
context.read<ApiServerVolumeCubit>().reload,
);
context.router.popUntilRoot();
},
);
},
child: Text('storage.extend_volume_button.title'.tr()),
),