From db1737baf3d393baa198c4a54487e17d64308b40 Mon Sep 17 00:00:00 2001 From: nmemmert Date: Wed, 7 Oct 2026 14:56:17 -0400 Subject: [PATCH] Hide Enroll for planned studies (Coming soon) and reject planned enrollments server-side; v2.8.3 Co-Authored-By: Claude Sonnet 5.5 --- package.json | 2 +- server/routes/study-data.js | 5 +++++ src/studyPages.tsx | 22 ++++++++++++++-------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index a6b9967..de98f29 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "siteforge", "private": true, - "version": "2.8.2", + "version": "2.8.3", "type": "module", "scripts": { "dev": "vite", diff --git a/server/routes/study-data.js b/server/routes/study-data.js index 9d27bcf..fbb4db6 100644 --- a/server/routes/study-data.js +++ b/server/routes/study-data.js @@ -59,6 +59,11 @@ export function register(app) { const enrolled = Array.isArray(user.enrolledStudySlugs) ? user.enrolledStudySlugs : [] if (!enrolled.includes(studySlug)) { + const catalogEntry = getStudyCatalog().find(study => study.slug === studySlug) + if (catalogEntry?.status === 'planned') { + res.status(400).json({ message: 'This study is not open for enrollment yet.' }) + return + } user.enrolledStudySlugs = [...enrolled, studySlug].slice(0, MAX_STUDY_ENROLLMENTS_PER_USER) user.updatedAt = new Date().toISOString() queueStudyUsersWrite() diff --git a/src/studyPages.tsx b/src/studyPages.tsx index 6515545..61ef3d5 100644 --- a/src/studyPages.tsx +++ b/src/studyPages.tsx @@ -806,6 +806,8 @@ export function StudyLandingPage({ content }: Props) { >{enrollBusySlug === studyInfo.slug ? 'Working…' : 'Yes, leave'} + ) : !studyInfo.enrolled && studyInfo.status === 'planned' ? ( + Coming soon ) : ( + {!studyInfo.enrolled && studyInfo.status === 'planned' ? ( + Coming soon + ) : ( + + )} ))}