@@ -56,6 +56,13 @@ enum Commands {
5656 /// Amount in sats (optional)
5757 amount : Option < u64 > ,
5858 } ,
59+ /// Get the current lightning address
60+ GetLightningAddress ,
61+ /// Register a lightning address
62+ RegisterLightningAddress {
63+ /// The lightning address name to register
64+ name : String ,
65+ } ,
5966 /// Clear the screen
6067 Clear ,
6168 /// Exit the application
@@ -367,6 +374,14 @@ fn parse_command(input: &str) -> Result<Commands> {
367374
368375 Ok ( Commands :: EstimateFee { destination, amount } )
369376 } ,
377+ "get-lightning-address" | "get-ln-addr" | "ln-addr" => Ok ( Commands :: GetLightningAddress ) ,
378+ "register-lightning-address" | "register-ln-addr" => {
379+ if parts. len ( ) < 2 {
380+ return Err ( anyhow:: anyhow!( "Usage: register-lightning-address <name>" ) ) ;
381+ }
382+ let name = parts[ 1 ] . to_string ( ) ;
383+ Ok ( Commands :: RegisterLightningAddress { name } )
384+ } ,
370385 "clear" | "cls" => Ok ( Commands :: Clear ) ,
371386 "exit" | "quit" | "q" => Ok ( Commands :: Exit ) ,
372387 "help" => {
@@ -590,6 +605,60 @@ async fn execute_command(command: Commands, state: &mut WalletState) -> Result<(
590605 } ,
591606 }
592607 } ,
608+ Commands :: GetLightningAddress => {
609+ let wallet = state. wallet ( ) ;
610+
611+ println ! ( "{} Fetching lightning address..." , "⚡" . bright_yellow( ) ) ;
612+
613+ match wallet. get_lightning_address ( ) . await {
614+ Ok ( Some ( address) ) => {
615+ println ! (
616+ "{} Lightning address: {}" ,
617+ "⚡" . bright_green( ) ,
618+ address. bright_cyan( )
619+ ) ;
620+ } ,
621+ Ok ( None ) => {
622+ println ! ( "{} No lightning address registered yet." , "⚡" . bright_yellow( ) ) ;
623+ println ! (
624+ "{} Use 'register-lightning-address <name>' to register one" ,
625+ "Hint:" . bright_yellow( ) . bold( )
626+ ) ;
627+ } ,
628+ Err ( e) => {
629+ return Err ( anyhow:: anyhow!( "Failed to get lightning address: {:?}" , e) ) ;
630+ } ,
631+ }
632+ } ,
633+ Commands :: RegisterLightningAddress { name } => {
634+ let wallet = state. wallet ( ) ;
635+
636+ println ! (
637+ "{} Registering lightning address: {}..." ,
638+ "⚡" . bright_yellow( ) ,
639+ name. bright_cyan( )
640+ ) ;
641+
642+ match wallet. register_lightning_address ( name. clone ( ) ) . await {
643+ Ok ( ( ) ) => {
644+ println ! ( "{} Lightning address registered successfully!" , "✅" . bright_green( ) ) ;
645+ // Fetch and display the full address
646+ match wallet. get_lightning_address ( ) . await {
647+ Ok ( Some ( address) ) => {
648+ println ! (
649+ "{} Your lightning address: {}" ,
650+ "⚡" . bright_green( ) ,
651+ address. bright_cyan( )
652+ ) ;
653+ } ,
654+ _ => { } ,
655+ }
656+ } ,
657+ Err ( e) => {
658+ return Err ( anyhow:: anyhow!( "Failed to register lightning address: {:?}" , e) ) ;
659+ } ,
660+ }
661+ } ,
593662 Commands :: Clear => {
594663 print ! ( "\x1B [2J\x1B [1;1H" ) ;
595664 std:: io:: stdout ( ) . flush ( ) . unwrap ( ) ;
@@ -628,6 +697,12 @@ fn print_help() {
628697 println ! ( " {} <destination> [amount]" , "estimate-fee" . bright_green( ) . bold( ) ) ;
629698 println ! ( " Estimate the fee for a payment" ) ;
630699 println ! ( ) ;
700+ println ! ( " {}" , "get-lightning-address" . bright_green( ) . bold( ) ) ;
701+ println ! ( " Get the current lightning address" ) ;
702+ println ! ( ) ;
703+ println ! ( " {} <name>" , "register-lightning-address" . bright_green( ) . bold( ) ) ;
704+ println ! ( " Register a lightning address" ) ;
705+ println ! ( ) ;
631706 println ! ( " {}" , "clear" . bright_green( ) . bold( ) ) ;
632707 println ! ( " Clear the terminal screen" ) ;
633708 println ! ( ) ;
0 commit comments