mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-26 06:08:40 +01:00
Cw 1624 trezor passphrase on trezor device instead of app (#3601)
* feat: add support for Trezor device settings configuration and `AwaitingSettings` state in pairing flow * fix ugly widgets * trezor options ui * feat: add support for Trezor on device passphrases * chore: bump trezor_flutter deps * fix: remove unused subtitle property in proceed_on_device_sheet [skip ci] * chore: update trezor_flutter dependency to latest commit [skip ci] * fix: set restore height and store wallet during initialization steps --------- Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com>
This commit is contained in:
co-authored by
Robert Malikowski
parent
dd58455ea6
commit
98f58c2898
@@ -3,7 +3,6 @@ import "dart:async";
|
||||
import "package:cake_wallet/core/wallet_name_validator.dart";
|
||||
import "package:cake_wallet/generated/i18n.dart";
|
||||
import "package:cake_wallet/src/screens/base_page.dart";
|
||||
import "package:cake_wallet/src/screens/connect_device/monero_hardware_wallet_passphrase_input.dart";
|
||||
import "package:cake_wallet/src/widgets/alert_with_one_action.dart";
|
||||
import "package:cake_wallet/src/widgets/base_text_form_field.dart";
|
||||
import "package:cake_wallet/src/widgets/blockchain_height_widget.dart";
|
||||
@@ -136,21 +135,6 @@ class _MoneroHardwareWalletOptionsFormState extends State<_MoneroHardwareWalletO
|
||||
bottomSection: Observer(
|
||||
builder: (_) => Column(
|
||||
children: [
|
||||
if (_walletHardwareRestoreVM.passphraseAvailable) ...[
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
backgroundColor: Colors.transparent,
|
||||
builder: (context) => MoneroHardwareWalletPassphraseInputModal(
|
||||
controller: _passphraseController,
|
||||
),
|
||||
);
|
||||
},
|
||||
child: Text(S.of(context).add_a_passphrase),
|
||||
),
|
||||
],
|
||||
LoadingPrimaryButton(
|
||||
onPressed: _confirmForm,
|
||||
text: S.of(context).seed_language_next,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import "package:cake_wallet/src/widgets/cake_image_widget.dart";
|
||||
import 'package:cake_wallet/src/widgets/new_list_row/list_Item_style_wrapper.dart';
|
||||
import 'package:cake_wallet/src/widgets/standard_switch.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -7,6 +8,8 @@ class ListItemToggleWidget extends StatefulWidget {
|
||||
super.key,
|
||||
required this.keyValue,
|
||||
required this.label,
|
||||
this.subtitle,
|
||||
this.iconPath,
|
||||
required this.value,
|
||||
required this.onChanged,
|
||||
this.leadingEndWidget,
|
||||
@@ -15,7 +18,9 @@ class ListItemToggleWidget extends StatefulWidget {
|
||||
});
|
||||
|
||||
final String keyValue;
|
||||
final String? iconPath;
|
||||
final String label;
|
||||
final String? subtitle;
|
||||
final bool value;
|
||||
final ValueChanged<bool> onChanged;
|
||||
final Widget? leadingEndWidget;
|
||||
@@ -48,8 +53,24 @@ class _ListItemToggleWidgetState extends State<ListItemToggleWidget> {
|
||||
child: Row(
|
||||
spacing: 8,
|
||||
children: [
|
||||
if(widget.iconPath != null && widget.iconPath!.isNotEmpty)
|
||||
CakeImageWidget(imageUrl: widget.iconPath, width: 24, height: 24,),
|
||||
Flexible(
|
||||
child: Text(widget.label, style: textStyle, softWrap: true),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(widget.label, style: textStyle, softWrap: true),
|
||||
if (widget.subtitle != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8),
|
||||
child: Text(
|
||||
widget.subtitle!,
|
||||
style: labelStyle.copyWith(fontSize: 12),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
if (widget.leadingEndWidget != null) widget.leadingEndWidget!
|
||||
],
|
||||
@@ -65,4 +86,4 @@ class _ListItemToggleWidgetState extends State<ListItemToggleWidget> {
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,12 +16,12 @@ import 'package:flutter/material.dart';
|
||||
class NewListSections extends StatelessWidget {
|
||||
const NewListSections(
|
||||
{super.key,
|
||||
required this.sections,
|
||||
this.controllers = const {},
|
||||
this.tapHandlers = const {},
|
||||
this.getCheckboxValue,
|
||||
this.updateCheckboxValue,
|
||||
this.showHeader = false});
|
||||
required this.sections,
|
||||
this.controllers = const {},
|
||||
this.tapHandlers = const {},
|
||||
this.getCheckboxValue,
|
||||
this.updateCheckboxValue,
|
||||
this.showHeader = false});
|
||||
|
||||
final Map<String, List<ListItem>> sections;
|
||||
final Map<String, TextEditingController> controllers;
|
||||
@@ -71,8 +71,8 @@ class NewListSections extends StatelessWidget {
|
||||
final controller = controllers[item.keyValue];
|
||||
|
||||
assert(
|
||||
controller != null,
|
||||
'No controller provided for key ${item.keyValue}. '
|
||||
controller != null,
|
||||
'No controller provided for key ${item.keyValue}. '
|
||||
'Please provide a TextEditingController for this key.');
|
||||
|
||||
return ListItemTextFieldWidget(
|
||||
@@ -120,7 +120,9 @@ class NewListSections extends StatelessWidget {
|
||||
return ListItemToggleWidget(
|
||||
keyValue: item.keyValue,
|
||||
label: item.label,
|
||||
subtitle: item.subtitle,
|
||||
leadingEndWidget: item.leadingEndWidget,
|
||||
iconPath: item.iconPath,
|
||||
value: item.value,
|
||||
onChanged: item.onChanged,
|
||||
isFirstInSection: isFirst,
|
||||
@@ -170,4 +172,4 @@ class NewListSections extends StatelessWidget {
|
||||
|
||||
return SizedBox.shrink();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user