Files
RedditBot/src/services/subreddit-polling-control.ts
T

26 lines
1.0 KiB
TypeScript

import type { Config } from '../config/index.js';
import type { ConfigPersistence } from '../config/index.js';
import type { Logger } from '../utils/logger.js';
import type { SubredditPollingControl } from './monitor.js';
/** Persists a terminal Reddit listing failure so every account stops polling it. */
export function createConfigBackedSubredditPollingControl(
config: Config,
configStore: ConfigPersistence,
logger: Logger,
): SubredditPollingControl {
return {
disableUnavailableSubreddit(subreddit: string): void {
const entry = config.reddit.subreddits.find((candidate) => candidate.name.toLowerCase() === subreddit.toLowerCase());
if (!entry || entry.enabled === false) return;
entry.enabled = false;
configStore.save(config);
logger.warn(`Persisted disabled status for unavailable subreddit r/${entry.name}`);
},
isSubredditEnabled(subreddit: string): boolean {
return config.reddit.subreddits.find((entry) => entry.name.toLowerCase() === subreddit.toLowerCase())?.enabled !== false;
},
};
}