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; }, }; }