26 lines
1.0 KiB
TypeScript
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;
|
|
},
|
|
};
|
|
}
|