Skip to content

Commit 45b5bf5

Browse files
authored
fix(blog): filter unpublished posts immediately (#264)
Previously, unpublished posts still appeared in the blog index.
1 parent 01caa83 commit 45b5bf5

File tree

5 files changed

+15
-26
lines changed

5 files changed

+15
-26
lines changed

crates/rari-data/src/baseline.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ use std::path::Path;
77
use indexmap::IndexMap;
88
use rari_utils::concat_strs;
99
use rari_utils::io::read_to_string;
10-
use schemars::Schema;
11-
use schemars::{JsonSchema, SchemaGenerator};
10+
use schemars::{JsonSchema, Schema, SchemaGenerator};
1211
use serde::de::{self, value, SeqAccess, Visitor};
1312
use serde::{Deserialize, Deserializer, Serialize, Serializer};
1413
use serde_json::Value;

crates/rari-doc/src/build.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use std::io::{BufWriter, Write};
1010
use std::iter::once;
1111
use std::path::PathBuf;
1212

13-
use chrono::{NaiveDateTime, Utc};
13+
use chrono::NaiveDateTime;
1414
use itertools::Itertools;
1515
use rari_types::globals::{
1616
base_url, blog_root, build_out_root, contributor_spotlight_root, curriculum_root,
@@ -34,7 +34,6 @@ use crate::pages::page::{Page, PageBuilder, PageLike};
3434
use crate::pages::types::spa::SPA;
3535
use crate::resolve::url_to_folder_path;
3636
use crate::rss::create_rss;
37-
use crate::utils::filter_unpublished_blog_post;
3837

3938
#[derive(Clone, Debug, Default)]
4039
pub struct SitemapMeta<'a> {
@@ -266,7 +265,6 @@ pub fn build_blog_pages<'a>() -> Result<Vec<SitemapMeta<'a>>, DocError> {
266265
return Err(DocError::NoBlogRoot);
267266
}
268267
copy_blog_author_avatars()?;
269-
let now = Utc::now().date_naive();
270268

271269
let rss_file = build_out_root()?
272270
.join(default_locale().as_folder_str())
@@ -275,7 +273,6 @@ pub fn build_blog_pages<'a>() -> Result<Vec<SitemapMeta<'a>>, DocError> {
275273
let sorted_posts: Vec<_> = blog_files()
276274
.posts
277275
.values()
278-
.filter(|post| filter_unpublished_blog_post(post, &now))
279276
.filter_map(|page| {
280277
if let Page::BlogPost(post) = page {
281278
Some(post)
@@ -291,7 +288,6 @@ pub fn build_blog_pages<'a>() -> Result<Vec<SitemapMeta<'a>>, DocError> {
291288
blog_files()
292289
.posts
293290
.values()
294-
.filter(|post| filter_unpublished_blog_post(post, &now))
295291
.chain(once(&SPA::from_url("/en-US/blog/").unwrap()))
296292
.map(|page| {
297293
build_single_page(page).map(|_| SitemapMeta {

crates/rari-doc/src/cached_readers.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use std::path::{Path, PathBuf};
2727
use std::str::FromStr;
2828
use std::sync::{Arc, LazyLock, OnceLock};
2929

30+
use chrono::Utc;
3031
use dashmap::DashMap;
3132
use rari_types::globals::{
3233
blog_root, cache_content, content_root, content_translated_root, contributor_spotlight_root,
@@ -52,7 +53,7 @@ use crate::pages::types::generic::Generic;
5253
use crate::reader::read_docs_parallel;
5354
use crate::sidebars::jsref;
5455
use crate::translations::init_translations_from_static_docs;
55-
use crate::utils::split_fm;
56+
use crate::utils::{filter_unpublished_blog_post, split_fm};
5657
use crate::walker::walk_builder;
5758

5859
pub(crate) static STATIC_DOC_PAGE_FILES: OnceLock<HashMap<(Locale, Cow<'_, str>), Page>> =
@@ -234,9 +235,11 @@ pub fn doc_page_from_static_files(path: &Path) -> Result<Page, DocError> {
234235

235236
fn gather_blog_posts() -> Result<HashMap<String, Page>, DocError> {
236237
if let Some(blog_root) = blog_root() {
238+
let now = Utc::now().date_naive();
237239
let post_root = blog_root.join("posts");
238240
Ok(read_docs_parallel::<Page, BlogPost>(&[post_root], None)?
239241
.into_iter()
242+
.filter(|post| filter_unpublished_blog_post(&post, &now))
240243
.map(|page| (page.url().to_ascii_lowercase(), page))
241244
.collect())
242245
} else {

crates/rari-doc/src/html/banner.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
use rari_types::{templ::TemplType, Arg, Quotes};
1+
use rari_types::templ::TemplType;
2+
use rari_types::{Arg, Quotes};
23
use tracing::{span, Level};
34

4-
use crate::{
5-
error::DocError,
6-
pages::{page::PageLike, types::utils::FmTempl},
7-
templ::templs::invoke,
8-
};
5+
use crate::error::DocError;
6+
use crate::pages::page::PageLike;
7+
use crate::pages::types::utils::FmTempl;
8+
use crate::templ::templs::invoke;
99

1010
pub fn build_banner<T: PageLike>(banner: &FmTempl, page: &T) -> Result<String, DocError> {
1111
let rari_env = page.rari_env().ok_or(DocError::NoRariEnv)?;

crates/rari-doc/src/pages/types/spa.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,13 @@ use std::iter;
44
use std::path::{Path, PathBuf};
55
use std::sync::{Arc, LazyLock};
66

7-
use chrono::Utc;
87
use constcat::concat;
98
use rari_types::fm_types::{FeatureStatus, PageType};
109
use rari_types::globals::{content_translated_root, settings};
1110
use rari_types::locale::Locale;
1211
use rari_types::RariEnv;
1312
use rari_utils::concat_strs;
1413

15-
use crate::pages::templates::{BlogRenderer, HomeRenderer, SpaRenderer};
16-
use crate::pages::types::utils::FmTempl;
17-
1814
use super::spa_homepage::{
1915
featured_articles, featured_contributor, latest_news, recent_contributions,
2016
};
@@ -29,9 +25,9 @@ use crate::pages::json::{
2925
JsonHomePage, JsonHomePageSPAHyData, JsonSpaPage, Parent,
3026
};
3127
use crate::pages::page::{Page, PageLike, PageReader};
32-
use crate::pages::templates::SpaBuildTemplate;
28+
use crate::pages::templates::{BlogRenderer, HomeRenderer, SpaBuildTemplate, SpaRenderer};
3329
use crate::pages::types::blog::BlogMeta;
34-
use crate::utils::filter_unpublished_blog_post;
30+
use crate::pages::types::utils::FmTempl;
3531

3632
#[derive(Debug, Clone)]
3733
pub struct SPA {
@@ -321,12 +317,7 @@ static POSTS_PER_PAGE: LazyLock<usize> = LazyLock::new(|| {
321317
});
322318

323319
fn blog_indices() -> Vec<(String, BuildSPA)> {
324-
let now = Utc::now().date_naive();
325-
let num_posts = blog_files()
326-
.posts
327-
.values()
328-
.filter(|post| filter_unpublished_blog_post(post, &now))
329-
.count();
320+
let num_posts = blog_files().posts.values().count();
330321
let pages = num_posts / *POSTS_PER_PAGE;
331322
iter::once((
332323
"blog".to_string(),

0 commit comments

Comments
 (0)