@@ -383,23 +383,10 @@ func printBrowserSessionResult(sessionID, cdpURL, liveViewURL string, persistenc
383383
384384func (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
461448func (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