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
|
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
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user