fix(ui): files panel sort cache goes stale at the 2000-row cap — newest entry never appeared without re-sorting
This commit is contained in:
parent
3573c6860a
commit
c75cb6c079
@ -68,6 +68,7 @@ let _historySortClicked = false;
|
|||||||
// Session-specific files for the "Files" panel (resets each session)
|
// Session-specific files for the "Files" panel (resets each session)
|
||||||
let sessionFilesData = [];
|
let sessionFilesData = [];
|
||||||
let _recentSeqCounter = 0;
|
let _recentSeqCounter = 0;
|
||||||
|
let _recentDataVersion = 0;
|
||||||
const recentSortState = { key: 'date', direction: 'desc' };
|
const recentSortState = { key: 'date', direction: 'desc' };
|
||||||
const selectedRecentIds = new Set();
|
const selectedRecentIds = new Set();
|
||||||
// Maintained incrementally — avoids O(n) filter() scans every 250ms in the status bar.
|
// Maintained incrementally — avoids O(n) filter() scans every 250ms in the status bar.
|
||||||
@ -1464,6 +1465,7 @@ function deleteSelectedRecentFiles() {
|
|||||||
});
|
});
|
||||||
_sessionDoneCount = Math.max(0, _sessionDoneCount - removedDone);
|
_sessionDoneCount = Math.max(0, _sessionDoneCount - removedDone);
|
||||||
_sessionErrorCount = Math.max(0, _sessionErrorCount - removedErr);
|
_sessionErrorCount = Math.max(0, _sessionErrorCount - removedErr);
|
||||||
|
_recentDataVersion++;
|
||||||
selectedRecentIds.clear();
|
selectedRecentIds.clear();
|
||||||
renderRecentUploadsPanel();
|
renderRecentUploadsPanel();
|
||||||
}
|
}
|
||||||
@ -1475,6 +1477,7 @@ function clearAllRecentFiles() {
|
|||||||
_sessionFileKeys.clear();
|
_sessionFileKeys.clear();
|
||||||
_sessionDoneCount = 0;
|
_sessionDoneCount = 0;
|
||||||
_sessionErrorCount = 0;
|
_sessionErrorCount = 0;
|
||||||
|
_recentDataVersion++;
|
||||||
selectedRecentIds.clear();
|
selectedRecentIds.clear();
|
||||||
renderRecentUploadsPanel();
|
renderRecentUploadsPanel();
|
||||||
}
|
}
|
||||||
@ -2511,6 +2514,7 @@ function maybeAddSessionFile(job) {
|
|||||||
isError: false,
|
isError: false,
|
||||||
order: _recentSeqCounter++
|
order: _recentSeqCounter++
|
||||||
});
|
});
|
||||||
|
_recentDataVersion++;
|
||||||
_sessionDoneCount++;
|
_sessionDoneCount++;
|
||||||
// Drop oldest entries past the cap to keep render cost bounded.
|
// Drop oldest entries past the cap to keep render cost bounded.
|
||||||
// Without this, sessionFilesData grows unbounded across the session
|
// Without this, sessionFilesData grows unbounded across the session
|
||||||
@ -4175,7 +4179,7 @@ let _recentSortCache = { sig: '', result: [] };
|
|||||||
|
|
||||||
function sortRecentFiles(data) {
|
function sortRecentFiles(data) {
|
||||||
const { key, direction } = recentSortState;
|
const { key, direction } = recentSortState;
|
||||||
const sig = `${key}|${direction}|${data.length}`;
|
const sig = `${key}|${direction}|${data.length}|${_recentDataVersion}`;
|
||||||
if (_recentSortCache.sig === sig) return _recentSortCache.result;
|
if (_recentSortCache.sig === sig) return _recentSortCache.result;
|
||||||
|
|
||||||
const sorted = data.slice();
|
const sorted = data.slice();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user