11using Avalonia . Controls ;
2+ using Avalonia . Media ;
3+ using NBitcoin ;
4+ using System . Linq ;
5+ using System . Text ;
6+ using WriteUpProject . Crypto ;
27
38namespace WriteUpProject . Views . Pages
49{
@@ -11,14 +16,59 @@ public Page2View()
1116
1217 private void ChangeAddressChanged ( object ? sender , TextChangedEventArgs e )
1318 {
19+ var networks = new [ ] { Network . Main , Network . TestNet , Network . TestNet4 , Network . RegTest } ;
20+ var input = ChangeAddressBox . Text ?? string . Empty ;
21+
22+ bool isValid = networks . Any ( n => Helper . TryParseAddress ( input , n ) ) ;
23+
24+ if ( isValid )
25+ {
26+ AddressValidator . Text = "✅ Valid Address" ;
27+ AddressValidator . Foreground = Brushes . Green ;
28+ }
29+ else
30+ {
31+ AddressValidator . Text = "⚠️ Invalid Address" ;
32+ AddressValidator . Foreground = Brushes . Red ;
33+ }
1434 }
1535
1636 private void OnMessageChanged ( object ? sender , TextChangedEventArgs e )
1737 {
38+ string msg = MessageBox . Text ?? "" ;
39+ int byteLength = Encoding . UTF8 . GetBytes ( msg ) . Length ;
40+
41+ if ( byteLength > 80 )
42+ {
43+ MessageByteCounter . Text = $ "⚠️ Too long: { byteLength } /80 bytes";
44+ MessageByteCounter . Foreground = Brushes . Red ;
45+ }
46+ else
47+ {
48+ MessageByteCounter . Text = $ "🧮 { byteLength } /80 bytes";
49+ MessageByteCounter . Foreground = Brushes . Gray ;
50+ }
1851 }
1952
2053 private void OnFeeRateChanged ( object ? sender , TextChangedEventArgs e )
2154 {
55+ if ( int . TryParse ( FeeRateBox . Text , out int feeRate ) )
56+ {
57+ if ( feeRate > 10 )
58+ {
59+ FeeRateValidator . Text = "⚠️ Warning: High FeeRate. Please check the average transaction fee, before wasting too much money." ;
60+ FeeRateValidator . Foreground = Brushes . Gray ;
61+ }
62+ else
63+ {
64+ FeeRateValidator . Text = string . Empty ;
65+ }
66+ }
67+ else
68+ {
69+ FeeRateValidator . Text = "⚠️ Invalid FeeRate" ;
70+ FeeRateValidator . Foreground = Brushes . Red ;
71+ }
2272 }
2373 }
2474}
0 commit comments