@@ -2,8 +2,9 @@ import { defineEventHandler, sendNoContent, setHeader } from 'h3'
2
2
import { Feed } from 'feed'
3
3
import { encodePath , joinURL , withTrailingSlash } from 'ufo'
4
4
import path from 'pathe'
5
- import { getDeskWithSlug , listFeedArticles } from '@storipress/karbon/internal'
5
+ import { getDeskWithSlug } from '@storipress/karbon/internal'
6
6
import type { Author } from '../composables/page-meta'
7
+ import { listArticles } from '../api/article'
7
8
import { useRuntimeConfig } from '#imports'
8
9
import urls from '#sp-internal/storipress-urls.mjs'
9
10
@@ -37,47 +38,37 @@ export default defineEventHandler(async (e) => {
37
38
38
39
const deskIds : string [ ] = desk . desks ?. map ( ( { id } : { id : string } ) => id ) ?? [ ]
39
40
40
- type Filter = Record < 'desk' | 'desk_ids' , string | string [ ] >
41
- const filter = { } as Filter
42
- if ( deskIds . length !== 0 ) {
43
- filter . desk_ids = deskIds
44
- } else {
45
- filter . desk = desk . id
46
- }
47
-
48
41
const runtimeConfig = useRuntimeConfig ( )
49
- const articles = await listFeedArticles ( filter )
42
+ const articles = await listArticles ( { desk_ids : deskIds } )
50
43
51
- const siteUrl = runtimeConfig . public . siteUrl
44
+ const siteUrl = runtimeConfig . public . siteUrl as string
52
45
const feed = new Feed ( {
53
- id : withTrailingSlash ( runtimeConfig . public . siteUrl ) ,
54
- link : withTrailingSlash ( runtimeConfig . public . siteUrl ) ,
55
- title : runtimeConfig . public . siteName ,
56
- description : runtimeConfig . public . siteDescription ,
46
+ id : withTrailingSlash ( runtimeConfig . public . siteUrl as string ) ,
47
+ link : withTrailingSlash ( runtimeConfig . public . siteUrl as string ) ,
48
+ title : runtimeConfig . public . siteName as string ,
49
+ description : runtimeConfig . public . siteDescription as string ,
57
50
updated : new Date ( ) ,
58
51
feedLinks : {
59
52
atom : joinURL ( siteUrl , `/atom/${ fileName } ` ) ,
60
53
} ,
61
54
copyright : `© ${ runtimeConfig . public . siteName } ${ new Date ( ) . getFullYear ( ) } All Rights Reserved` ,
62
55
} )
63
56
64
- articles
65
- . filter ( ( article : TArticle ) => article . published_at )
66
- . forEach ( ( article : TArticle ) => {
67
- const id = encodePath ( urls . article . toURL ( article , urls . article . _context ) )
68
- feed . addItem ( {
69
- title : article . title ,
70
- id : joinURL ( siteUrl , id ) ,
71
- link : joinURL ( siteUrl , id ) ,
72
- description : article . plaintext . slice ( 0 , 120 ) ,
73
- date : new Date ( article . published_at ) ,
74
- author :
75
- article . author ?. map ( ( author ) => ( {
76
- name : author . name ,
77
- } ) ) || [ ] ,
78
- content : article . html ,
79
- } )
57
+ articles . forEach ( ( article ) => {
58
+ const id = encodePath ( urls . article . toURL ( article , urls . article . _context ) )
59
+ feed . addItem ( {
60
+ title : article . title ,
61
+ id : joinURL ( siteUrl , id ) ,
62
+ link : joinURL ( siteUrl , id ) ,
63
+ description : article . plaintext . slice ( 0 , 120 ) ,
64
+ date : new Date ( article . published_at ) ,
65
+ author :
66
+ article . authors ?. map ( ( author ) => ( {
67
+ name : author . name ,
68
+ } ) ) || [ ] ,
69
+ content : article . html ,
80
70
} )
71
+ } )
81
72
82
73
return feed . atom1 ( )
83
74
} )
0 commit comments