mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
popup ui for wownero deprecation (#3186)
* fix: add "support for coin removed" to exception handler ignored list * wownero deprecation popup --------- Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
This commit is contained in:
co-authored by
Czarek Nakamoto
parent
5feee62358
commit
b5cec3576c
@@ -1,5 +1,6 @@
|
||||
import 'dart:ffi';
|
||||
import 'dart:io';
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:cw_core/monero_wallet_utils.dart';
|
||||
import 'package:cw_core/pathForWallet.dart';
|
||||
import 'package:cw_core/unspent_coins_info.dart';
|
||||
@@ -20,6 +21,16 @@ import 'package:hive/hive.dart';
|
||||
import 'package:polyseed/polyseed.dart';
|
||||
import 'package:monero/wownero.dart' as wownero;
|
||||
|
||||
class WalletDeprecationException implements Exception {
|
||||
final String seed;
|
||||
final CryptoCurrency curr;
|
||||
|
||||
@override
|
||||
String toString() => "Wallet type no longer supported";
|
||||
|
||||
WalletDeprecationException({required this.seed, required this.curr});
|
||||
}
|
||||
|
||||
class WowneroNewWalletCredentials extends WalletCredentials {
|
||||
WowneroNewWalletCredentials(
|
||||
{required String name, required this.language, required this.isPolyseed, this.passphrase, String? password})
|
||||
@@ -138,8 +149,8 @@ class WowneroWalletService extends WalletService<
|
||||
}
|
||||
|
||||
wallet = WowneroWallet(walletInfo: walletInfo, derivationInfo: await walletInfo.getDerivationInfo(), unspentCoinsInfo: unspentCoinsInfoSource, password: password);
|
||||
throw Exception("support for coin removed, your seedphrase: ${wallet.seed}");
|
||||
|
||||
throw WalletDeprecationException(seed: wallet.seed, curr: wallet.currency);
|
||||
|
||||
final isValid = wallet.walletAddresses.validate();
|
||||
|
||||
if (!isValid) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:cake_wallet/core/key_service.dart';
|
||||
import 'package:cake_wallet/entities/preferences_key.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/main.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/wallet_deprecation_popup.dart';
|
||||
import 'package:cake_wallet/reactions/on_authentication_state_change.dart';
|
||||
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
|
||||
import 'package:cake_wallet/utils/exception_handler.dart';
|
||||
@@ -15,6 +16,7 @@ import 'package:cw_core/wallet_base.dart';
|
||||
import 'package:cw_core/wallet_info.dart';
|
||||
import 'package:cw_core/wallet_service.dart';
|
||||
import 'package:cw_core/wallet_type.dart';
|
||||
import 'package:cw_wownero/wownero_wallet_service.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
@@ -73,9 +75,12 @@ class WalletLoadingService {
|
||||
return wallet;
|
||||
} catch (error, stack) {
|
||||
String corruptedWalletsSeeds = "Corrupted wallets seeds (if retrievable, empty otherwise):";
|
||||
|
||||
if ([WalletType.wownero, WalletType.haven].contains(type)) {
|
||||
corruptedWalletsSeeds += "\n\n$type $name: $error";
|
||||
|
||||
if(error is WalletDeprecationException) {
|
||||
if(navigatorKey.currentContext != null) {
|
||||
showModalBottomSheet(
|
||||
context: navigatorKey.currentContext!, builder: (context)=>WalletDeprecationPopup(type: type, seed: error.seed,));
|
||||
}
|
||||
} else {
|
||||
await ExceptionHandler.resetLastPopupDate();
|
||||
final isLedgerError = await ExceptionHandler.isLedgerError(error);
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
import 'package:cake_wallet/new-ui/widgets/animated_dropdown.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/new_primary_button.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
|
||||
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
|
||||
import 'package:cw_core/currency_for_wallet_type.dart';
|
||||
import 'package:cw_core/wallet_type.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class WalletDeprecationPopup extends StatelessWidget {
|
||||
const WalletDeprecationPopup({super.key, required this.type, this.seed});
|
||||
|
||||
final WalletType type;
|
||||
final String? seed;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final curr = walletTypeToCryptoCurrency(type);
|
||||
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
|
||||
color: Theme.of(context).colorScheme.surface),
|
||||
child: SafeArea(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
ModalTopBar(
|
||||
title: "",
|
||||
leadingIcon: Icon(Icons.close),
|
||||
onLeadingPressed: Navigator.of(context).pop,
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12.0),
|
||||
child: Column(
|
||||
spacing: 24,
|
||||
children: [
|
||||
CakeImageWidget(
|
||||
imageUrl: curr.iconSvgPath ?? curr.iconPath,
|
||||
width: 64,
|
||||
height: 64,
|
||||
),
|
||||
Text(
|
||||
"${curr.fullName} is no longer supported",
|
||||
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
Text(
|
||||
"Apologies for the inconvenience.",
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
if (seed != null) ...[
|
||||
Text(
|
||||
"If you need to migrate your seed, you can see it below.",
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
AnimatedDropdown(content: Text(seed!), dropdownText: "Tap to show seed"),
|
||||
],
|
||||
NewPrimaryButton(
|
||||
onPressed: Navigator.of(context).pop,
|
||||
text: "Close",
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
textColor: Theme.of(context).colorScheme.onPrimary),
|
||||
SizedBox()
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user