Skip to content

Sidebar raw-page fallback renders playlist rows that navigation and Enter cannot reach #447

Description

@LargeModGames

Describe the bug
While playlist_folder_items is not yet initialized (rootlist still loading, or its fetch failed) the Playlists sidebar falls back to rendering the raw page: + Add Playlist, the community pin, and every item in app.playlists. But get_playlist_display_count() only counts the pin in that state, so keyboard and mouse navigation stop at the pin, and get_playlist_display_item_at() cannot represent the raw rows at all, so Enter does nothing on them even if the cursor could get there.

Surfaced by CodeRabbit on PR #446 (src/core/app/playlist_folders.rs, thread: #446 (comment)). Deferred there because PR #446 is pure code movement.

To Reproduce

  1. Launch with a Spotify account whose rootlist fetch is slow or failing, so playlist_folder_items stays empty while app.playlists has a page
  2. Look at the Playlists sidebar: raw playlist rows render below the pin
  3. Try to move the selection down past the pin, or click a raw row and press Enter

Expected behavior
Every rendered row is reachable and Enter opens it. Count, Enter handling, and mouse hit-testing should share the same raw-page fallback the renderer and get_selected_playlist_id already use (src/tui/ui/library.rs fallback branch, src/core/app/playlist_folders.rs::get_selected_playlist_id).

A count-only fix is worse than none: Enter resolves rows through get_playlist_display_item_at, which returns &PlaylistFolderItem and cannot represent raw-page rows, so the cursor would reach rows Enter silently ignores. The fix needs to cover get_playlist_display_count, the Enter arm in src/tui/handlers/playlist.rs, and total_display_count / mouse mapping together, with tests.

Desktop (please complete the following information):

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions