Enforce study lesson release locks and schedule biweekly Monday dates

This commit is contained in:
nmemmert
2026-05-12 15:09:38 -04:00
parent 82e9443db8
commit d74151d91d
5 changed files with 154 additions and 83 deletions
+36
View File
@@ -111,6 +111,36 @@ function sanitizeUrl(value) {
return ''
}
function isSectionReleased(section) {
if (!section || typeof section !== 'object') return false
if (typeof section.releasedAt !== 'string' || !section.releasedAt.trim()) return true
const releaseTime = Date.parse(section.releasedAt)
if (!Number.isFinite(releaseTime)) return true
return releaseTime <= Date.now()
}
function filterSiteContentByReleaseDate(siteContent) {
if (!siteContent || typeof siteContent !== 'object' || Array.isArray(siteContent)) return siteContent
const filteredStudies = Array.isArray(siteContent.studies)
? siteContent.studies.map(study => {
if (!study || typeof study !== 'object') return study
const sections = Array.isArray(study.sections) ? study.sections.filter(isSectionReleased) : []
return { ...study, sections }
})
: siteContent.studies
const filteredLegacySections = Array.isArray(siteContent.colossiansStudySections)
? siteContent.colossiansStudySections.filter(isSectionReleased)
: siteContent.colossiansStudySections
return {
...siteContent,
studies: filteredStudies,
colossiansStudySections: filteredLegacySections,
}
}
function sanitizeRedirectRules(value) {
const source = Array.isArray(value) ? value : []
const seen = new Set()
@@ -1278,6 +1308,12 @@ app.get('/api/admin-content', async (req, res) => {
try {
const parsed = await loadSiteContentFile(source === 'draft' ? DRAFT_DATA_FILE : DATA_FILE)
if (source === 'published') {
const safeSiteContent = filterSiteContentByReleaseDate(parsed.siteContent)
res.json({ ...parsed, siteContent: safeSiteContent })
return
}
res.json(parsed)
} catch {
if (source === 'draft') {