fix: make search usable again
This commit is contained in:
@@ -19,7 +19,7 @@ export function parseResourceUrl(_url: string | URL): SearchParams | undefined {
|
||||
try {
|
||||
const url = typeof _url === "string" ? new URL(_url) : _url;
|
||||
let query = url.searchParams.get("q") || "*";
|
||||
if (!query) {
|
||||
if (!(typeof query === "string")) {
|
||||
return undefined;
|
||||
}
|
||||
query = decodeURIComponent(query);
|
||||
@@ -54,12 +54,14 @@ export async function searchResource(
|
||||
{ q, tags = [], types, rating }: SearchParams,
|
||||
): Promise<GenericResource[]> {
|
||||
const resources = (await Promise.all([
|
||||
(!types || types.includes("movie")) && listResources("movies"),
|
||||
(!types || types.includes("movies")) && listResources("movies"),
|
||||
(!types || types.includes("series")) && listResources("series"),
|
||||
(!types || types.includes("article")) && listResources("articles"),
|
||||
(!types || types.includes("recipe")) && listResources("recipes"),
|
||||
(!types || types.includes("articles")) && listResources("articles"),
|
||||
(!types || types.includes("recipes")) && listResources("recipes"),
|
||||
])).flat().filter(isResource);
|
||||
|
||||
console.log({ types, rating, tags, q });
|
||||
|
||||
const results: Record<string, GenericResource> = {};
|
||||
|
||||
for (const resource of resources) {
|
||||
@@ -71,9 +73,18 @@ export async function searchResource(
|
||||
results[resource.name] = resource;
|
||||
}
|
||||
|
||||
// Select not-rated resources
|
||||
if (
|
||||
rating === 0 &&
|
||||
resource.content?.reviewRating?.ratingValue === undefined
|
||||
) {
|
||||
results[resource.name] = resource;
|
||||
}
|
||||
|
||||
if (
|
||||
!(resource.name in results) &&
|
||||
rating && resource.content.reviewRating?.ratingValue &&
|
||||
typeof rating == "number" &&
|
||||
resource.content.reviewRating?.ratingValue &&
|
||||
parseRating(resource.content.reviewRating.ratingValue) >= rating
|
||||
) {
|
||||
results[resource.name] = resource;
|
||||
@@ -81,6 +92,7 @@ export async function searchResource(
|
||||
}
|
||||
|
||||
if (q.length && q !== "*") {
|
||||
q = decodeURIComponent(q);
|
||||
const fuzzyResult = fuzzysort.go(q, resources, {
|
||||
keys: [
|
||||
"name",
|
||||
|
||||
Reference in New Issue
Block a user