Fix "Sources::filter"
The "showNsfw" filter could only filter for either all sources or sources that aren't nsfw. The "pinned" and "enabled" filtered behaved similarly, but at the same time they were also completely buggy. E.g. "pinned = false" just returned all sources including pinned ones.
This commit is contained in:
@@ -49,7 +49,7 @@ export function Sources({ tabsMenuHeight }: { tabsMenuHeight: number }) {
|
||||
const filteredSources = useMemo(
|
||||
() =>
|
||||
SourceService.filter(sources ?? [], {
|
||||
showNsfw,
|
||||
isNsfw: showNsfw ? undefined : true,
|
||||
languages: shownLangs,
|
||||
keepLocalSource: true,
|
||||
enabled: true,
|
||||
@@ -59,7 +59,7 @@ export function Sources({ tabsMenuHeight }: { tabsMenuHeight: number }) {
|
||||
const sourcesForLanguageFilter = useMemo(
|
||||
() =>
|
||||
SourceService.filter(sources ?? [], {
|
||||
showNsfw,
|
||||
isNsfw: showNsfw ? undefined : true,
|
||||
removeLocalSource: true,
|
||||
}),
|
||||
[sources],
|
||||
|
||||
@@ -259,7 +259,7 @@ export const SearchAll: React.FC = () => {
|
||||
const filteredSources = useMemo(
|
||||
() =>
|
||||
Sources.filter(sources, {
|
||||
showNsfw,
|
||||
isNsfw: showNsfw ? undefined : false,
|
||||
languages: shownLangs,
|
||||
keepLocalSource: true,
|
||||
pinned: shouldShowOnlyPinnedSources,
|
||||
|
||||
@@ -93,14 +93,14 @@ export class Sources {
|
||||
static filter<Source extends SourceIdInfo & SourceLanguageInfo & SourceNsfwInfo>(
|
||||
sources: Source[],
|
||||
{
|
||||
showNsfw,
|
||||
isNsfw,
|
||||
languages,
|
||||
keepLocalSource,
|
||||
pinned,
|
||||
enabled,
|
||||
removeLocalSource,
|
||||
}: {
|
||||
showNsfw?: boolean;
|
||||
isNsfw?: boolean;
|
||||
languages?: string[];
|
||||
keepLocalSource?: boolean;
|
||||
pinned?: boolean;
|
||||
@@ -113,9 +113,8 @@ export class Sources {
|
||||
return sources
|
||||
.filter(
|
||||
(source) =>
|
||||
showNsfw === undefined ||
|
||||
showNsfw ||
|
||||
!source.isNsfw ||
|
||||
isNsfw === undefined ||
|
||||
source.isNsfw === isNsfw ||
|
||||
(keepLocalSource && Sources.isLocalSource(source)),
|
||||
)
|
||||
.filter(
|
||||
@@ -127,15 +126,13 @@ export class Sources {
|
||||
.filter(
|
||||
(source) =>
|
||||
pinned === undefined ||
|
||||
!pinned ||
|
||||
getSourceMetadata(source).isPinned ||
|
||||
getSourceMetadata(source).isPinned === pinned ||
|
||||
(keepLocalSource && Sources.isLocalSource(source)),
|
||||
)
|
||||
.filter(
|
||||
(source) =>
|
||||
enabled === undefined ||
|
||||
!enabled ||
|
||||
getSourceMetadata(source).isEnabled ||
|
||||
getSourceMetadata(source).isEnabled === enabled ||
|
||||
(keepLocalSource && Sources.isLocalSource(source)),
|
||||
)
|
||||
.filter((source) => !removeLocalSource || !Sources.isLocalSource(source));
|
||||
|
||||
Reference in New Issue
Block a user