Files
music_library/backlog/tasks/ml-169.5 - Fix-Display-toggle-grid-list-triggers-full-DB-reload.md
T
2026-05-19 12:50:09 +01:00

2.0 KiB

id, title, status, assignee, created_date, labels, dependencies, references, modified_files, parent_task_id, priority, ordinal
id title status assignee created_date labels dependencies references modified_files parent_task_id priority ordinal
ML-169.5 Fix: Display toggle (grid/list) triggers full DB reload To Do
2026-05-19 11:45
perf
fix
backlog/documents/doc-27 - Phase-4-Performance-Audit-Low-Hanging-Fruit-Findings.md
lib/music_library_web/live_helpers/index_actions.ex
lib/music_library_web/live/collection_live/index.ex
lib/music_library_web/live/wishlist_live/index.ex
ML-169 high 26000

Description

Fix performance issue where toggling between grid and list display views triggers a full FTS database reload.

Problem

handle_set_display in index_actions.ex calls load_and_assign_records/2 which re-executes the full FTS search query (search_records_count + search_records). The toggle only changes a CSS layout class (@display == :grid vs @display == :list) — no data changes.

Impact

Every grid/list toggle wastes 2 FTS queries. This is a common user interaction (clicking the view switcher button).

Files

  • lib/music_library_web/live_helpers/index_actions.ex:136-143handle_set_display/2 calls load_and_assign_records
  • lib/music_library_web/live/collection_live/index.ex:336handle_event("set_display")
  • lib/music_library_web/live/wishlist_live/index.ex:259handle_event("set_display")

Fix

Remove the load_and_assign_records call from handle_set_display. Only assign(:display, mode) is needed. The existing :if={@display == :grid} / :if={@display == :list} conditionals already handle showing/hiding the appropriate view.

Acceptance Criteria

  • #1 Grid/list toggle no longer triggers DB queries (verified via QueryReporter)
  • #2 Grid view renders correctly after toggle
  • #3 List view renders correctly after toggle
  • #4 No regression in search/filter functionality after toggle