Show empty library in case search doesn't match anything (#251)

* Show empty library in case search doesn't match anything

In case the search didn't match anything all mangas where shown instead of an empty library.

* Rename filter manga function parameter and variable

Makes it easier to read
This commit is contained in:
schroda
2023-03-01 19:38:12 +01:00
committed by GitHub
parent 96fd1cf73b
commit c6257acdf1

View File

@@ -49,29 +49,17 @@ const queryGenreFilter = (query: NullAndUndefined<string>, { genre }: IMangaCard
}; };
const filterManga = ( const filterManga = (
manga: IMangaCard[], mangas: IMangaCard[],
query: NullAndUndefined<string>, query: NullAndUndefined<string>,
unread: NullAndUndefined<boolean>, unread: NullAndUndefined<boolean>,
downloaded: NullAndUndefined<boolean>, downloaded: NullAndUndefined<boolean>,
): IMangaCard[] => { ): IMangaCard[] =>
let filteredManga: IMangaCard[] = []; mangas.filter(
if (query) { (manga) =>
const titleFilteredManga = manga.filter((m) => queryFilter(query, m)); (queryFilter(query, manga) || queryGenreFilter(query, manga)) &&
const genreFilteredManga = manga.filter((m) => queryGenreFilter(query, m)); downloadedFilter(downloaded, manga) &&
const unique = titleFilteredManga.concat(genreFilteredManga).reduce((acc: Record<number, IMangaCard>, obj) => { unreadFilter(unread, manga),
const { id } = obj;
if (!acc[id]) {
acc[id] = obj;
}
return acc;
}, {});
filteredManga = Object.values(unique);
}
filteredManga = (filteredManga.length ? filteredManga : manga).filter(
(m) => downloadedFilter(downloaded, m) && unreadFilter(unread, m),
); );
return filteredManga;
};
const sortByUnread = (a: IMangaCard, b: IMangaCard): number => const sortByUnread = (a: IMangaCard, b: IMangaCard): number =>
// eslint-disable-next-line implicit-arrow-linebreak // eslint-disable-next-line implicit-arrow-linebreak