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:
parent
80b12fde8c
commit
fad786ffb7
@ -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
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user