From dcf57273e2949679391d3c0334078cba3d1208fb Mon Sep 17 00:00:00 2001 From: jjbrunton Date: Sat, 8 Aug 2026 22:53:24 +0100 Subject: [PATCH] Disable unavailable subreddits after Reddit 404 --- .../src/features/settings/settings-model.ts | 3 ++ .../features/settings/settings-sections.tsx | 11 +++++++- packages/api-contracts/src/config.ts | 1 + src/bootstrap.ts | 6 +++- src/config/index.ts | 1 + src/reddit/api.ts | 11 ++++++-- src/services/monitor.ts | 28 +++++++++++++++++-- .../reddit-account-runtime-builder.ts | 3 ++ src/services/subreddit-polling-control.ts | 25 +++++++++++++++++ tests/config.test.ts | 8 +++++- tests/monitor.test.ts | 26 ++++++++++++++++- tests/reddit-api.test.ts | 21 ++++++++++++-- tests/subreddit-polling-control.test.ts | 21 ++++++++++++++ 13 files changed, 153 insertions(+), 12 deletions(-) create mode 100644 src/services/subreddit-polling-control.ts create mode 100644 tests/subreddit-polling-control.test.ts diff --git a/apps/dashboard/src/features/settings/settings-model.ts b/apps/dashboard/src/features/settings/settings-model.ts index acf6cc8..48430e7 100644 --- a/apps/dashboard/src/features/settings/settings-model.ts +++ b/apps/dashboard/src/features/settings/settings-model.ts @@ -9,6 +9,7 @@ import { export interface SubredditDraft { name: string; + enabled: boolean; type: 'image' | 'chat'; weight: string; tone: z.infer; @@ -67,6 +68,7 @@ export function createSettingsDraft(config: ConfigResponse): SettingsDraft { recentWindowMinutes: String(config.reddit.recentWindowMinutes), subreddits: config.subreddits.map((subreddit) => ({ name: subreddit.name, + enabled: subreddit.enabled, type: subreddit.type, weight: subreddit.weight === undefined ? '' : String(subreddit.weight), tone: subreddit.tone, @@ -112,6 +114,7 @@ export function validateSettingsDraft(draft: SettingsDraft): SettingsValidationR recentWindowMinutes: Number(draft.recentWindowMinutes), subreddits: draft.subreddits.map((subreddit) => ({ name: subreddit.name.trim(), + enabled: subreddit.enabled, type: subreddit.type, weight: subreddit.weight.trim() === '' ? undefined : Number(subreddit.weight), tone: subreddit.tone, diff --git a/apps/dashboard/src/features/settings/settings-sections.tsx b/apps/dashboard/src/features/settings/settings-sections.tsx index 45ea5d4..905beba 100644 --- a/apps/dashboard/src/features/settings/settings-sections.tsx +++ b/apps/dashboard/src/features/settings/settings-sections.tsx @@ -122,7 +122,7 @@ export function BehaviourSection({ config, draft, errors, onChange }: SectionPro ...draft, subreddits: [ ...draft.subreddits, - { name: '', type: 'image', weight: '1', tone: 'default', scripted: '' }, + { name: '', enabled: true, type: 'image', weight: '1', tone: 'default', scripted: '' }, ], })} type="button" @@ -157,6 +157,15 @@ export function BehaviourSection({ config, draft, errors, onChange }: SectionPro +