File tree Expand file tree Collapse file tree 1 file changed +18
-1
lines changed
apps/site/next-data/providers Expand file tree Collapse file tree 1 file changed +18
-1
lines changed Original file line number Diff line number Diff line change 11import { cache } from 'react' ;
2+ import semver from 'semver' ;
23
34import { BLOG_POSTS_PER_PAGE } from '#site/next.constants.mjs' ;
45import { 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+
1117export 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 ;
You can’t perform that action at this time.
0 commit comments