• Checks if manga should be skipped based on custom skip rules.

    Parameters

    • manga: AniListManga

      The AniList manga to check

    • kenmeiManga: KenmeiManga

      The original Kenmei manga entry

    • isManualSearch: boolean

      Whether this is a manual search (skip rules don't apply)

    Returns boolean

    True if manga should be skipped, false otherwise

    export function shouldSkipByCustomRules(
    manga: AniListManga,
    kenmeiManga: KenmeiManga,
    isManualSearch: boolean,
    ): boolean {
    // Custom skip rules don't apply to manual searches
    if (isManualSearch) {
    return false;
    }

    const customRules = getMatchConfig().customRules;
    if (!customRules) {
    return false;
    }

    // Normalize customRules arrays defensively to handle malformed storage
    const skipRules = Array.isArray(customRules.skipRules)
    ? customRules.skipRules
    : [];
    if (!skipRules.length) {
    return false;
    }

    // Filter to enabled rules only
    const enabledSkipRules = skipRules.filter((rule) => rule.enabled);
    if (!enabledSkipRules.length) {
    return false;
    }

    // Check each enabled skip rule
    for (const rule of enabledSkipRules) {
    if (testRuleAgainstMetadata(rule, manga, kenmeiManga)) {
    const checkedFields = getEffectiveTargetFields(rule);
    console.debug(
    `[CustomRules] ⏭️ Skipping manga "${manga.title?.romaji || manga.title?.english || "unknown"}" due to custom skip rule: "${rule.description}" (checked fields: ${checkedFields.join(", ")})`,
    );
    return true;
    }
    }

    return false;
    }