fix: spinner eterno al marcar Todos en filtros de tickets

This commit is contained in:
Nurfog committed 2026-10-22 10:02:11 -03:00
1 parent 0a08fa5192
commit 148d8b2550
1 file changed
+7 -6
+7 -6
View File
@@ -115,6 +115,11 @@ function TicketsContent() {
user?.role === "admin" || user?.role === "agent" || user?.role === "supervisor"; user?.role === "admin" || user?.role === "agent" || user?.role === "supervisor";
useEffect(() => { useEffect(() => {
// El loading vive aquí (no en los manejadores): así siempre hay un
// fetch en curso que lo apaga en .finally(). Poner setLoading(true)
// en un onClick sin cambio real de estado dejaba spinner eterno.
// Diferido como el efecto de URL para no disparar cascading renders.
queueMicrotask(() => setLoading(true));
getTickets({ getTickets({
status: statusFilters.length > 0 ? statusFilters : undefined, status: statusFilters.length > 0 ? statusFilters : undefined,
priority: priorityFilter || undefined, priority: priorityFilter || undefined,
@@ -153,13 +158,11 @@ function TicketsContent() {
return next; return next;
}); });
setPage(1); setPage(1);
setLoading(true);
}; };
const selectAllStatuses = () => { const selectAllStatuses = () => {
setStatusFilters([]); setStatusFilters([]);
setPage(1); setPage(1);
setLoading(true);
}; };
const statusButtonLabel = const statusButtonLabel =
@@ -176,7 +179,6 @@ function TicketsContent() {
setView("all"); setView("all");
setSearch(""); setSearch("");
setPage(1); setPage(1);
setLoading(true);
router.replace("/tickets"); router.replace("/tickets");
}; };
@@ -240,7 +242,6 @@ function TicketsContent() {
onClick={() => { onClick={() => {
setView(v); setView(v);
setPage(1); setPage(1);
setLoading(true);
}} }}
> >
{label} {label}
@@ -314,7 +315,7 @@ function TicketsContent() {
className="form-select" className="form-select"
style={{ width: "auto" }} style={{ width: "auto" }}
value={priorityFilter} value={priorityFilter}
onChange={(e) => { setPriorityFilter(e.target.value); setPage(1); setLoading(true); }} onChange={(e) => { setPriorityFilter(e.target.value); setPage(1); }}
> >
<option value="">Todas las prioridades</option> <option value="">Todas las prioridades</option>
<option value="Low">Baja</option> <option value="Low">Baja</option>
@@ -331,7 +332,7 @@ function TicketsContent() {
style={{ paddingLeft: "2rem" }} style={{ paddingLeft: "2rem" }}
placeholder="Buscar tickets..." placeholder="Buscar tickets..."
value={search} value={search}
onChange={(e) => { setSearch(e.target.value); setPage(1); setLoading(true); }} onChange={(e) => { setSearch(e.target.value); setPage(1); }}
/> />
</div> </div>
</div> </div>