fix: Handle search requests without a fruit or with an invalid one

Also avoid recomputing values computed before by storing relevant
values into variables
This commit is contained in:
AudricV 2024-02-22 11:41:27 +01:00
parent 80b12fde8c
commit fad786ffb7
No known key found for this signature in database
GPG Key ID: DA92EC7905614198

View File

@ -40,40 +40,25 @@ class SearchController extends AbstractController
} }
} }
private static function getEmojiName(string $emoji): string private static function getEmojiName(string | null $emoji) : string | null {
{ return match ($emoji) {
switch ($emoji) { "🍎" => "apple",
case "🍎": "🍐" => "pear",
return "apple"; "🍊" => "orange",
case "🍐": "🍋" => "lemon",
return "pear"; "🍌" => "banana",
case "🍊": "🍉" => "watermelon",
return "orange"; "🍇" => "grape",
case "🍋": "🍓" => "strawberry",
return "lemon"; "🫐" => "blueberry",
case "🍌": "🍈" => "melon",
return "banana"; "🍒" => "cherry",
case "🍉": "🍑" => "peach",
return "watermelon"; "🍍" => "pineapple",
case "🍇": "🥝" => "kiwi",
return "grape"; "🥥" => "coconut",
case "🍓": default => null,
return "strawberry"; };
case "🫐":
return "blueberry";
case "🍈":
return "melon";
case "🍒":
return "cherry";
case "🍑":
return "peach";
case "🍍":
return "pineapple";
case "🥝":
return "kiwi";
case "🥥":
return "coconut";
}
} }
@ -116,25 +101,36 @@ class SearchController extends AbstractController
{ {
$page = $request->query->get('page'); $page = $request->query->get('page');
$fruit = $request->query->get('fruit'); $fruit = $request->query->get('fruit');
$fruit_querry = $request->query->get('q') . " " . SearchController::getEmojiName($fruit); $user_query = $request->query->get('q');
$result = SearchController::makeRequest("GET", "search", [
"q" => $fruit_querry, $fruit_emoji = SearchController::getEmojiName($fruit);
if ($fruit_emoji == null) {
// We do not support requests without a fruit or with an invalid one
// Redirect to the homepage in this case
return $this->redirect('/');
}
$fruit_query = $user_query . " " . $fruit_emoji;
$page_str = strval($page);
$response = SearchController::makeRequest("GET", "search", [
"q" => $fruit_query,
"type" => "release", "type" => "release",
"page" => strval($page), "page" => $page_str,
"per_page" => "15", "per_page" => "15",
]); ]);
SearchController::addFruitToAlbums($result["results"], $fruit, $entityManager); $results = $response["results"];
SearchController::addFruitToAlbums($results, $fruit, $entityManager);
return $this->render('search/search.html.twig', [ return $this->render('search/search.html.twig', [
'controller_name' => 'SearchController', 'controller_name' => 'SearchController',
'query' => $request->query->get('q'), 'query' => $user_query,
'fruit_emoji' => $request->query->get('fruit'), 'fruit_emoji' => $fruit_emoji,
'fruit_name' => SearchController::getEmojiName($fruit), 'fruit_name' => SearchController::getEmojiName($fruit),
'page' => $request->query->get('page'), 'page' => $page,
"next_page" => $page < $result["pagination"]["pages"] ? strval($page + 1) : strval($page), "next_page" => $page < $response["pagination"]["pages"] ? strval($page + 1) : $page_str,
"previous_page" => $page > 1 ? strval($page - 1) : strval($page), "previous_page" => $page > 1 ? strval($page - 1) : $page_str,
'results' => $result["results"] 'results' => $results
]); ]);
} }
} }