Skip to content

Commit 557ebec

Browse files
committed
refactor(browsers): reuse browser lookup logic
1 parent 81c29c0 commit 557ebec

File tree

1 file changed

+28
-34
lines changed

1 file changed

+28
-34
lines changed

cmd/browsers.go

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -383,23 +383,10 @@ func printBrowserSessionResult(sessionID, cdpURL, liveViewURL string, persistenc
383383

384384
func (b BrowsersCmd) Delete(ctx context.Context, in BrowsersDeleteInput) error {
385385
if !in.SkipConfirm {
386-
page, err := b.browsers.List(ctx, kernel.BrowserListParams{})
386+
found, err := b.resolveBrowserByIdentifier(ctx, in.Identifier)
387387
if err != nil {
388388
return util.CleanedUpSdkError{Err: err}
389389
}
390-
if page == nil || page.Items == nil || len(page.Items) == 0 {
391-
pterm.Error.Println("No browsers found")
392-
return nil
393-
}
394-
395-
var found *kernel.BrowserListResponse
396-
for _, br := range page.Items {
397-
if br.SessionID == in.Identifier || br.Persistence.ID == in.Identifier {
398-
bCopy := br
399-
found = &bCopy
400-
break
401-
}
402-
}
403390
if found == nil {
404391
pterm.Error.Printf("Browser '%s' not found\n", in.Identifier)
405392
return nil
@@ -459,24 +446,10 @@ func (b BrowsersCmd) Delete(ctx context.Context, in BrowsersDeleteInput) error {
459446
}
460447

461448
func (b BrowsersCmd) View(ctx context.Context, in BrowsersViewInput) error {
462-
page, err := b.browsers.List(ctx, kernel.BrowserListParams{})
449+
foundBrowser, err := b.resolveBrowserByIdentifier(ctx, in.Identifier)
463450
if err != nil {
464451
return util.CleanedUpSdkError{Err: err}
465452
}
466-
467-
if page == nil || page.Items == nil || len(page.Items) == 0 {
468-
pterm.Error.Println("No browsers found")
469-
return nil
470-
}
471-
472-
var foundBrowser *kernel.BrowserListResponse
473-
for _, browser := range page.Items {
474-
if browser.Persistence.ID == in.Identifier || browser.SessionID == in.Identifier {
475-
foundBrowser = &browser
476-
break
477-
}
478-
}
479-
480453
if foundBrowser == nil {
481454
pterm.Error.Printf("Browser '%s' not found\n", in.Identifier)
482455
return nil
@@ -2643,16 +2616,37 @@ func truncateURL(url string, maxLen int) string {
26432616
return url[:maxLen-3] + "..."
26442617
}
26452618

2646-
// resolveBrowserByIdentifier finds a browser by session ID or persistent ID (backward compatibility).
2647-
func (b BrowsersCmd) resolveBrowserByIdentifier(ctx context.Context, identifier string) (*kernel.BrowserListResponse, error) {
2619+
// listAllBrowsers fetches all browsers by paginating through all pages.
2620+
func (b BrowsersCmd) listAllBrowsers(ctx context.Context) ([]kernel.BrowserListResponse, error) {
2621+
var allBrowsers []kernel.BrowserListResponse
26482622
page, err := b.browsers.List(ctx, kernel.BrowserListParams{})
26492623
if err != nil {
26502624
return nil, err
26512625
}
2652-
if page == nil || page.Items == nil {
2653-
return nil, nil
2626+
for page != nil && len(page.Items) > 0 {
2627+
allBrowsers = append(allBrowsers, page.Items...)
2628+
page = safeGetNextPage(page)
2629+
}
2630+
return allBrowsers, nil
2631+
}
2632+
2633+
// safeGetNextPage attempts to get the next page, returning nil if unavailable or on error.
2634+
func safeGetNextPage(page *pagination.OffsetPagination[kernel.BrowserListResponse]) *pagination.OffsetPagination[kernel.BrowserListResponse] {
2635+
defer func() { recover() }()
2636+
nextPage, err := page.GetNextPage()
2637+
if err != nil {
2638+
return nil
2639+
}
2640+
return nextPage
2641+
}
2642+
2643+
// resolveBrowserByIdentifier finds a browser by session ID or persistent ID (backward compatibility).
2644+
func (b BrowsersCmd) resolveBrowserByIdentifier(ctx context.Context, identifier string) (*kernel.BrowserListResponse, error) {
2645+
browsers, err := b.listAllBrowsers(ctx)
2646+
if err != nil {
2647+
return nil, err
26542648
}
2655-
for _, br := range page.Items {
2649+
for _, br := range browsers {
26562650
if br.SessionID == identifier || br.Persistence.ID == identifier {
26572651
bCopy := br
26582652
return &bCopy, nil

0 commit comments

Comments
 (0)