The AniList manga to check
The original Kenmei manga entry
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 };
}
Checks if manga should be auto-accepted based on custom accept rules.