• Execute Comick fallback when no AniList results are found.

    Parameters

    • title: string

      Manga title to search for.

    • token: undefined | string

      Optional authentication token for Comick API.

    • finalResults: AniListManga[]

      Current results (returned unchanged if fallback fails or is disabled).

    • searchConfig: SearchServiceConfig

      Search configuration including cache bypass flag.

    Returns Promise<{ results: AniListManga[]; comickSourceMap: ComickSourceMap }>

    Processed Comick results and source map.

    export async function executeComickFallback(
    title: string,
    token: string | undefined,
    finalResults: AniListManga[],
    searchConfig: SearchServiceConfig,
    ): Promise<{
    results: AniListManga[];
    comickSourceMap: ComickSourceMap;
    }> {
    const comickSourceMap: ComickSourceMap = new Map();

    const matchConfig = getMatchConfig();

    // Early return if conditions not met for Comick search
    if (!token) {
    return { results: finalResults, comickSourceMap };
    }

    if (!matchConfig.enableComickSearch) {
    return { results: finalResults, comickSourceMap };
    }

    console.info(
    `[MangaSearchService] 🎯 No AniList results found for "${title}", trying Comick fallback...`,
    );

    try {
    const comickLimit = 1;

    console.debug(
    `[MangaSearchService] 🔍 Searching Comick with limit ${comickLimit} for "${title}"`,
    );

    const comickResults = await mangaSourceRegistry.searchAndGetAniListManga(
    MangaSource.Comick,
    title,
    token,
    comickLimit,
    );

    if (comickResults.length === 0) {
    console.debug(
    `[MangaSearchService] 📦 No Comick results found for "${title}"`,
    );
    return { results: finalResults, comickSourceMap };
    }

    console.info(
    `[MangaSearchService] ✅ Comick found ${comickResults.length} results for "${title}"`,
    );

    // Process the Comick results
    let processedResults = processComickResults(
    comickResults,
    title,
    comickSourceMap,
    );

    console.debug(
    `[MangaSearchService] 🎯 Using ${processedResults.length} Comick results as fallback for "${title}"`,
    );

    // Apply filtering to Comick results
    processedResults = applyComickFiltering(
    processedResults,
    title,
    searchConfig,
    );

    return { results: processedResults, comickSourceMap };
    } catch (error) {
    console.error(
    `[MangaSearchService] ❌ Comick fallback failed for "${title}":`,
    error,
    );
    return { results: finalResults, comickSourceMap };
    }
    }