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
{
switch ($emoji) {
case "🍎":
return "apple";
case "🍐":
return "pear";
case "🍊":
return "orange";
case "🍋":
return "lemon";
case "🍌":
return "banana";
case "🍉":
return "watermelon";
case "🍇":
return "grape";
case "🍓":
return "strawberry";
case "🫐":
return "blueberry";
case "🍈":
return "melon";
case "🍒":
return "cherry";
case "🍑":
return "peach";
case "🍍":
return "pineapple";
case "🥝":
return "kiwi";
case "🥥":
return "coconut";
}
private static function getEmojiName(string | null $emoji) : string | null {
return match ($emoji) {
"🍎" => "apple",
"🍐" => "pear",
"🍊" => "orange",
"🍋" => "lemon",
"🍌" => "banana",
"🍉" => "watermelon",
"🍇" => "grape",
"🍓" => "strawberry",
"🫐" => "blueberry",
"🍈" => "melon",
"🍒" => "cherry",
"🍑" => "peach",
"🍍" => "pineapple",
"🥝" => "kiwi",
"🥥" => "coconut",
default => null,
};
}
@ -116,25 +101,36 @@ class SearchController extends AbstractController
{
$page = $request->query->get('page');
$fruit = $request->query->get('fruit');
$fruit_querry = $request->query->get('q') . " " . SearchController::getEmojiName($fruit);
$result = SearchController::makeRequest("GET", "search", [
"q" => $fruit_querry,
$user_query = $request->query->get('q');
$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",
"page" => strval($page),
"page" => $page_str,
"per_page" => "15",
]);
SearchController::addFruitToAlbums($result["results"], $fruit, $entityManager);
$results = $response["results"];
SearchController::addFruitToAlbums($results, $fruit, $entityManager);
return $this->render('search/search.html.twig', [
'controller_name' => 'SearchController',
'query' => $request->query->get('q'),
'fruit_emoji' => $request->query->get('fruit'),
'query' => $user_query,
'fruit_emoji' => $fruit_emoji,
'fruit_name' => SearchController::getEmojiName($fruit),
'page' => $request->query->get('page'),
"next_page" => $page < $result["pagination"]["pages"] ? strval($page + 1) : strval($page),
"previous_page" => $page > 1 ? strval($page - 1) : strval($page),
'results' => $result["results"]
'page' => $page,
"next_page" => $page < $response["pagination"]["pages"] ? strval($page + 1) : $page_str,
"previous_page" => $page > 1 ? strval($page - 1) : $page_str,
'results' => $results
]);
}
}