diff --git a/src/components/Admin/AdminPanel.js b/src/components/Admin/AdminPanel.js index c9e13a5..c6a20e2 100644 --- a/src/components/Admin/AdminPanel.js +++ b/src/components/Admin/AdminPanel.js @@ -304,70 +304,40 @@ const AdminPanel = () => { }; // Reorder resources (move up or down in list) -const handleReorderResource = async (resourceId, direction) => { - const resourceIndex = resources.findIndex(r => r.id === resourceId); - if (resourceIndex === -1) return; - - let filteredResources = [...resources]; // Create a copy to work with - - // Filter resources based on reorder mode - if (reorderMode === 'featured') { - filteredResources = filteredResources.filter(r => r.featured); - } else if (reorderMode === 'category' && selectedCategoryForReorder) { - filteredResources = filteredResources.filter(r => - r.categoryIds && r.categoryIds.includes(selectedCategoryForReorder) - ); - } - - // Sort by position to ensure correct order - filteredResources.sort((a, b) => a.position - b.position); - - const resourceToMoveIndex = filteredResources.findIndex(r => r.id === resourceId); - if (resourceToMoveIndex === -1) return; - - const adjacentIndex = direction === 'up' - ? Math.max(0, resourceToMoveIndex - 1) - : Math.min(filteredResources.length - 1, resourceToMoveIndex + 1); + const handleReorderResource = async (resourceId, direction) => { + if (updatingPositions) return; - if (adjacentIndex === resourceToMoveIndex) return; + // Find the resource to update + const resource = resources.find(r => r.id === resourceId); + if (!resource) return; - const resourceToMove = filteredResources[resourceToMoveIndex]; - const adjacentResource = filteredResources[adjacentIndex]; + // Calculate new position - decrement for up, increment for down + const newPosition = direction === 'up' + ? resource.position - 1 + : resource.position + 1; - if (updatingPositions) return; setUpdatingPositions(true); try { - // Swap positions in database - await supabase - .from('resources') - .update({ position: adjacentResource.position }) - .eq('id', resourceToMove.id); - + // Update position in database await supabase .from('resources') - .update({ position: resourceToMove.position }) - .eq('id', adjacentResource.id); + .update({ position: newPosition }) + .eq('id', resourceId); - // Update local state without fetching all data again + // Update local state setResources(prevResources => { - const updatedResources = [...prevResources]; - - // Find the actual resources in the full list - const resourceToMoveFullIndex = updatedResources.findIndex(r => r.id === resourceToMove.id); - const adjacentResourceFullIndex = updatedResources.findIndex(r => r.id === adjacentResource.id); - - // Swap their positions - const tempPosition = updatedResources[resourceToMoveFullIndex].position; - updatedResources[resourceToMoveFullIndex].position = updatedResources[adjacentResourceFullIndex].position; - updatedResources[adjacentResourceFullIndex].position = tempPosition; - - return updatedResources; + return prevResources.map(r => { + if (r.id === resourceId) { + return { ...r, position: newPosition }; + } + return r; + }); }); - showAlert(`Resources reordered successfully!`); + showAlert(`Resource moved ${direction}!`); } catch (error) { - console.error('Error reordering resources:', error); + console.error(`Error moving resource ${direction}:`, error); showAlert(`Error: ${error.message}`, 'error'); } finally { setUpdatingPositions(false); diff --git a/src/components/Resources/Resources.css b/src/components/Resources/Resources.css index c14dff8..683975a 100644 --- a/src/components/Resources/Resources.css +++ b/src/components/Resources/Resources.css @@ -168,7 +168,6 @@ .random-resources-section { background-color: rgba(var(--button-bg-rgb), 0.05); border-radius: 10px; - padding: 20px; margin-top: 20px; margin-bottom: 30px; border: 2px solid rgba(var(--button-bg-rgb), 0.1); @@ -602,8 +601,6 @@ /* Improved search input */ .search-container { position: relative; - flex-grow: 1; - max-width: 500px; height: 100%; /* Make it fill the container height */ } diff --git a/src/components/Resources/Resources.js b/src/components/Resources/Resources.js index 63a7f6d..f363884 100644 --- a/src/components/Resources/Resources.js +++ b/src/components/Resources/Resources.js @@ -210,7 +210,7 @@ const isNewResource = (date) => { // Filter out any resources that might not have essential data const validResources = resources.filter(r => r.name && r.description); - if (validResources.length <= 4) { + if (validResources.length <= 6) { setRandomResources(validResources); return; } @@ -225,7 +225,7 @@ const isNewResource = (date) => { } // Take the first 4 items - setRandomResources(shuffled.slice(0, 4)); + setRandomResources(shuffled.slice(0, 6)); setShowRandomResources(true); // Auto-scroll to the random resources section @@ -506,7 +506,8 @@ const filteredResources = useMemo(() => { {/* Random Resources Section */} {showRandomResources && randomResources.length > 0 && (
Here are {randomResources.length} resources picked just for you!