fix: spinner eterno al marcar Todos en filtros de tickets
This commit is contained in:
1 parent
0a08fa5192
commit
148d8b2550
1 file changed
+7
-6
@@ -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>
|
||||||
|
|||||||
Reference in new issue
Block a user