This commit is contained in:
M 2022-03-25 13:34:04 +01:00
parent 64936f3a03
commit 2c6ce75cbd
8 changed files with 73 additions and 82 deletions

View file

@ -124,6 +124,7 @@ import 'package:cake_wallet/store/templates/exchange_template_store.dart';
import 'package:cake_wallet/entities/template.dart'; import 'package:cake_wallet/entities/template.dart';
import 'package:cake_wallet/exchange/exchange_template.dart'; import 'package:cake_wallet/exchange/exchange_template.dart';
import 'package:cake_wallet/.secrets.g.dart' as secrets; import 'package:cake_wallet/.secrets.g.dart' as secrets;
import 'package:cake_wallet/src/screens/dashboard/widgets/address_page.dart';
final getIt = GetIt.instance; final getIt = GetIt.instance;
@ -314,6 +315,9 @@ Future setup(
getIt.registerFactory<DashboardPage>(() => DashboardPage( balancePage: getIt.get<BalancePage>(), walletViewModel: getIt.get<DashboardViewModel>(), addressListViewModel: getIt.get<WalletAddressListViewModel>())); getIt.registerFactory<DashboardPage>(() => DashboardPage( balancePage: getIt.get<BalancePage>(), walletViewModel: getIt.get<DashboardViewModel>(), addressListViewModel: getIt.get<WalletAddressListViewModel>()));
getIt.registerFactory<ReceivePage>(() => ReceivePage( getIt.registerFactory<ReceivePage>(() => ReceivePage(
addressListViewModel: getIt.get<WalletAddressListViewModel>())); addressListViewModel: getIt.get<WalletAddressListViewModel>()));
getIt.registerFactory<AddressPage>(() => AddressPage(
addressListViewModel: getIt.get<WalletAddressListViewModel>(),
walletViewModel: getIt.get<DashboardViewModel>()));
getIt.registerFactoryParam<WalletAddressEditOrCreateViewModel, dynamic, void>( getIt.registerFactoryParam<WalletAddressEditOrCreateViewModel, dynamic, void>(
(dynamic item, _) => WalletAddressEditOrCreateViewModel( (dynamic item, _) => WalletAddressEditOrCreateViewModel(

View file

@ -69,6 +69,7 @@ import 'package:flutter/services.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:cake_wallet/wallet_type_utils.dart'; import 'package:cake_wallet/wallet_type_utils.dart';
import 'package:cake_wallet/wallet_types.g.dart'; import 'package:cake_wallet/wallet_types.g.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/address_page.dart';
RouteSettings currentRouteSettings; RouteSettings currentRouteSettings;
@ -217,6 +218,10 @@ Route<dynamic> createRoute(RouteSettings settings) {
return CupertinoPageRoute<void>( return CupertinoPageRoute<void>(
fullscreenDialog: true, builder: (_) => getIt.get<ReceivePage>()); fullscreenDialog: true, builder: (_) => getIt.get<ReceivePage>());
case Routes.addressPage:
return CupertinoPageRoute<void>(
fullscreenDialog: true, builder: (_) => getIt.get<AddressPage>());
case Routes.transactionDetails: case Routes.transactionDetails:
return CupertinoPageRoute<void>( return CupertinoPageRoute<void>(
fullscreenDialog: true, fullscreenDialog: true,

View file

@ -59,4 +59,5 @@ class Routes {
static const unspentCoinsDetails = '/unspent_coins_details'; static const unspentCoinsDetails = '/unspent_coins_details';
static const moneroRestoreWalletFromWelcome = '/monero_restore_wallet'; static const moneroRestoreWalletFromWelcome = '/monero_restore_wallet';
static const moneroNewWalletFromWelcome = '/monero_new_wallet'; static const moneroNewWalletFromWelcome = '/monero_new_wallet';
static const addressPage = '/address_page';
} }

View file

@ -165,7 +165,7 @@ class DashboardPage extends BasePage {
ActionButton( ActionButton(
image: receiveImage, image: receiveImage,
title: S.of(context).receive, title: S.of(context).receive,
route: Routes.receive), route: Routes.addressPage),
if (walletViewModel.hasExchangeAction) if (walletViewModel.hasExchangeAction)
ActionButton( ActionButton(
image: Image.asset('assets/images/transfer.png', image: Image.asset('assets/images/transfer.png',

View file

@ -1,3 +1,4 @@
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/src/widgets/keyboard_done_button.dart'; import 'package:cake_wallet/src/widgets/keyboard_done_button.dart';
@ -15,7 +16,7 @@ import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:keyboard_actions/keyboard_actions.dart'; import 'package:keyboard_actions/keyboard_actions.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
class AddressPage extends StatelessWidget { class AddressPage extends BasePage {
AddressPage({@required this.addressListViewModel, AddressPage({@required this.addressListViewModel,
this.walletViewModel}) this.walletViewModel})
: _cryptoAmountFocus = FocusNode(); : _cryptoAmountFocus = FocusNode();
@ -26,7 +27,64 @@ class AddressPage extends StatelessWidget {
final FocusNode _cryptoAmountFocus; final FocusNode _cryptoAmountFocus;
@override @override
Widget build(BuildContext context) { String get title => S.current.receive;
@override
Color get backgroundLightColor => currentTheme.type == ThemeType.bright
? Colors.transparent : Colors.white;
@override
Color get backgroundDarkColor => Colors.transparent;
@override
bool get resizeToAvoidBottomInset => false;
@override
Widget leading(BuildContext context) {
final _backButton = Icon(Icons.arrow_back_ios,
color: Theme.of(context).accentTextTheme.display3.backgroundColor,
size: 16,);
return SizedBox(
height: 37,
width: 37,
child: ButtonTheme(
minWidth: double.minPositive,
child: FlatButton(
highlightColor: Colors.transparent,
splashColor: Colors.transparent,
padding: EdgeInsets.all(0),
onPressed: () => onClose(context),
child: _backButton),
),
);
}
@override
Widget middle(BuildContext context) {
return Text(
title,
style: TextStyle(
fontSize: 18.0,
fontWeight: FontWeight.bold,
fontFamily: 'Lato',
color: Theme.of(context).accentTextTheme.display3.backgroundColor),
);
}
@override
Widget Function(BuildContext, Widget) get rootWrapper =>
(BuildContext context, Widget scaffold) => Container(
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
Theme.of(context).accentColor,
Theme.of(context).scaffoldBackgroundColor,
Theme.of(context).primaryColor,
], begin: Alignment.topRight, end: Alignment.bottomLeft)),
child: scaffold);
@override
Widget body(BuildContext context) {
autorun((_) async { autorun((_) async {
if (!walletViewModel.isOutdatedElectrumWallet if (!walletViewModel.isOutdatedElectrumWallet
|| !walletViewModel.settingsStore.shouldShowReceiveWarning) { || !walletViewModel.settingsStore.shouldShowReceiveWarning) {
@ -66,7 +124,6 @@ class AddressPage extends StatelessWidget {
) )
]), ]),
child: Container( child: Container(
height: 1,
padding: EdgeInsets.fromLTRB(24, 24, 24, 32), padding: EdgeInsets.fromLTRB(24, 24, 24, 32),
child: Column( child: Column(
children: <Widget>[ children: <Widget>[

View file

@ -109,7 +109,7 @@ class ReceivePage extends BasePage {
@override @override
Widget body(BuildContext context) { Widget body(BuildContext context) {
return addressListViewModel.type == WalletType.monero return (addressListViewModel.type == WalletType.monero || addressListViewModel.type == WalletType.haven)
? KeyboardActions( ? KeyboardActions(
config: KeyboardActionsConfig( config: KeyboardActionsConfig(
keyboardActionsPlatform: KeyboardActionsPlatform.IOS, keyboardActionsPlatform: KeyboardActionsPlatform.IOS,

View file

@ -133,54 +133,7 @@ class QRWidget extends StatelessWidget {
], ],
), ),
))), ))),
),
Observer(builder: (_) {
return addressListViewModel.emoji.isNotEmpty
? Padding(
padding: EdgeInsets.only(bottom: 10),
child: Builder(
builder: (context) => GestureDetector(
onTap: () {
Clipboard.setData(ClipboardData(
text: addressListViewModel.emoji));
showBar<void>(
context, S.of(context).copied_to_clipboard);
},
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
S.of(context).yat,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 13,
fontWeight: FontWeight.normal,
color: Theme.of(context).accentTextTheme.
display3.backgroundColor),
),
Padding(
padding: EdgeInsets.only(top: 5),
child: Row(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(child:Text(
addressListViewModel.emoji,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 26))),
Padding(
padding: EdgeInsets.only(left: 12),
child: copyImage,
)]
),
) )
]
)
)),
)
: Container();
})
], ],
); );
} }

View file

@ -100,30 +100,7 @@ abstract class WalletAddressListViewModelBase with Store {
}) { }) {
_appStore = appStore; _appStore = appStore;
_wallet = _appStore.wallet; _wallet = _appStore.wallet;
emoji = '';
hasAccounts = _wallet?.type == WalletType.monero || _wallet?.type == WalletType.haven; hasAccounts = _wallet?.type == WalletType.monero || _wallet?.type == WalletType.haven;
reaction((_) => _wallet.walletAddresses.address, (String address) {
if (address == _wallet.walletInfo.yatLastUsedAddress) {
emoji = yatStore.emoji;
} else {
emoji = '';
}
});
//reaction((_) => yatStore.emoji, (String emojiId) => this.emoji = emojiId);
//_onLastUsedYatAddressSubscription =
// _wallet.walletInfo.yatLastUsedAddressStream.listen((String yatAddress) {
// if (yatAddress == _wallet.walletAddresses.address) {
// emoji = yatStore.emoji;
// } else {
// emoji = '';
// }
//});
if (_wallet.walletAddresses.address == _wallet.walletInfo.yatLastUsedAddress) {
emoji = yatStore.emoji;
}
_onWalletChangeReaction = reaction((_) => _appStore.wallet, (WalletBase< _onWalletChangeReaction = reaction((_) => _appStore.wallet, (WalletBase<
Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo> Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo>
@ -243,9 +220,6 @@ abstract class WalletAddressListViewModelBase with Store {
@computed @computed
bool get hasAddressList => _wallet.type == WalletType.monero || _wallet.type == WalletType.haven; bool get hasAddressList => _wallet.type == WalletType.monero || _wallet.type == WalletType.haven;
@observable
String emoji;
@observable @observable
WalletBase<Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo> WalletBase<Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo>
_wallet; _wallet;
@ -258,9 +232,6 @@ abstract class WalletAddressListViewModelBase with Store {
ReactionDisposer _onWalletChangeReaction; ReactionDisposer _onWalletChangeReaction;
StreamSubscription<String> _onLastUsedYatAddressSubscription;
StreamSubscription<String> _onEmojiIdChangeSubscription;
@action @action
void setAddress(WalletAddressListItem address) => void setAddress(WalletAddressListItem address) =>
_wallet.walletAddresses.address = address.address; _wallet.walletAddresses.address = address.address;