fix(instances): reset stale server/node filter on workspace switch
All checks were successful
Deploy to Production / Trigger production update (push) Successful in 10s
All checks were successful
Deploy to Production / Trigger production update (push) Successful in 10s
Persisted instances-server-filter/instances-node-filter kept an old id after switching workspace, emptying the list and showing the raw id in the Select. Drop the filter to 'all' when the server/node is no longer present in the active workspace. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -304,6 +304,16 @@ export default function InstancesPage() {
|
|||||||
localStorage.setItem('instances-column-filters', JSON.stringify(columnFilters));
|
localStorage.setItem('instances-column-filters', JSON.stringify(columnFilters));
|
||||||
}, [columnFilters]);
|
}, [columnFilters]);
|
||||||
|
|
||||||
|
// Drop a stale persisted server filter when its server is not in the active
|
||||||
|
// workspace anymore (otherwise the list silently empties and the Select shows
|
||||||
|
// the raw server id instead of a name).
|
||||||
|
useEffect(() => {
|
||||||
|
if (serverFilter !== 'all' && servers.length > 0 && !servers.some((s) => String(s.id) === serverFilter)) {
|
||||||
|
setServerFilter('all');
|
||||||
|
localStorage.setItem('instances-server-filter', 'all');
|
||||||
|
}
|
||||||
|
}, [servers, serverFilter]);
|
||||||
|
|
||||||
// Filter real VMs
|
// Filter real VMs
|
||||||
const filteredVMs = useMemo(() => {
|
const filteredVMs = useMemo(() => {
|
||||||
if (!vms) return [];
|
if (!vms) return [];
|
||||||
@@ -399,6 +409,15 @@ export default function InstancesPage() {
|
|||||||
return [...new Set(source.map((v) => v.node))].sort();
|
return [...new Set(source.map((v) => v.node))].sort();
|
||||||
}, [vms, serverFilter]);
|
}, [vms, serverFilter]);
|
||||||
|
|
||||||
|
// Drop a stale persisted node filter when that node is gone from the active
|
||||||
|
// workspace / selected server (same failure mode as the server filter above).
|
||||||
|
useEffect(() => {
|
||||||
|
if (nodeFilter !== 'all' && vms && vms.length > 0 && !uniqueNodes.includes(nodeFilter)) {
|
||||||
|
setNodeFilter('all');
|
||||||
|
localStorage.setItem('instances-node-filter', 'all');
|
||||||
|
}
|
||||||
|
}, [uniqueNodes, nodeFilter, vms]);
|
||||||
|
|
||||||
// Counts (ghosts not counted in tabs)
|
// Counts (ghosts not counted in tabs)
|
||||||
const counts = useMemo(() => {
|
const counts = useMemo(() => {
|
||||||
if (!vms) return { all: 0, vm: 0, lxc: 0 };
|
if (!vms) return { all: 0, vm: 0, lxc: 0 };
|
||||||
|
|||||||
Reference in New Issue
Block a user