• Checks if manga should be auto-accepted based on custom accept rules.

    Parameters

    Returns { shouldAccept: boolean; matchedRule?: CustomRule }

    Object with shouldAccept flag and matched rule if applicable

    export function shouldAcceptByCustomRules(
    manga: AniListManga,
    kenmeiManga: KenmeiManga,
    ): { shouldAccept: boolean; matchedRule?: CustomRule } {
    const customRules = getMatchConfig().customRules;
    if (!customRules) {
    return { shouldAccept: false };
    }

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

    // Filter to enabled rules only
    const enabledAcceptRules = acceptRules.filter((rule) => rule.enabled);
    if (!enabledAcceptRules.length) {
    return { shouldAccept: false };
    }

    // Check each enabled accept rule
    for (const rule of enabledAcceptRules) {
    if (testRuleAgainstMetadata(rule, manga, kenmeiManga)) {
    const checkedFields = getEffectiveTargetFields(rule);
    console.debug(
    `[CustomRules] ✅ Auto-accepting manga "${manga.title?.romaji || manga.title?.english || "unknown"}" due to custom accept rule: "${rule.description}" (checked fields: ${checkedFields.join(", ")})`,
    );
    return { shouldAccept: true, matchedRule: rule };
    }
    }

    return { shouldAccept: false };
    }