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} />
))}
</div>
<LoadMoreButton categorySlug={categorySlug} initialCount={articles.length} />
<LoadMoreButton categorySlug={categorySlug} initialCount={articles.length} hasMore={articles.length >= 24} />
</>
)}
</div>
+2 -2
View File
@@ -11,12 +11,12 @@ export default async function HomePage() {
try {
const [settings, articles] = await Promise.all([
getSiteSettings(),
getArticles({ limit: 12 }),
getArticles({ limit: 13 }),
])
heroArticle = settings.hero_article
latestArticles = settings.hero_article
? articles.filter((a) => a.id !== settings.hero_article!.id)
: articles
: articles.slice(0, 12)
} catch {
// Directus not available yet
}
+3 -2
View File
@@ -7,13 +7,14 @@ import ArticleCard from './ArticleCard'
interface Props {
categorySlug: string
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 [offset, setOffset] = useState(initialCount)
const [loading, setLoading] = useState(false)
const [hasMore, setHasMore] = useState(true)
const [hasMore, setHasMore] = useState(initialHasMore)
async function loadMore() {
setLoading(true)