@@ -49,6 +49,13 @@ enum Commands {
4949 Transactions ,
5050 /// List our lightning Channels
5151 Channels ,
52+ /// Get the current lightning address
53+ GetLightningAddress ,
54+ /// Register a lightning address
55+ RegisterLightningAddress {
56+ /// The lightning address name to register
57+ name : String ,
58+ } ,
5259 /// Clear the screen
5360 Clear ,
5461 /// Exit the application
@@ -346,6 +353,14 @@ fn parse_command(input: &str) -> Result<Commands> {
346353 "status" => Ok ( Commands :: Status ) ,
347354 "transactions" | "txs" | "tx" => Ok ( Commands :: Transactions ) ,
348355 "channels" | "chan" => Ok ( Commands :: Channels ) ,
356+ "get-lightning-address" | "get-ln-addr" | "ln-addr" => Ok ( Commands :: GetLightningAddress ) ,
357+ "register-lightning-address" | "register-ln-addr" => {
358+ if parts. len ( ) < 2 {
359+ return Err ( anyhow:: anyhow!( "Usage: register-lightning-address <name>" ) ) ;
360+ }
361+ let name = parts[ 1 ] . to_string ( ) ;
362+ Ok ( Commands :: RegisterLightningAddress { name } )
363+ } ,
349364 "clear" | "cls" => Ok ( Commands :: Clear ) ,
350365 "exit" | "quit" | "q" => Ok ( Commands :: Exit ) ,
351366 "help" => {
@@ -542,6 +557,60 @@ async fn execute_command(command: Commands, state: &mut WalletState) -> Result<(
542557 }
543558 }
544559 } ,
560+ Commands :: GetLightningAddress => {
561+ let wallet = state. wallet ( ) ;
562+
563+ println ! ( "{} Fetching lightning address..." , "⚡" . bright_yellow( ) ) ;
564+
565+ match wallet. get_lightning_address ( ) . await {
566+ Ok ( Some ( address) ) => {
567+ println ! (
568+ "{} Lightning address: {}" ,
569+ "⚡" . bright_green( ) ,
570+ address. bright_cyan( )
571+ ) ;
572+ } ,
573+ Ok ( None ) => {
574+ println ! ( "{} No lightning address registered yet." , "⚡" . bright_yellow( ) ) ;
575+ println ! (
576+ "{} Use 'register-lightning-address <name>' to register one" ,
577+ "Hint:" . bright_yellow( ) . bold( )
578+ ) ;
579+ } ,
580+ Err ( e) => {
581+ return Err ( anyhow:: anyhow!( "Failed to get lightning address: {:?}" , e) ) ;
582+ } ,
583+ }
584+ } ,
585+ Commands :: RegisterLightningAddress { name } => {
586+ let wallet = state. wallet ( ) ;
587+
588+ println ! (
589+ "{} Registering lightning address: {}..." ,
590+ "⚡" . bright_yellow( ) ,
591+ name. bright_cyan( )
592+ ) ;
593+
594+ match wallet. register_lightning_address ( name. clone ( ) ) . await {
595+ Ok ( ( ) ) => {
596+ println ! ( "{} Lightning address registered successfully!" , "✅" . bright_green( ) ) ;
597+ // Fetch and display the full address
598+ match wallet. get_lightning_address ( ) . await {
599+ Ok ( Some ( address) ) => {
600+ println ! (
601+ "{} Your lightning address: {}" ,
602+ "⚡" . bright_green( ) ,
603+ address. bright_cyan( )
604+ ) ;
605+ } ,
606+ _ => { } ,
607+ }
608+ } ,
609+ Err ( e) => {
610+ return Err ( anyhow:: anyhow!( "Failed to register lightning address: {:?}" , e) ) ;
611+ } ,
612+ }
613+ } ,
545614 Commands :: Clear => {
546615 print ! ( "\x1B [2J\x1B [1;1H" ) ;
547616 std:: io:: stdout ( ) . flush ( ) . unwrap ( ) ;
@@ -577,6 +646,12 @@ fn print_help() {
577646 println ! ( " {}" , "channels" . bright_green( ) . bold( ) ) ;
578647 println ! ( " List channels" ) ;
579648 println ! ( ) ;
649+ println ! ( " {}" , "get-lightning-address" . bright_green( ) . bold( ) ) ;
650+ println ! ( " Get the current lightning address" ) ;
651+ println ! ( ) ;
652+ println ! ( " {} <name>" , "register-lightning-address" . bright_green( ) . bold( ) ) ;
653+ println ! ( " Register a lightning address" ) ;
654+ println ! ( ) ;
580655 println ! ( " {}" , "clear" . bright_green( ) . bold( ) ) ;
581656 println ! ( " Clear the terminal screen" ) ;
582657 println ! ( ) ;
@@ -587,7 +662,8 @@ fn print_help() {
587662 println ! ( " balance" ) ;
588663 println ! ( " send lnbc1... 10000" ) ;
589664 println ! ( " receive 25000" ) ;
590- println ! ( " events" ) ;
665+ println ! ( " register-lightning-address myname" ) ;
666+ println ! ( " get-lightning-address" ) ;
591667 println ! ( ) ;
592668 println ! ( "{}" , "Note:" . bright_yellow( ) . bold( ) ) ;
593669 println ! ( " The wallet will be auto-initialized on first use with:" ) ;
0 commit comments