Skip to content

Commit bd68979

Browse files
committed
feat: sort release blog by semver order
1 parent b33a5a4 commit bd68979

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

apps/site/next-data/providers/blogData.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { cache } from 'react';
2+
import semver from 'semver';
23

34
import { BLOG_POSTS_PER_PAGE } from '#site/next.constants.mjs';
45
import { blogData } from '#site/next.json.mjs';
@@ -8,11 +9,27 @@ const blogPosts = cache(() =>
89
blogData.posts.map(post => ({ ...post, date: new Date(post.date) }))
910
);
1011

12+
const extractVersionFromTitle = (title: string): string | null => {
13+
const match = title.match(/v(\d+\.\d+\.\d+)/);
14+
return match ? match[1] : null;
15+
};
16+
1117
export const provideBlogPosts = cache(
1218
(category: BlogCategory): BlogPostsRSC => {
1319
const categoryPosts = blogPosts()
1420
.filter(post => post.categories.includes(category))
15-
.sort((a, b) => b.date.getTime() - a.date.getTime());
21+
.sort((a, b) => {
22+
if (category === 'release') {
23+
const versionA = extractVersionFromTitle(a.title);
24+
const versionB = extractVersionFromTitle(b.title);
25+
26+
if (versionA && versionB) {
27+
return semver.rcompare(versionB, versionA);
28+
}
29+
}
30+
31+
return b.date.getTime() - a.date.getTime();
32+
});
1633

1734
// Total amount of possible pages given the amount of blog posts
1835
const total = categoryPosts.length / BLOG_POSTS_PER_PAGE;

0 commit comments

Comments
 (0)