feat: sites and authors integration into existing screens (& formated all frontend files kinda accidentally)
This commit is contained in:
1 parent
3d81d2c717
commit
6b8990c55e
239 files changed
+9194
-1354
No files matched your search
@@ -9,6 +9,7 @@ export const DEFAULT_ARTICLE_SORT = 'updated_at:desc'
|
||||
export const ARTICLE_SORT_FIELDS = ['title', 'status', 'created_at', 'updated_at'] as const
|
||||
export type ArticleSortField = (typeof ARTICLE_SORT_FIELDS)[number]
|
||||
|
||||
const SITE_KEY_MAX = 32
|
||||
const POSITIVE_INTEGER = /^[1-9]\d*$/
|
||||
|
||||
export interface ArticleListQuery {
|
||||
@@ -17,6 +18,7 @@ export interface ArticleListQuery {
|
||||
q: string
|
||||
status: ArticleStatus | ''
|
||||
sort: string
|
||||
site: string
|
||||
}
|
||||
|
||||
function first(value: LocationQuery[string] | undefined) {
|
||||
@@ -49,6 +51,7 @@ export function parseArticleQuery(query: LocationQuery): ArticleListQuery {
|
||||
q: first(query.q).slice(0, ARTICLE_SEARCH_MAX_LENGTH),
|
||||
status: status === 'online' || status === 'draft' ? status : '',
|
||||
sort: validSort(first(query.sort)),
|
||||
site: first(query.site).slice(0, SITE_KEY_MAX),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,6 +72,9 @@ export function toRouteQuery(query: ArticleListQuery) {
|
||||
if (effectiveSort(query.sort) !== DEFAULT_ARTICLE_SORT) {
|
||||
route.sort = query.sort
|
||||
}
|
||||
if (query.site) {
|
||||
route.site = query.site
|
||||
}
|
||||
return route
|
||||
}
|
||||
|
||||
@@ -78,6 +84,7 @@ export function sameArticleQuery(left: ArticleListQuery, right: ArticleListQuery
|
||||
left.size === right.size &&
|
||||
left.q === right.q &&
|
||||
left.status === right.status &&
|
||||
left.site === right.site &&
|
||||
effectiveSort(left.sort) === effectiveSort(right.sort)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user