mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-11-16 17:27:39 +00:00
Lelantus settings mobile UI
and cleanup
This commit is contained in:
parent
32561b5694
commit
8374d30035
5 changed files with 199 additions and 6 deletions
|
@ -336,8 +336,6 @@ class _RestoreWalletViewState extends ConsumerState<RestoreWalletView> {
|
||||||
mnemonic: mnemonic,
|
mnemonic: mnemonic,
|
||||||
);
|
);
|
||||||
|
|
||||||
// TODO [prio=high]: Update wallet with widget.enableLelantusScanning.
|
|
||||||
|
|
||||||
// TODO: extract interface with isRestore param
|
// TODO: extract interface with isRestore param
|
||||||
switch (wallet.runtimeType) {
|
switch (wallet.runtimeType) {
|
||||||
case const (EpiccashWallet):
|
case const (EpiccashWallet):
|
||||||
|
|
|
@ -0,0 +1,146 @@
|
||||||
|
/*
|
||||||
|
* This file is part of Stack Wallet.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023 Cypher Stack
|
||||||
|
* All Rights Reserved.
|
||||||
|
* The code is distributed under GPLv3 license, see LICENSE file for details.
|
||||||
|
* Generated by Cypher Stack on 2023-05-26
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
|
||||||
|
import '../../../../providers/db/main_db_provider.dart';
|
||||||
|
import '../../../../providers/global/wallets_provider.dart';
|
||||||
|
import '../../../../themes/stack_colors.dart';
|
||||||
|
import '../../../../utilities/text_styles.dart';
|
||||||
|
import '../../../../wallets/crypto_currency/crypto_currency.dart';
|
||||||
|
import '../../../../wallets/isar/models/wallet_info.dart';
|
||||||
|
import '../../../../wallets/wallet/wallet.dart';
|
||||||
|
import '../../../../widgets/background.dart';
|
||||||
|
import '../../../../widgets/custom_buttons/app_bar_icon_button.dart';
|
||||||
|
import '../../../../widgets/custom_buttons/draggable_switch_button.dart';
|
||||||
|
|
||||||
|
class LelantusSettingsView extends ConsumerStatefulWidget {
|
||||||
|
const LelantusSettingsView({
|
||||||
|
super.key,
|
||||||
|
required this.walletId,
|
||||||
|
});
|
||||||
|
|
||||||
|
static const String routeName = "/lelantusSettings";
|
||||||
|
|
||||||
|
final String walletId;
|
||||||
|
|
||||||
|
@override
|
||||||
|
ConsumerState<LelantusSettingsView> createState() =>
|
||||||
|
_LelantusSettingsViewState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _LelantusSettingsViewState extends ConsumerState<LelantusSettingsView> {
|
||||||
|
late final TextEditingController _controller;
|
||||||
|
late final String walletId;
|
||||||
|
|
||||||
|
final _focusNode = FocusNode();
|
||||||
|
|
||||||
|
bool _isInitialized = false;
|
||||||
|
Wallet<CryptoCurrency>? wallet;
|
||||||
|
bool? enableLelantusScanning = false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didChangeDependencies() {
|
||||||
|
super.didChangeDependencies();
|
||||||
|
if (!_isInitialized) {
|
||||||
|
// Get the wallet.
|
||||||
|
wallet = ref.watch(
|
||||||
|
pWallets.select(
|
||||||
|
(value) => value.getWallet(widget.walletId),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Parse otherDataJsonString to get the enableLelantusScanning value.
|
||||||
|
if (wallet?.info.otherDataJsonString != null) {
|
||||||
|
final otherDataJson = json.decode(wallet!.info.otherDataJsonString!);
|
||||||
|
enableLelantusScanning =
|
||||||
|
otherDataJson["enableLelantusScanning"] as bool? ?? false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_isInitialized = true; // Ensure this logic runs only once
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_controller.dispose();
|
||||||
|
_focusNode.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Background(
|
||||||
|
child: Scaffold(
|
||||||
|
backgroundColor: Theme.of(context).extension<StackColors>()!.background,
|
||||||
|
appBar: AppBar(
|
||||||
|
leading: AppBarBackButton(
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
"Lelantus settings",
|
||||||
|
style: STextStyles.navBarTitle(context),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
body: Padding(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 20,
|
||||||
|
width: 40,
|
||||||
|
child: DraggableSwitchButton(
|
||||||
|
isOn: enableLelantusScanning ?? false,
|
||||||
|
onValueChanged: (newValue) {
|
||||||
|
// Toggle enableLelantusScanning in wallet info.
|
||||||
|
wallet?.info.updateOtherData(newEntries: {
|
||||||
|
WalletInfoKeys.enableLelantusScanning:
|
||||||
|
!(enableLelantusScanning ?? false)
|
||||||
|
}, isar: ref.read(mainDBProvider).isar).then((value) {
|
||||||
|
// Should setState be used here?
|
||||||
|
enableLelantusScanning =
|
||||||
|
!(enableLelantusScanning ?? false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
width: 16,
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
"Scan for Lelantus transactions",
|
||||||
|
style: STextStyles.smallMed12(context),
|
||||||
|
),
|
||||||
|
// Text(
|
||||||
|
// detail,
|
||||||
|
// style: STextStyles.desktopTextExtraExtraSmall(context),
|
||||||
|
// ),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,9 +10,7 @@
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import '../../../pinpad_views/lock_screen_view.dart';
|
|
||||||
import 'delete_wallet_warning_view.dart';
|
|
||||||
import 'rename_wallet_view.dart';
|
|
||||||
import '../../../../route_generator.dart';
|
import '../../../../route_generator.dart';
|
||||||
import '../../../../themes/stack_colors.dart';
|
import '../../../../themes/stack_colors.dart';
|
||||||
import '../../../../utilities/constants.dart';
|
import '../../../../utilities/constants.dart';
|
||||||
|
@ -22,6 +20,10 @@ import '../../../../widgets/background.dart';
|
||||||
import '../../../../widgets/custom_buttons/app_bar_icon_button.dart';
|
import '../../../../widgets/custom_buttons/app_bar_icon_button.dart';
|
||||||
import '../../../../widgets/rounded_white_container.dart';
|
import '../../../../widgets/rounded_white_container.dart';
|
||||||
import '../../../../widgets/stack_dialog.dart';
|
import '../../../../widgets/stack_dialog.dart';
|
||||||
|
import '../../../pinpad_views/lock_screen_view.dart';
|
||||||
|
import 'delete_wallet_warning_view.dart';
|
||||||
|
import 'lelantus_settings_view.dart';
|
||||||
|
import 'rename_wallet_view.dart';
|
||||||
|
|
||||||
class WalletSettingsWalletSettingsView extends ConsumerWidget {
|
class WalletSettingsWalletSettingsView extends ConsumerWidget {
|
||||||
const WalletSettingsWalletSettingsView({
|
const WalletSettingsWalletSettingsView({
|
||||||
|
@ -180,6 +182,40 @@ class WalletSettingsWalletSettingsView extends ConsumerWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 8,
|
||||||
|
),
|
||||||
|
RoundedWhiteContainer(
|
||||||
|
padding: const EdgeInsets.all(0),
|
||||||
|
child: RawMaterialButton(
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(
|
||||||
|
Constants.size.circularBorderRadius,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).pushNamed(
|
||||||
|
LelantusSettingsView.routeName,
|
||||||
|
arguments: walletId,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 12.0,
|
||||||
|
vertical: 20,
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
"Lelantus settings",
|
||||||
|
style: STextStyles.titleBold12(context),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -129,6 +129,7 @@ import 'pages/settings_views/wallet_settings_view/wallet_settings_view.dart';
|
||||||
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/change_representative_view.dart';
|
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/change_representative_view.dart';
|
||||||
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/delete_wallet_recovery_phrase_view.dart';
|
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/delete_wallet_recovery_phrase_view.dart';
|
||||||
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/delete_wallet_warning_view.dart';
|
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/delete_wallet_warning_view.dart';
|
||||||
|
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/lelantus_settings_view.dart';
|
||||||
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/rename_wallet_view.dart';
|
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/rename_wallet_view.dart';
|
||||||
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/wallet_settings_wallet_settings_view.dart';
|
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/wallet_settings_wallet_settings_view.dart';
|
||||||
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/xpub_view.dart';
|
import 'pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/xpub_view.dart';
|
||||||
|
@ -1953,6 +1954,18 @@ class RouteGenerator {
|
||||||
}
|
}
|
||||||
return _routeError("${settings.name} invalid args: ${args.toString()}");
|
return _routeError("${settings.name} invalid args: ${args.toString()}");
|
||||||
|
|
||||||
|
case LelantusSettingsView.routeName:
|
||||||
|
if (args is String) {
|
||||||
|
return getRoute(
|
||||||
|
shouldUseMaterialRoute: useMaterialPageRoute,
|
||||||
|
builder: (_) => LelantusSettingsView(walletId: args),
|
||||||
|
settings: RouteSettings(
|
||||||
|
name: settings.name,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return _routeError("${settings.name} invalid args: ${args.toString()}");
|
||||||
|
|
||||||
// == Desktop specific routes ============================================
|
// == Desktop specific routes ============================================
|
||||||
case CreatePasswordView.routeName:
|
case CreatePasswordView.routeName:
|
||||||
if (args is bool) {
|
if (args is bool) {
|
||||||
|
|
|
@ -1194,7 +1194,7 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.2.0"
|
||||||
monero:
|
monero:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: "6a17a405a1a260fa228b2f4fc94044088a4335ac"
|
ref: "6a17a405a1a260fa228b2f4fc94044088a4335ac"
|
||||||
|
|
Loading…
Reference in a new issue