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 1
1
import { cache } from 'react' ;
2
+ import semver from 'semver' ;
2
3
3
4
import { BLOG_POSTS_PER_PAGE } from '#site/next.constants.mjs' ;
4
5
import { blogData } from '#site/next.json.mjs' ;
@@ -8,11 +9,27 @@ const blogPosts = cache(() =>
8
9
blogData . posts . map ( post => ( { ...post , date : new Date ( post . date ) } ) )
9
10
) ;
10
11
12
+ const extractVersionFromTitle = ( title : string ) : string | null => {
13
+ const match = title . match ( / v ( \d + \. \d + \. \d + ) / ) ;
14
+ return match ? match [ 1 ] : null ;
15
+ } ;
16
+
11
17
export const provideBlogPosts = cache (
12
18
( category : BlogCategory ) : BlogPostsRSC => {
13
19
const categoryPosts = blogPosts ( )
14
20
. 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
+ } ) ;
16
33
17
34
// Total amount of possible pages given the amount of blog posts
18
35
const total = categoryPosts . length / BLOG_POSTS_PER_PAGE ;
You can’t perform that action at this time.
0 commit comments