diff --git a/lib/screens/settings_wallet_address/settings_wallet_address_page.dart b/lib/screens/settings_wallet_address/settings_wallet_address_page.dart index 6f2c1fcb..414ccff1 100644 --- a/lib/screens/settings_wallet_address/settings_wallet_address_page.dart +++ b/lib/screens/settings_wallet_address/settings_wallet_address_page.dart @@ -6,13 +6,16 @@ import 'package:realunit_wallet/packages/wallet/payment_uri.dart'; import 'package:realunit_wallet/screens/receive/widgets/qr_address_widget.dart'; import 'package:realunit_wallet/setup/di.dart'; import 'package:realunit_wallet/styles/colors.dart'; +import 'package:web3dart/web3dart.dart'; class SettingsWalletAddressPage extends StatelessWidget { const SettingsWalletAddressPage({super.key}); @override Widget build(BuildContext context) { - final walletAddress = getIt().primaryAddress; + // Display the receive address in its EIP-55 checksummed form — the + // canonical representation that lets the user verify it by checksum. + final walletAddress = EthereumAddress.fromHex(getIt().primaryAddress).hexEip55; return Scaffold( appBar: AppBar( diff --git a/test/goldens/screens/settings_wallet_address/goldens/macos/settings_wallet_address_page_default.png b/test/goldens/screens/settings_wallet_address/goldens/macos/settings_wallet_address_page_default.png index a1299ed8..8dbeb105 100644 Binary files a/test/goldens/screens/settings_wallet_address/goldens/macos/settings_wallet_address_page_default.png and b/test/goldens/screens/settings_wallet_address/goldens/macos/settings_wallet_address_page_default.png differ diff --git a/test/screens/settings_wallet_address/settings_wallet_address_page_test.dart b/test/screens/settings_wallet_address/settings_wallet_address_page_test.dart index 616bf400..ffcbb210 100644 --- a/test/screens/settings_wallet_address/settings_wallet_address_page_test.dart +++ b/test/screens/settings_wallet_address/settings_wallet_address_page_test.dart @@ -42,5 +42,16 @@ void main() { findsOne, ); }); + + testWidgets('displays the address in EIP-55 checksummed form', (tester) async { + await tester.pumpApp(const SettingsWalletAddressPage()); + + // The mocked primaryAddress is all-lowercase; the screen must render and + // encode the checksummed (EIP-55) form in both the text and the QR uri. + const checksummed = '0x938115B533a0b746428361760A6972dfd06D984a'; + final qr = tester.widget(find.byType(QRAddressWidget)); + expect(qr.subtitle, checksummed); + expect(qr.uri, contains(checksummed)); + }); }); }