• Filter manga entries based on criteria.

    Parameters

    • entries: KenmeiManga[]

      Array of Kenmei manga entries.

    • criteria: {
          status?: KenmeiStatus[];
          minChapters?: number;
          hasProgress?: boolean;
          hasScore?: boolean;
      }

      Filter criteria.

    Returns KenmeiManga[]

    Filtered entries.

    export function filterMangaEntries(
    entries: KenmeiManga[],
    criteria: {
    status?: KenmeiStatus[];
    minChapters?: number;
    hasProgress?: boolean;
    hasScore?: boolean;
    },
    ): KenmeiManga[] {
    return entries.filter((entry) => {
    if (criteria.status?.length) {
    if (!criteria.status.includes(entry.status)) return false;
    }

    if (criteria.minChapters !== undefined) {
    if ((entry.chapters_read ?? 0) < criteria.minChapters) return false;
    }

    if (criteria.hasProgress) {
    const chapters = entry.chapters_read ?? 0;
    const volumes = entry.volumes_read ?? 0;
    if (chapters <= 0 && volumes <= 0) return false;
    }

    if (criteria.hasScore) {
    if ((entry.score ?? 0) <= 0) return false;
    }

    return true;
    });
    }