diff --git a/src/components/Clauses/Clauses.js b/src/components/Clauses/Clauses.js index 2f9a203..2111add 100644 --- a/src/components/Clauses/Clauses.js +++ b/src/components/Clauses/Clauses.js @@ -23,7 +23,7 @@ import { invalidateAfterClausePurchase } from '../../utils/cacheInvalidation'; const Clauses = () => { const { leagueId, user } = useAuthStore(); const queryClient = useQueryClient(); - const [showAll, setShowAll] = useState(false); + const [availabilityFilter, setAvailabilityFilter] = useState('available'); // 'available', 'all', 'locked' const [clausesData, setClausesData] = useState([]); const [loading, setLoading] = useState(false); const [trendsInitialized, setTrendsInitialized] = useState(false); @@ -300,13 +300,13 @@ const Clauses = () => { } // If values are equal and we're showing all clauses, show available first as tie-breaker - if (comparison === 0 && showAll && a.isLocked !== b.isLocked) { + if (comparison === 0 && availabilityFilter === 'all' && a.isLocked !== b.isLocked) { return a.isLocked ? 1 : -1; } return sortOrder === 'asc' ? -comparison : comparison; }); - }, [sortBy, sortOrder, showAll]); + }, [sortBy, sortOrder, availabilityFilter]); // Fetch all team data and extract clauses const fetchClausesData = useCallback(async (force = false) => { @@ -493,7 +493,7 @@ const Clauses = () => { setClausesData(sortedData); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [sortBy, sortOrder, showAll, ownerFilter, positionFilter]); + }, [sortBy, sortOrder, availabilityFilter, ownerFilter, positionFilter]); const getPositionName = (positionId) => { const positions = { @@ -519,7 +519,9 @@ const Clauses = () => { // Filter data based on settings const filteredClauses = clausesData.filter(clause => { // Filter by availability - if (!showAll && clause.isLocked) return false; + if (availabilityFilter === 'available' && clause.isLocked) return false; + if (availabilityFilter === 'locked' && !clause.isLocked) return false; + // if availabilityFilter === 'all', show everything // Filter by owner if (ownerFilter !== 'all' && clause.ownerName !== ownerFilter) return false; @@ -542,7 +544,11 @@ const Clauses = () => { Cláusulas de Rescisión

- {filteredClauses.length} cláusulas {showAll ? 'totales' : 'disponibles'} + {filteredClauses.length} cláusulas { + availabilityFilter === 'all' ? 'totales' + : availabilityFilter === 'available' ? 'disponibles' + : 'bloqueadas' + } {ownerFilter !== 'all' && ` de ${ownerFilter}`} {positionFilter !== 'all' && ` - ${getPositionName(parseInt(positionFilter))}`} {clausesData.length > 0 && ( @@ -582,65 +588,61 @@ const Clauses = () => {

- {/* Show All Toggle */} -
+ {/* Availability Filter */} +
- {/* Current Filter Status */} + {/* Current Availability Status */}
- {showAll ? ( - - ) : ( + {availabilityFilter === 'available' ? ( + ) : availabilityFilter === 'locked' ? ( + + ) : ( + )} - {showAll ? 'Todas las cláusulas' : 'Solo disponibles'} + {availabilityFilter === 'available' ? 'Solo disponibles' + : availabilityFilter === 'locked' ? 'Solo bloqueadas' + : 'Todas las cláusulas'}
- {showAll - ? `${filteredClauses.length} cláusulas en total` - : `${filteredClauses.filter(c => !c.isLocked || (c.unlockTime && new Date(c.unlockTime) <= new Date())).length} cláusulas disponibles` - } + {filteredClauses.length} cláusulas
- {/* Toggle Button */} -
@@ -889,12 +891,16 @@ const Clauses = () => {

- {showAll ? 'No hay cláusulas en la liga' : 'No hay cláusulas disponibles'} + {availabilityFilter === 'all' ? 'No hay cláusulas en la liga' + : availabilityFilter === 'available' ? 'No hay cláusulas disponibles' + : 'No hay cláusulas bloqueadas'}

- {showAll ? + {availabilityFilter === 'all' ? 'No se encontraron jugadores con cláusulas de rescisión' : - 'Todas las cláusulas están actualmente bloqueadas' + availabilityFilter === 'available' ? + 'Todas las cláusulas están actualmente bloqueadas' : + 'No hay cláusulas bloqueadas en este momento' }