Cleanup "Sources::filter"
This commit is contained in:
@@ -110,32 +110,28 @@ export class Sources {
|
|||||||
): Source[] {
|
): Source[] {
|
||||||
const normalizedLanguages = toComparableLanguages(toUniqueLanguageCodes(languages ?? []));
|
const normalizedLanguages = toComparableLanguages(toUniqueLanguageCodes(languages ?? []));
|
||||||
|
|
||||||
return sources
|
const filters: [Condition: any, CheckKeepLocalSource: boolean, Filter: (source: Source) => boolean][] = [
|
||||||
.filter(
|
[isNsfw, true, (source: Source) => source.isNsfw === isNsfw],
|
||||||
|
[
|
||||||
|
languages,
|
||||||
|
true,
|
||||||
|
(source: Source) => normalizedLanguages.includes(toComparableLanguage(Sources.getLanguage(source))),
|
||||||
|
],
|
||||||
|
[pinned, true, (source: Source) => getSourceMetadata(source).isPinned === pinned],
|
||||||
|
[enabled, true, (source: Source) => getSourceMetadata(source).isEnabled === enabled],
|
||||||
|
[removeLocalSource, false, (source: Source) => !removeLocalSource || !Sources.isLocalSource(source)],
|
||||||
|
];
|
||||||
|
|
||||||
|
return filters.reduce((sourcesToFilter, [condition, checkKeepLocalSource, filter]) => {
|
||||||
|
if (condition === undefined) {
|
||||||
|
return sourcesToFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sourcesToFilter.filter(
|
||||||
(source) =>
|
(source) =>
|
||||||
isNsfw === undefined ||
|
filter(source) || (checkKeepLocalSource && keepLocalSource && Sources.isLocalSource(source)),
|
||||||
source.isNsfw === isNsfw ||
|
);
|
||||||
(keepLocalSource && Sources.isLocalSource(source)),
|
}, sources);
|
||||||
)
|
|
||||||
.filter(
|
|
||||||
(source) =>
|
|
||||||
!languages ||
|
|
||||||
normalizedLanguages.includes(toComparableLanguage(Sources.getLanguage(source))) ||
|
|
||||||
(keepLocalSource && Sources.isLocalSource(source)),
|
|
||||||
)
|
|
||||||
.filter(
|
|
||||||
(source) =>
|
|
||||||
pinned === undefined ||
|
|
||||||
getSourceMetadata(source).isPinned === pinned ||
|
|
||||||
(keepLocalSource && Sources.isLocalSource(source)),
|
|
||||||
)
|
|
||||||
.filter(
|
|
||||||
(source) =>
|
|
||||||
enabled === undefined ||
|
|
||||||
getSourceMetadata(source).isEnabled === enabled ||
|
|
||||||
(keepLocalSource && Sources.isLocalSource(source)),
|
|
||||||
)
|
|
||||||
.filter((source) => !removeLocalSource || !Sources.isLocalSource(source));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static areFromMultipleRepos<Source extends SourceIdInfo & SourceRepoInfo>(sources: Source[]): boolean {
|
static areFromMultipleRepos<Source extends SourceIdInfo & SourceRepoInfo>(sources: Source[]): boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user