mirror of
https://github.com/FoxxMD/context-mod.git
synced 2026-04-19 03:00:07 -04:00
feat(filter): Add filters to all result data
This commit is contained in:
@@ -69,17 +69,24 @@ export abstract class Action {
|
||||
success: false,
|
||||
};
|
||||
try {
|
||||
const [itemPass, itemFilterType, itemFitlerResults] = await checkItemFilter(item, this.itemIs, this.resources, this.logger);
|
||||
const [itemPass, itemFilterType, itemFilterResults] = await checkItemFilter(item, this.itemIs, this.resources, this.logger);
|
||||
if (!itemPass) {
|
||||
this.logger.verbose(`Activity did not pass 'itemIs' test, Action not run`);
|
||||
actRes.runReason = `Activity did not pass 'itemIs' test, Action not run`;
|
||||
actRes.itemIs = itemFilterResults;
|
||||
return actRes;
|
||||
} else if(this.itemIs.length > 0) {
|
||||
actRes.itemIs = itemFilterResults;
|
||||
}
|
||||
const [authFilterResult, authFilterType] = await checkAuthorFilter(item, this.authorIs, this.resources, this.logger);
|
||||
if(!authFilterResult) {
|
||||
|
||||
const [authPass, authFilterType, authorFilterResult] = await checkAuthorFilter(item, this.authorIs, this.resources, this.logger);
|
||||
if(!authPass) {
|
||||
this.logger.verbose(`${authFilterType} author criteria not matched, Action not run`);
|
||||
actRes.runReason = `${authFilterType} author criteria not matched`;
|
||||
actRes.authorIs = authorFilterResult;
|
||||
return actRes;
|
||||
} else if(authFilterType !== undefined) {
|
||||
actRes.authorIs = authorFilterResult;
|
||||
}
|
||||
|
||||
actRes.run = true;
|
||||
|
||||
@@ -342,6 +342,11 @@ export abstract class Check implements ICheck {
|
||||
let allRuleResults: RuleResult[] = [];
|
||||
let allResults: (RuleResult | RuleSetResult)[] = [];
|
||||
|
||||
const checkResult: CheckResult = {
|
||||
triggered: false,
|
||||
ruleResults: [],
|
||||
}
|
||||
|
||||
// check cache results
|
||||
const cacheResult = await this.getCacheResult(item);
|
||||
if(cacheResult !== undefined) {
|
||||
@@ -358,14 +363,20 @@ export abstract class Check implements ICheck {
|
||||
return {
|
||||
triggered: false,
|
||||
ruleResults: allRuleResults,
|
||||
itemIs: itemFilterResults
|
||||
};
|
||||
} else if(this.itemIs.length > 0) {
|
||||
checkResult.itemIs = itemFilterResults;
|
||||
}
|
||||
const [authFilterResult, authFilterType] = await checkAuthorFilter(item, this.authorIs, this.resources, this.logger);
|
||||
if(!authFilterResult) {
|
||||
const [authPass, authFilterType, authorFilterResults] = await checkAuthorFilter(item, this.authorIs, this.resources, this.logger);
|
||||
if(!authPass) {
|
||||
return {
|
||||
triggered: false,
|
||||
ruleResults: allRuleResults,
|
||||
authorIs: authorFilterResults
|
||||
};
|
||||
} else if(authFilterType !== undefined) {
|
||||
checkResult.authorIs = authorFilterResults;
|
||||
}
|
||||
|
||||
if (this.rules.length === 0) {
|
||||
|
||||
@@ -1966,6 +1966,8 @@ export interface ActionResult extends ActionProcessResult {
|
||||
name: string,
|
||||
run: boolean,
|
||||
runReason?: string,
|
||||
itemIs?: FilterResult<TypedActivityState>
|
||||
authorIs?: FilterResult<AuthorCriteria>
|
||||
}
|
||||
|
||||
export interface ActionProcessResult {
|
||||
@@ -1990,6 +1992,8 @@ export interface ActionedEvent {
|
||||
export interface CheckResult {
|
||||
triggered: boolean
|
||||
ruleResults: RuleResult[]
|
||||
itemIs?: FilterResult<TypedActivityState>
|
||||
authorIs?: FilterResult<AuthorCriteria>
|
||||
fromCache?: boolean
|
||||
}
|
||||
|
||||
@@ -2007,7 +2011,7 @@ export interface RunResult {
|
||||
triggered: boolean
|
||||
reason?: string
|
||||
error?: string
|
||||
itemIs?: FilterResult<TypedActivityStates>
|
||||
itemIs?: FilterResult<TypedActivityState>
|
||||
authorIs?: FilterResult<AuthorCriteria>
|
||||
checkResults: CheckSummary[]
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@ import Submission from "snoowrap/dist/objects/Submission";
|
||||
import {Logger} from "winston";
|
||||
import {findResultByPremise, mergeArr} from "../util";
|
||||
import {checkAuthorFilter, checkItemFilter, SubredditResources} from "../Subreddit/SubredditResources";
|
||||
import {ChecksActivityState, TypedActivityStates} from "../Common/interfaces";
|
||||
import Author, {AuthorOptions} from "../Author/Author";
|
||||
import {ChecksActivityState, FilterResult, TypedActivityState, TypedActivityStates} from "../Common/interfaces";
|
||||
import Author, {AuthorCriteria, AuthorOptions} from "../Author/Author";
|
||||
|
||||
export interface RuleOptions {
|
||||
name?: string;
|
||||
@@ -32,6 +32,8 @@ export interface RuleResult extends ResultContext {
|
||||
name: string
|
||||
triggered: (boolean | null)
|
||||
fromCache?: boolean
|
||||
itemIs?: FilterResult<TypedActivityState>
|
||||
authorIs?: FilterResult<AuthorCriteria>
|
||||
}
|
||||
|
||||
export type FormattedRuleResult = RuleResult & {
|
||||
|
||||
@@ -100,12 +100,9 @@ export class Run {
|
||||
|
||||
async handle(activity: (Submission | Comment), initAllRuleResults: RuleResult[], existingRunResults: RunResult[] = [], options?: runCheckOptions): Promise<[RunResult, string]> {
|
||||
|
||||
let itemIsResults: FilterResult<TypedActivityStates> | undefined;
|
||||
let authorIsResults: FilterResult<AuthorCriteria> | undefined;
|
||||
let allRuleResults = initAllRuleResults;
|
||||
let continueRunIteration = true;
|
||||
let postBehavior = 'next';
|
||||
let runError: string | undefined;
|
||||
const runResult: RunResult = {
|
||||
name: this.name,
|
||||
triggered: false,
|
||||
@@ -136,18 +133,16 @@ export class Run {
|
||||
|
||||
try {
|
||||
|
||||
const [itemPass, itemFitlerType, itemFilterResults] = await checkItemFilter(activity, this.itemIs, this.resources, this.logger)
|
||||
const [itemPass, itemFilterType, itemFilterResults] = await checkItemFilter(activity, this.itemIs, this.resources, this.logger)
|
||||
if (!itemPass) {
|
||||
this.logger.verbose(`${FAIL} => Item did not pass 'itemIs' test`);
|
||||
return [{
|
||||
...runResult,
|
||||
triggered: false,
|
||||
// TODO add itemIs results
|
||||
itemIs: itemIsResults
|
||||
itemIs: itemFilterResults
|
||||
}, postBehavior];
|
||||
} else if (this.itemIs.length > 0) {
|
||||
// TODO add itemIs results
|
||||
//runResult.itemIs = itemPass;
|
||||
runResult.itemIs = itemFilterResults;
|
||||
}
|
||||
|
||||
const [authFilterPass, authFilterType, authorFilterResult] = await checkAuthorFilter(activity, this.authorIs, this.resources, this.logger);
|
||||
|
||||
Reference in New Issue
Block a user