Address-formatting-enhancements-MWEB (#2189)

* apply formatting to address book and MWEB

* fix wallet type exception

* Update cw_core/lib/wallet_type.dart [skip ci]

* Update lib/src/screens/contact/contact_list_page.dart [skip ci]

* Update lib/src/screens/contact/contact_list_page.dart [skip ci]

* Update lib/utils/address_formatter.dart [skip ci]

* Update lib/utils/address_formatter.dart [skip ci]

* Update lib/utils/address_formatter.dart

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
Serhii
2025-04-11 19:51:30 +02:00
committed by GitHub
co-authored by Omar Hatem
parent 2f28ea3fb7
commit a7376c3225
5 changed files with 173 additions and 84 deletions
+43 -40
View File
@@ -12,9 +12,11 @@ import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/src/widgets/standard_list.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
import 'package:cake_wallet/utils/address_formatter.dart';
import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/contact_list/contact_list_view_model.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -235,7 +237,7 @@ class _ContactPageBodyState extends State<ContactPageBody> with SingleTickerProv
return;
}
final isCopied = await showNameAndAddressDialog(context, contact.name, contact.address);
final isCopied = await DialogService.showNameAndAddressDialog(context, contact);
if (isCopied) {
await Clipboard.setData(ClipboardData(text: contact.address));
@@ -280,21 +282,6 @@ class _ContactPageBodyState extends State<ContactPageBody> with SingleTickerProv
? Image.asset(image, height: 24, width: 24)
: const SizedBox(height: 24, width: 24);
}
Future<bool> showNameAndAddressDialog(BuildContext context, String name, String address) async {
return await showPopUp<bool>(
context: context,
builder: (BuildContext context) {
return AlertWithTwoActions(
alertTitle: name,
alertContent: address,
rightButtonText: S.of(context).copy,
leftButtonText: S.of(context).cancel,
actionRightButton: () => Navigator.of(context).pop(true),
actionLeftButton: () => Navigator.of(context).pop(false));
}) ??
false;
}
}
class ContactListBody extends StatefulWidget {
@@ -357,7 +344,7 @@ class _ContactListBodyState extends State<ContactListBody> {
}
final isCopied =
await showNameAndAddressDialog(context, contact.name, contact.address);
await DialogService.showNameAndAddressDialog(context, contact);
if (isCopied) {
await Clipboard.setData(ClipboardData(text: contact.address));
@@ -434,7 +421,7 @@ class _ContactListBodyState extends State<ContactListBody> {
),
SlidableAction(
onPressed: (_) async {
final isDelete = await showAlertDialog(context);
final isDelete = await DialogService.showAlertDialog(context);
if (isDelete) {
await widget.contactListViewModel.delete(contact);
@@ -494,33 +481,49 @@ class _ContactListBodyState extends State<ContactListBody> {
);
}
Future<bool> showAlertDialog(BuildContext context) async {
}
class DialogService {
static Future<bool> showAlertDialog(BuildContext context) async {
return await showPopUp<bool>(
context: context,
builder: (BuildContext context) {
return AlertWithTwoActions(
alertTitle: S.of(context).address_remove_contact,
alertContent: S.of(context).address_remove_content,
rightButtonText: S.of(context).remove,
leftButtonText: S.of(context).cancel,
actionRightButton: () => Navigator.of(context).pop(true),
actionLeftButton: () => Navigator.of(context).pop(false));
}) ??
context: context,
builder: (BuildContext context) {
return AlertWithTwoActions(
alertTitle: S.of(context).address_remove_contact,
alertContent: S.of(context).address_remove_content,
rightButtonText: S.of(context).remove,
leftButtonText: S.of(context).cancel,
actionRightButton: () => Navigator.of(context).pop(true),
actionLeftButton: () => Navigator.of(context).pop(false));
}) ??
false;
}
Future<bool> showNameAndAddressDialog(BuildContext context, String name, String address) async {
static Future<bool> showNameAndAddressDialog(BuildContext context,ContactBase contact) async {
return await showPopUp<bool>(
context: context,
builder: (BuildContext context) {
return AlertWithTwoActions(
alertTitle: name,
alertContent: address,
rightButtonText: S.of(context).copy,
leftButtonText: S.of(context).cancel,
actionRightButton: () => Navigator.of(context).pop(true),
actionLeftButton: () => Navigator.of(context).pop(false));
}) ??
context: context,
builder: (BuildContext context) {
return AlertWithTwoActions(
alertTitle: contact.name,
alertContent: contact.address,
alertContentTextWidget: AddressFormatter.buildSegmentedAddress(
address: contact.address,
textAlign: TextAlign.center,
walletType: cryptoCurrencyToWalletType(contact.type),
evenTextStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
fontFamily: 'Lato',
color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
decoration: TextDecoration.none,
),
),
rightButtonText: S.of(context).copy,
leftButtonText: S.of(context).cancel,
actionRightButton: () => Navigator.of(context).pop(true),
actionLeftButton: () => Navigator.of(context).pop(false));
}) ??
false;
}
}
@@ -6,6 +6,7 @@ class AlertWithTwoActions extends BaseAlertDialog {
AlertWithTwoActions({
required this.alertTitle,
required this.alertContent,
this.alertContentTextWidget,
required this.leftButtonText,
required this.rightButtonText,
required this.actionLeftButton,
@@ -21,6 +22,7 @@ class AlertWithTwoActions extends BaseAlertDialog {
final String alertTitle;
final String alertContent;
final Widget? alertContentTextWidget;
final String leftButtonText;
final String rightButtonText;
final VoidCallback actionLeftButton;
@@ -38,6 +40,8 @@ class AlertWithTwoActions extends BaseAlertDialog {
@override
String get contentText => alertContent;
@override
Widget? get contentTextWidget => alertContentTextWidget;
@override
String get leftActionButtonText => leftButtonText;
@override
String get rightActionButtonText => rightButtonText;
+4 -1
View File
@@ -13,6 +13,8 @@ class BaseAlertDialog extends StatelessWidget {
String get contentText => '';
Widget? get contentTextWidget => null;
String get leftActionButtonText => '';
String get rightActionButtonText => '';
@@ -79,7 +81,8 @@ class BaseAlertDialog extends StatelessWidget {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
contentTextWidget ??
Text(
contentText,
textAlign: TextAlign.center,
style: TextStyle(