• Return fallback results when filtering removes all results.

    If all results are filtered but originals exist, returns top 3 original results as fallback to prevent complete failure.

    Parameters

    Returns AniListManga[]

    Final results (filtered or fallback)

    export function handleNoResultsFallback(
    filteredResults: AniListManga[],
    originalResults: AniListManga[],
    searchConfig: SearchServiceConfig,
    hadAnyApiResults: boolean,
    ): AniListManga[] {
    const hasOriginalResults = originalResults.length > 0 || hadAnyApiResults;

    if (filteredResults.length === 0 && hasOriginalResults) {
    console.warn(
    `[MangaSearchService] ⚠️ No matches passed filtering, but including raw API results anyway`,
    );

    const fallbackResults = originalResults
    .slice(0, 3)
    .filter(
    (manga) => manga.format !== "NOVEL" && manga.format !== "LIGHT_NOVEL",
    );

    console.debug(
    `[MangaSearchService] 🔍 Including these API results:`,
    fallbackResults.map((m) => ({
    id: m.id,
    romaji: m.title?.romaji,
    english: m.title?.english,
    })),
    );

    return fallbackResults;
    }

    if (
    searchConfig.bypassCache &&
    filteredResults.length === 0 &&
    hasOriginalResults
    ) {
    console.warn(
    `[MangaSearchService] ⚠️ MANUAL SEARCH with no ranked results - forcing inclusion of API results`,
    );
    return originalResults.filter(
    (manga) => manga.format !== "NOVEL" && manga.format !== "LIGHT_NOVEL",
    );
    }

    return filteredResults;
    }