feat: go directly into wallet if only a single wallet exists for the specified currency on desktop

This commit is contained in:
julian 2024-11-08 15:19:18 -06:00 committed by julian-CStack
parent 0080d25436
commit 3d2d0e4e73

View file

@ -19,15 +19,19 @@ import '../../providers/providers.dart';
import '../../themes/coin_icon_provider.dart';
import '../../themes/stack_colors.dart';
import '../../utilities/amount/amount.dart';
import '../../utilities/show_loading.dart';
import '../../utilities/text_styles.dart';
import '../../utilities/util.dart';
import '../../wallets/crypto_currency/crypto_currency.dart';
import '../../wallets/isar/providers/all_wallets_info_provider.dart';
import '../../wallets/wallet/intermediate/lib_monero_wallet.dart';
import '../../widgets/breathing.dart';
import '../../widgets/conditional_parent.dart';
import '../../widgets/desktop/desktop_dialog.dart';
import '../../widgets/desktop/desktop_dialog_close_button.dart';
import '../../widgets/dialogs/tor_warning_dialog.dart';
import '../../widgets/rounded_white_container.dart';
import 'wallet_view/desktop_wallet_view.dart';
class WalletSummaryTable extends ConsumerStatefulWidget {
const WalletSummaryTable({super.key});
@ -86,10 +90,7 @@ class DesktopWalletSummaryRow extends ConsumerStatefulWidget {
class _DesktopWalletSummaryRowState
extends ConsumerState<DesktopWalletSummaryRow> {
bool _hovering = false;
void _onPressed() async {
// Check if Tor is enabled...
Future<void> _checkTor() async {
if (ref.read(prefsChangeNotifierProvider).useTor) {
// ... and if the coin supports Tor.
if (!widget.coin.torSupport) {
@ -106,44 +107,97 @@ class _DesktopWalletSummaryRowState
}
}
}
}
showDialog<void>(
context: context,
builder: (_) => DesktopDialog(
maxHeight: 600,
maxWidth: 700,
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
bool get goStraightIntoWallet =>
Util.isDesktop && widget.walletCount == 1 && !widget.coin.hasTokenSupport;
bool _buttonLock = false;
Future<void> _onPressedSingleWalletDesktop() async {
if (_buttonLock) return;
_buttonLock = true;
try {
await _checkTor();
if (mounted) {
final wallet = ref.read(pWallets).wallets.firstWhere(
(e) => e.cryptoCurrency.identifier == widget.coin.identifier);
final Future<void> loadFuture;
if (wallet is LibMoneroWallet) {
loadFuture =
wallet.init().then((value) async => await (wallet).open());
} else {
loadFuture = wallet.init();
}
await showLoading(
whileFuture: loadFuture,
context: context,
message: 'Opening ${wallet.info.name}',
rootNavigator: Util.isDesktop,
);
if (mounted) {
await Navigator.of(context).pushNamed(
DesktopWalletView.routeName,
arguments: wallet.walletId,
);
}
}
} finally {
_buttonLock = false;
}
}
void _onPressed() async {
if (_buttonLock) return;
_buttonLock = true;
try {
// Check if Tor is enabled...
await _checkTor();
if (mounted) {
await showDialog<void>(
context: context,
builder: (_) => DesktopDialog(
maxHeight: 600,
maxWidth: 700,
child: Column(
children: [
Padding(
padding: const EdgeInsets.only(left: 32),
child: Text(
"${widget.coin.prettyName} (${widget.coin.ticker}) wallets",
style: STextStyles.desktopH3(context),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsets.only(left: 32),
child: Text(
"${widget.coin.prettyName} (${widget.coin.ticker}) wallets",
style: STextStyles.desktopH3(context),
),
),
const DesktopDialogCloseButton(),
],
),
Expanded(
child: Padding(
padding: const EdgeInsets.only(
left: 32,
right: 32,
bottom: 32,
),
child: WalletsOverview(
coin: widget.coin,
navigatorState: Navigator.of(context),
),
),
),
const DesktopDialogCloseButton(),
],
),
Expanded(
child: Padding(
padding: const EdgeInsets.only(
left: 32,
right: 32,
bottom: 32,
),
child: WalletsOverview(
coin: widget.coin,
navigatorState: Navigator.of(context),
),
),
),
],
),
),
);
),
);
}
} finally {
_buttonLock = false;
}
}
@override
@ -152,7 +206,8 @@ class _DesktopWalletSummaryRowState
child: RoundedWhiteContainer(
padding: const EdgeInsets.all(20),
hoverColor: Colors.transparent,
onPressed: _onPressed,
onPressed:
goStraightIntoWallet ? _onPressedSingleWalletDesktop : _onPressed,
child: Row(
children: [
Expanded(