fix: fetch 13 articles so Latest grid shows 12 after hero filter; hide Load More when all articles already loaded

This commit is contained in:
achmad
2026-05-31 16:46:31 +07:00
parent 75d4da380e
commit 4befb572a3
3 changed files with 6 additions and 5 deletions
+1 -1
View File
@@ -68,7 +68,7 @@ export default async function CategoryPage({ params }: Props) {
<ArticleCard key={article.id} article={article} /> <ArticleCard key={article.id} article={article} />
))} ))}
</div> </div>
<LoadMoreButton categorySlug={categorySlug} initialCount={articles.length} /> <LoadMoreButton categorySlug={categorySlug} initialCount={articles.length} hasMore={articles.length >= 24} />
</> </>
)} )}
</div> </div>
+2 -2
View File
@@ -11,12 +11,12 @@ export default async function HomePage() {
try { try {
const [settings, articles] = await Promise.all([ const [settings, articles] = await Promise.all([
getSiteSettings(), getSiteSettings(),
getArticles({ limit: 12 }), getArticles({ limit: 13 }),
]) ])
heroArticle = settings.hero_article heroArticle = settings.hero_article
latestArticles = settings.hero_article latestArticles = settings.hero_article
? articles.filter((a) => a.id !== settings.hero_article!.id) ? articles.filter((a) => a.id !== settings.hero_article!.id)
: articles : articles.slice(0, 12)
} catch { } catch {
// Directus not available yet // Directus not available yet
} }
+3 -2
View File
@@ -7,13 +7,14 @@ import ArticleCard from './ArticleCard'
interface Props { interface Props {
categorySlug: string categorySlug: string
initialCount: number initialCount: number
hasMore?: boolean
} }
export default function LoadMoreButton({ categorySlug, initialCount }: Props) { export default function LoadMoreButton({ categorySlug, initialCount, hasMore: initialHasMore = true }: Props) {
const [articles, setArticles] = useState<Article[]>([]) const [articles, setArticles] = useState<Article[]>([])
const [offset, setOffset] = useState(initialCount) const [offset, setOffset] = useState(initialCount)
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
const [hasMore, setHasMore] = useState(true) const [hasMore, setHasMore] = useState(initialHasMore)
async function loadMore() { async function loadMore() {
setLoading(true) setLoading(true)