mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
fix lag on saving frozen coin status (#3164)
* fix lag on saving frozen coin status * wrap saveUnspentCoinInfo in @action * revert fix + safeguard coin control page
This commit is contained in:
@@ -4,7 +4,6 @@ import 'package:cake_wallet/new-ui/widgets/modal_header.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/view_model/unspent_coins/unspent_coins_list_view_model.dart';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
@@ -32,6 +31,10 @@ class _NewCoinControlPageState extends State<NewCoinControlPage> {
|
||||
Widget build(BuildContext context) {
|
||||
return PopScope(
|
||||
canPop: !widget.unspentCoinsListViewModel.isSavingItems,
|
||||
onPopInvokedWithResult: (didPop, result) async{
|
||||
await widget.unspentCoinsListViewModel.dispose();
|
||||
if(!didPop && mounted) Navigator.of(context).pop();
|
||||
},
|
||||
child: Material(
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
|
||||
color: Colors.transparent,
|
||||
@@ -42,10 +45,25 @@ class _NewCoinControlPageState extends State<NewCoinControlPage> {
|
||||
child: Column(
|
||||
children: [
|
||||
ModalTopBar(
|
||||
title: "",
|
||||
onLeadingPressed: Navigator.of(context).pop,
|
||||
leadingIcon: Icon(Icons.arrow_back_ios_new),
|
||||
onTrailingPressed: () {}),
|
||||
title: "",
|
||||
trailingWidget: GestureDetector(
|
||||
onTap: Navigator.of(context).pop,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).colorScheme.surfaceContainer,
|
||||
borderRadius: BorderRadius.circular(99999)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 8.0),
|
||||
child: Text(
|
||||
S.of(context).done,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
fontWeight: FontWeight.w600),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
FutureBuilder(
|
||||
future: _initialization,
|
||||
builder: (context, asyncSnapshot) {
|
||||
|
||||
@@ -11,6 +11,7 @@ import 'package:cake_wallet/exchange/trade.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/monero/monero.dart';
|
||||
import 'package:cake_wallet/new-ui/modal_navigator.dart';
|
||||
import 'package:cake_wallet/new-ui/pages/coin_control_page.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/animated_dropdown.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/keyboard_hide_overlay.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/picker.dart';
|
||||
@@ -513,8 +514,11 @@ class _NewSendPageState extends State<NewSendPage> {
|
||||
ListItemRegularRowWidget(
|
||||
keyValue: "",
|
||||
label: "Coin Control",
|
||||
onTap: () => Navigator.of(context)
|
||||
.pushNamed(Routes.unspentCoinsList),
|
||||
onTap: () {
|
||||
showCupertinoModalBottomSheet(enableDrag: false, useRootNavigator: true, isDismissible: false, context: context, builder: (context){
|
||||
return NewCoinControlPage(unspentCoinsListViewModel: widget.sendViewModel.unspentCoinsListViewModel,);
|
||||
});
|
||||
}
|
||||
),
|
||||
]),
|
||||
)
|
||||
|
||||
@@ -2,15 +2,16 @@ import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_regular
|
||||
import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_selector.dart';
|
||||
import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_toggle.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/new-ui/pages/coin_control_page.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/swap_page/provider_options_page.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/swap_page/refund_address_modal.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart';
|
||||
import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
|
||||
|
||||
class SwapOptionsPage extends StatelessWidget {
|
||||
const SwapOptionsPage({super.key, required this.exchangeViewModel});
|
||||
@@ -100,7 +101,9 @@ class SwapOptionsPage extends StatelessWidget {
|
||||
keyValue: "coin control",
|
||||
label: "Coin Control",
|
||||
onTap: () {
|
||||
Navigator.of(context).pushNamed(Routes.unspentCoinsList);
|
||||
showCupertinoModalBottomSheet(enableDrag: false, useRootNavigator: true, isDismissible: false, context: context, builder: (context){
|
||||
return NewCoinControlPage(unspentCoinsListViewModel: exchangeViewModel.unspentCoinsListViewModel,);
|
||||
});
|
||||
}),
|
||||
ListItemSelector(
|
||||
keyValue: "curr",
|
||||
|
||||
@@ -116,6 +116,7 @@ abstract class UnspentCoinsListViewModelBase with Store {
|
||||
|
||||
bool get hasAdjustableFieldChanged => items.any(_hasAdjustableFieldChanged);
|
||||
|
||||
@action
|
||||
Future<void> saveUnspentCoinInfo(UnspentCoinsItem item) async {
|
||||
try {
|
||||
item.isBeingSaved = true;
|
||||
@@ -129,8 +130,6 @@ abstract class UnspentCoinsListViewModelBase with Store {
|
||||
existingInfo.note = item.note;
|
||||
|
||||
await existingInfo.save();
|
||||
await _updateUnspents();
|
||||
await wallet.updateBalance();
|
||||
item.isBeingSaved = false;
|
||||
isSavingItems = false;
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user