feat: SEO SPA Sites, Articles and Integration (4/4)
This commit is contained in:
1 parent
cb737b7ae3
commit
02fb8751fd
47 files changed
+3218
-227
No files matched your search
@@ -1,7 +1,8 @@
|
||||
import type { SuggestionCode } from '@/lib/seoTypes'
|
||||
import type { ArticleSeo } from '@/lib/articleSeo'
|
||||
import { useApi } from '@/composables/useApi'
|
||||
import type { Byline } from '@/lib/articleTypes'
|
||||
import type { ArticleStatus } from '@/lib/articleListQuery'
|
||||
import type { ArticleStatus, SEO_FILTER } from '@/lib/articleListQuery'
|
||||
|
||||
export type { Byline }
|
||||
|
||||
@@ -14,6 +15,9 @@ export interface Article extends Partial<ArticleSeo> {
|
||||
authors?: Byline[]
|
||||
created_at: string
|
||||
updated_at: string
|
||||
seo_status?: string
|
||||
seo_dismissed?: SuggestionCode[]
|
||||
seo_suggestions?: number
|
||||
}
|
||||
|
||||
export type { ArticleStatus }
|
||||
@@ -39,6 +43,13 @@ export interface ListArticlesParams {
|
||||
status?: ArticleStatus | ''
|
||||
sort?: string
|
||||
site?: string
|
||||
seo?: '' | typeof SEO_FILTER
|
||||
}
|
||||
|
||||
export interface CountNeedsAttentionParams {
|
||||
q?: string
|
||||
status?: ArticleStatus | ''
|
||||
site?: string
|
||||
}
|
||||
|
||||
export function useArticles() {
|
||||
@@ -62,8 +73,26 @@ export function useArticles() {
|
||||
if (params.site) {
|
||||
query.set('site', params.site)
|
||||
}
|
||||
if (params.seo) {
|
||||
query.set('seo', params.seo)
|
||||
}
|
||||
return request<ArticlePage>(`/v1/article/?${query.toString()}`)
|
||||
}
|
||||
|
||||
return { listArticles }
|
||||
async function countNeedsAttention(params: CountNeedsAttentionParams): Promise<number> {
|
||||
const query = new URLSearchParams({ seo: 'suggestions', page: '1', size: '5' })
|
||||
if (params.q) {
|
||||
query.set('q', params.q)
|
||||
}
|
||||
if (params.status) {
|
||||
query.set('status', params.status)
|
||||
}
|
||||
if (params.site) {
|
||||
query.set('site', params.site)
|
||||
}
|
||||
const page = await request<Pick<ArticlePage, 'total'>>(`/v1/article/?${query.toString()}`)
|
||||
return page.total
|
||||
}
|
||||
|
||||
return { listArticles, countNeedsAttention }
|
||||
}
|
||||
Reference in new issue
Block a user