Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/pages/CrazyRecipeDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { Label } from '@/components/ui/label';
import Navbar from '@/components/Navbar';
import Footer from '@/components/Footer';
import { useAuth } from '@/hooks/useAuth';
import { useAdmin } from '@/hooks/useAdmin';
import { useToast } from '@/hooks/use-toast';
import { useRecipeService } from '@/hooks/useRecipeService';
import type { CrazyRecipe, RecipeReview } from '@/services/recipeService';
Expand All @@ -24,7 +23,6 @@ import {
const CrazyRecipeDetail = () => {
const { id } = useParams<{ id: string }>();
const { user } = useAuth();
const { isAdmin } = useAdmin();
const { toast } = useToast();
const navigate = useNavigate();
const { getRecipeById, deleteRecipe, incrementViews: serviceIncrementViews, getRecipeReviews, submitReview } = useRecipeService();
Expand Down
40 changes: 30 additions & 10 deletions src/pages/CrazyRecipes.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState, useEffect } from 'react';
import { useState, useEffect, useMemo } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import { Plus, Search, Filter, Clock, Eye, Heart, ChefHat, Leaf, Flame, Star, User, Edit, Trash2, LogIn } from 'lucide-react';
import { Button } from '@/components/ui/button';
Expand All @@ -14,8 +14,8 @@
import {
weirdFoodRecipes,
weirdFoodReviews,
getReviewsForWeirdFood,

Check warning on line 17 in src/pages/CrazyRecipes.tsx

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Remove this unused import of 'getReviewsForWeirdFood'.

See more on https://sonarcloud.io/project/issues?id=VarunB453_AHARA3&issues=AZznI0UotmW1zwyPcIww&open=AZznI0UotmW1zwyPcIww&pullRequest=2
getAverageRatingForWeirdFood,

Check warning on line 18 in src/pages/CrazyRecipes.tsx

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Remove this unused import of 'getAverageRatingForWeirdFood'.

See more on https://sonarcloud.io/project/issues?id=VarunB453_AHARA3&issues=AZznI0UotmW1zwyPcIwx&open=AZznI0UotmW1zwyPcIwx&pullRequest=2
type WeirdFoodRecipe
} from '@/data/weirdFoods';

Expand Down Expand Up @@ -151,17 +151,37 @@
setShowUploadForm(true);
};

const getReviewsAndRating = (recipeId: string) => {
// Check if it's a frontend recipe
const isFrontendRecipe = weirdFoodRecipes.some(recipe => recipe.id === recipeId);
const frontendRecipeData = useMemo(() => {
const data = new Map<string, { reviews: typeof weirdFoodReviews, averageRating: number, isFrontendRecipe: boolean }>();
const frontendIds = new Set(weirdFoodRecipes.map(r => r.id));

if (isFrontendRecipe) {
const reviews = getReviewsForWeirdFood(recipeId);
const averageRating = getAverageRatingForWeirdFood(recipeId);
return { reviews, averageRating, isFrontendRecipe: true };
}
// Group reviews by recipe ID first
const reviewsMap = new Map<string, typeof weirdFoodReviews>();
weirdFoodReviews.forEach(review => {
if (!reviewsMap.has(review.recipe_id)) {
reviewsMap.set(review.recipe_id, []);
}
reviewsMap.get(review.recipe_id)!.push(review);

Check warning on line 164 in src/pages/CrazyRecipes.tsx

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

This assertion is unnecessary since it does not change the type of the expression.

See more on https://sonarcloud.io/project/issues?id=VarunB453_AHARA3&issues=AZznI0UotmW1zwyPcIwy&open=AZznI0UotmW1zwyPcIwy&pullRequest=2
});

frontendIds.forEach(id => {
const reviews = reviewsMap.get(id) || [];
const averageRating = reviews.length > 0
? reviews.reduce((sum, r) => sum + r.rating, 0) / reviews.length
: 0;

data.set(id, {
reviews,
averageRating,
isFrontendRecipe: true
});
});

return { reviews: [], averageRating: 0, isFrontendRecipe: false };
return data;
}, []);

const getReviewsAndRating = (recipeId: string) => {
return frontendRecipeData.get(recipeId) || { reviews: [], averageRating: 0, isFrontendRecipe: false };
};

const handleDeleteRecipe = async (recipeId: string, recipeTitle: string) => {
Expand Down