improve load order page performance for large mod counts (LAZ-717)#23699
improve load order page performance for large mod counts (LAZ-717)#23699IDCs wants to merge 3 commits into
Conversation
Virtualize the file-based load order list (via a standalone ListWindow helper) and cut the per-drag work that made dragging unusable with 1000+ entries: stable react-dnd collector, memoized rows, precomputed row position/locked-count, id-indexed UpdateSet lookups. Debounce the BG3 auto-export and heal stale pak-cache mod links so managed mods stop showing as "Not managed by Vortex". Add an opt-in uniformRowHeight flag for custom-renderer games to virtualize. closes LAZ-717
|
Might be too difficult for a virtualized list but would be great to see a component test for that. |
Extract the load order windowing, drag-reorder, change-diff and row memoization into pure modules (ListWindow, dragReorder, loadOrderDiff, RenderRowsCache) so the logic is testable without a DnD backend or real layout, and cover them with unit tests. Add an FBLO test fixture (makeFblo / makeLoadOrderEntry). closes LAZ-717
|
A full drag-through-a-virtualized-list component test is awkward, so I split the windowing and reorder logic to small pure modules that test cleanly without fighting jsdom layout, and there's a component test for the mounting behaviour. ListWindow - visible-range math, overscan, spacer padding, and the drag-clamp that keeps a dragged row rendered while it's scrolled outside the window (so its drag source doesn't unmount mid-drag). I stopped short of driving an actual DnD in a component test, but react-dnd's HTML5 backend needs real layout and pointer events that happy-dom doesn't provide, so a faithful end-to-end reorder belongs in a Playwright E2E rather than here I think. |
Virtualize the file-based load order list (via a standalone ListWindow helper) and cut the per-drag work that made dragging unusable with 1000+ entries: stable react-dnd collector, memoized rows, precomputed row position/locked-count, id-indexed UpdateSet lookups.
Debounce the BG3 auto-export and heal stale pak-cache mod links so managed mods stop showing as "Not managed by Vortex". Add an opt-in uniformRowHeight flag for custom-renderer games to virtualize.
closes LAZ-717