@@ -13,11 +13,16 @@ public class Deadletter : IDeadletter
1313{
1414 private readonly IHelp _helpService ;
1515 private readonly IServiceBusService _serviceBusService ;
16+ private readonly IFileService _fileService ;
17+ private readonly IUserSettingsService _userSettingsService ;
1618
17- public Deadletter ( IHelp helpService , IServiceBusService serviceBusRepostitory )
19+
20+ public Deadletter ( IHelp helpService , IServiceBusService serviceBusRepostitory , IFileService fileService , IUserSettingsService userSettingsService )
1821 {
1922 _helpService = helpService ;
2023 _serviceBusService = serviceBusRepostitory ;
24+ _fileService = fileService ;
25+ _userSettingsService = userSettingsService ;
2126 }
2227
2328 public async Task Run ( string [ ] args )
@@ -60,6 +65,8 @@ private async Task Resend(List<string> args)
6065 {
6166 var fullyQualifiedNamespace = "" ;
6267 var entityPath = "" ;
68+ var settingsFileContent = _fileService . GetConfigFileContent ( ) ;
69+ var savedNamespaces = _userSettingsService . Deserialize ( settingsFileContent ) ;
6370
6471 switch ( args . Count )
6572 {
@@ -68,9 +75,22 @@ private async Task Resend(List<string> args)
6875 entityPath = args [ 1 ] ;
6976 break ;
7077 default :
71- fullyQualifiedNamespace = await AnsiConsole . PromptAsync (
72- new TextPrompt < string > ( "Enter the [green]fully qualified namespace[/]:" )
73- ) ;
78+ if ( ! savedNamespaces . FullyQualifiedNamespaces . Any ( ) )
79+ {
80+ fullyQualifiedNamespace = await AnsiConsole . PromptAsync (
81+ new TextPrompt < string > ( "Enter the [green]fully qualified namespace[/]:" )
82+ ) ;
83+ }
84+ else
85+ {
86+ fullyQualifiedNamespace = await AnsiConsole . PromptAsync (
87+ new SelectionPrompt < string > ( )
88+ . Title ( "Select a fully qualified namespace:" )
89+ . PageSize ( 10 )
90+ . AddChoices ( savedNamespaces . FullyQualifiedNamespaces )
91+ ) ;
92+ AnsiConsole . MarkupLine ( $ "[grey]Selected fully qualified namespace: { fullyQualifiedNamespace } [/]") ;
93+ }
7494
7595 var queues = await AnsiConsole . Status ( )
7696 . StartAsync ( $ "Fetching queues on { fullyQualifiedNamespace } ...", async ctx =>
@@ -90,7 +110,9 @@ private async Task Resend(List<string> args)
90110 . AddChoices ( queues . Select ( q => $ "{ q . QueueProperties . Name } ([green]{ q . QueueRuntimeProperties . ActiveMessageCount } [/], [red]{ q . QueueRuntimeProperties . DeadLetterMessageCount } [/], [blue]{ q . QueueRuntimeProperties . ScheduledMessageCount } [/])") . ToList ( ) )
91111 ) ;
92112 entityPath = selectedQueue . Split ( ' ' ) [ 0 ] ;
93-
113+
114+ AnsiConsole . MarkupLine ( $ "[grey]Selected queue: { entityPath } [/]") ;
115+
94116 break ;
95117 }
96118
@@ -144,6 +166,8 @@ private async Task Purge(List<string> args)
144166 {
145167 var fullyQualifiedNamespace = "" ;
146168 var entityPath = "" ;
169+ var settingsFileContent = _fileService . GetConfigFileContent ( ) ;
170+ var savedNamespaces = _userSettingsService . Deserialize ( settingsFileContent ) ;
147171
148172 switch ( args . Count )
149173 {
@@ -152,9 +176,22 @@ private async Task Purge(List<string> args)
152176 entityPath = args [ 1 ] ;
153177 break ;
154178 default :
155- fullyQualifiedNamespace = await AnsiConsole . PromptAsync (
156- new TextPrompt < string > ( "Enter the [green]fully qualified namespace[/]:" )
157- ) ;
179+ if ( ! savedNamespaces . FullyQualifiedNamespaces . Any ( ) )
180+ {
181+ fullyQualifiedNamespace = await AnsiConsole . PromptAsync (
182+ new TextPrompt < string > ( "Enter the [green]fully qualified namespace[/]:" ) //Here
183+ ) ;
184+ }
185+ else
186+ {
187+ fullyQualifiedNamespace = await AnsiConsole . PromptAsync (
188+ new SelectionPrompt < string > ( )
189+ . Title ( "Select a fully qualified namespace:" )
190+ . PageSize ( 10 )
191+ . AddChoices ( savedNamespaces . FullyQualifiedNamespaces )
192+ ) ;
193+ AnsiConsole . MarkupLine ( $ "[grey]Selected fully qualified namespace: { fullyQualifiedNamespace } [/]") ;
194+ }
158195
159196 var queues = await AnsiConsole . Status ( )
160197 . StartAsync ( $ "Fetching queues on { fullyQualifiedNamespace } ...", async ctx =>
@@ -164,7 +201,7 @@ private async Task Purge(List<string> args)
164201
165202 return await _serviceBusService . GetInformationAboutAllQueues ( fullyQualifiedNamespace ) . ConfigureAwait ( false ) ;
166203 } ) ;
167-
204+
168205 var selectedQueue = await AnsiConsole . PromptAsync (
169206 new SelectionPrompt < string > ( )
170207 . Title ( "Select a [green]queue[/]:" )
@@ -173,6 +210,9 @@ private async Task Purge(List<string> args)
173210 . AddChoices ( queues . Select ( q => $ "{ q . QueueProperties . Name } ([green]{ q . QueueRuntimeProperties . ActiveMessageCount } [/], [red]{ q . QueueRuntimeProperties . DeadLetterMessageCount } [/], [blue]{ q . QueueRuntimeProperties . ScheduledMessageCount } [/])") . ToList ( ) )
174211 ) ;
175212 entityPath = selectedQueue . Split ( ' ' ) [ 0 ] ;
213+
214+ AnsiConsole . MarkupLine ( $ "[grey]Selected queue: { entityPath } [/]") ;
215+
176216 break ;
177217 }
178218
0 commit comments