This commit is contained in:
@@ -61,7 +61,20 @@ const prefetchWikiPageShow: Prefetcher = async (qc, url) => {
|
||||
if (version)
|
||||
return
|
||||
|
||||
const p = { tags: effectiveTitle, match: 'all', page: 1, limit: 8 } as const
|
||||
const p = {
|
||||
tags: effectiveTitle,
|
||||
match: 'all',
|
||||
page: 1,
|
||||
limit: 8,
|
||||
url: '',
|
||||
title: '',
|
||||
originalCreatedFrom: '',
|
||||
originalCreatedTo: '',
|
||||
createdFrom: '',
|
||||
createdTo: '',
|
||||
updatedFrom: '',
|
||||
updatedTo: '',
|
||||
order: 'original_created_at:desc' } as const
|
||||
await qc.prefetchQuery ({
|
||||
queryKey: postsKeys.index (p),
|
||||
queryFn: () => fetchPosts (p) })
|
||||
@@ -70,30 +83,23 @@ const prefetchWikiPageShow: Prefetcher = async (qc, url) => {
|
||||
|
||||
const prefetchPostsIndex: Prefetcher = async (qc, url) => {
|
||||
const tags = url.searchParams.get ('tags') ?? ''
|
||||
const qURL = url.searchParams.get ('url')
|
||||
const title = url.searchParams.get ('title')
|
||||
const originalCreatedFrom = url.searchParams.get ('original_created_from')
|
||||
const originalCreatedTo = url.searchParams.get ('original_created_to')
|
||||
const createdFrom = url.searchParams.get ('created_from')
|
||||
const createdTo = url.searchParams.get ('created_to')
|
||||
const updatedFrom = url.searchParams.get ('updated_from')
|
||||
const updatedTo = url.searchParams.get ('updated_to')
|
||||
const qURL = url.searchParams.get ('url') ?? ''
|
||||
const title = url.searchParams.get ('title') ?? ''
|
||||
const originalCreatedFrom = url.searchParams.get ('original_created_from') ?? ''
|
||||
const originalCreatedTo = url.searchParams.get ('original_created_to') ?? ''
|
||||
const createdFrom = url.searchParams.get ('created_from') ?? ''
|
||||
const createdTo = url.searchParams.get ('created_to') ?? ''
|
||||
const updatedFrom = url.searchParams.get ('updated_from') ?? ''
|
||||
const updatedTo = url.searchParams.get ('updated_to') ?? ''
|
||||
const m: 'all' | 'any' = url.searchParams.get ('match') === 'any' ? 'any' : 'all'
|
||||
const page = Number (url.searchParams.get ('page') || 1)
|
||||
const limit = Number (url.searchParams.get ('limit') || 20)
|
||||
const order = url.searchParams.get ('order') as FetchPostsOrder | null
|
||||
const order = (url.searchParams.get ('order') ?? 'original_created_at:desc') as FetchPostsOrder
|
||||
|
||||
const keys = {
|
||||
tags, match: m, page, limit,
|
||||
...(qURL && { url: qURL }),
|
||||
...(title && { title }),
|
||||
...(originalCreatedFrom && { originalCreatedFrom }),
|
||||
...(originalCreatedTo && { originalCreatedTo }),
|
||||
...(createdFrom && { createdFrom }),
|
||||
...(createdTo && { createdTo }),
|
||||
...(updatedFrom && { updatedFrom }),
|
||||
...(updatedTo && { updatedTo }),
|
||||
...(order && { order }) }
|
||||
tags, match: m, page, limit, url: qURL, title,
|
||||
originalCreatedFrom, originalCreatedTo, createdFrom, createdTo,
|
||||
updatedFrom, updatedTo, order }
|
||||
|
||||
await qc.prefetchQuery ({
|
||||
queryKey: postsKeys.index (keys),
|
||||
|
||||
@@ -35,9 +35,14 @@ export default (() => {
|
||||
const page = Number (query.get ('page') ?? 1)
|
||||
const limit = Number (query.get ('limit') ?? 20)
|
||||
|
||||
const keys = {
|
||||
tags: tagsKey, match, page, limit,
|
||||
url: '', title: '', originalCreatedFrom: '', originalCreatedTo: '',
|
||||
createdFrom: '', createdTo: '', updatedFrom: '', updatedTo: '',
|
||||
order: 'original_created_at:desc' } as const
|
||||
const { data, isLoading: loading } = useQuery ({
|
||||
queryKey: postsKeys.index ({ tags: tagsKey, match, page, limit }),
|
||||
queryFn: () => fetchPosts ({ tags: tagsKey, match, page, limit }) })
|
||||
queryKey: postsKeys.index (keys),
|
||||
queryFn: () => fetchPosts (keys) })
|
||||
const posts = data?.posts ?? []
|
||||
const cursor = ''
|
||||
const totalPages = data ? Math.ceil (data.count / limit) : 0
|
||||
|
||||
@@ -44,43 +44,43 @@ export default (() => {
|
||||
const page = Number (query.get ('page') ?? 1)
|
||||
const limit = Number (query.get ('limit') ?? 20)
|
||||
|
||||
const qURL = query.get ('url')
|
||||
const qTitle = query.get ('title')
|
||||
const qURL = query.get ('url') ?? ''
|
||||
const qTitle = query.get ('title') ?? ''
|
||||
const qTags = query.get ('tags') ?? ''
|
||||
const qMatch: 'all' | 'any' = query.get ('match') === 'any' ? 'any' : 'all'
|
||||
const qOriginalCreatedFrom = query.get ('original_created_from')
|
||||
const qOriginalCreatedTo = query.get ('original_created_to')
|
||||
const qCreatedFrom = query.get ('created_from')
|
||||
const qCreatedTo = query.get ('created_to')
|
||||
const qUpdatedFrom = query.get ('updated_from')
|
||||
const qUpdatedTo = query.get ('updated_to')
|
||||
const qOriginalCreatedFrom = query.get ('original_created_from') ?? ''
|
||||
const qOriginalCreatedTo = query.get ('original_created_to') ?? ''
|
||||
const qCreatedFrom = query.get ('created_from') ?? ''
|
||||
const qCreatedTo = query.get ('created_to') ?? ''
|
||||
const qUpdatedFrom = query.get ('updated_from') ?? ''
|
||||
const qUpdatedTo = query.get ('updated_to') ?? ''
|
||||
const order = (query.get ('order') || 'original_created_at:desc') as FetchPostsOrder
|
||||
|
||||
const [activeIndex, setActiveIndex] = useState (-1)
|
||||
const [createdFrom, setCreatedFrom] = useState (qCreatedFrom)
|
||||
const [createdTo, setCreatedTo] = useState (qCreatedTo)
|
||||
const [matchType, setMatchType] = useState (qMatch ?? 'all')
|
||||
const [originalCreatedFrom, setOriginalCreatedFrom] = useState (qOriginalCreatedFrom)
|
||||
const [originalCreatedTo, setOriginalCreatedTo] = useState (qOriginalCreatedTo)
|
||||
const [createdFrom, setCreatedFrom] = useState<string | null> (null)
|
||||
const [createdTo, setCreatedTo] = useState<string | null> (null)
|
||||
const [matchType, setMatchType] = useState<'all' | 'any'> ('all')
|
||||
const [originalCreatedFrom, setOriginalCreatedFrom] = useState<string | null> (null)
|
||||
const [originalCreatedTo, setOriginalCreatedTo] = useState<string | null> (null)
|
||||
const [suggestions, setSuggestions] = useState<Tag[]> ([])
|
||||
const [suggestionsVsbl, setSuggestionsVsbl] = useState (false)
|
||||
const [tagsStr, setTagsStr] = useState (qTags)
|
||||
const [title, setTitle] = useState (qTitle ?? '')
|
||||
const [updatedFrom, setUpdatedFrom] = useState (qUpdatedFrom)
|
||||
const [updatedTo, setUpdatedTo] = useState (qUpdatedTo)
|
||||
const [url, setURL] = useState (qURL ?? '')
|
||||
const [tagsStr, setTagsStr] = useState ('')
|
||||
const [title, setTitle] = useState ('')
|
||||
const [updatedFrom, setUpdatedFrom] = useState<string | null> (null)
|
||||
const [updatedTo, setUpdatedTo] = useState<string | null> (null)
|
||||
const [url, setURL] = useState ('')
|
||||
|
||||
const keys: FetchPostsParams = {
|
||||
tags: qTags, match: qMatch, page, limit,
|
||||
...(qURL && { url: qURL }),
|
||||
...(qTitle && { title: qTitle }),
|
||||
...(qOriginalCreatedFrom && { originalCreatedFrom: qOriginalCreatedFrom }),
|
||||
...(qOriginalCreatedTo && { originalCreatedTo: qOriginalCreatedTo }),
|
||||
...(qCreatedFrom && { createdFrom: qCreatedFrom }),
|
||||
...(qCreatedTo && { createdTo: qCreatedTo }),
|
||||
...(qUpdatedFrom && { updatedFrom: qUpdatedFrom }),
|
||||
...(qUpdatedTo && { updatedTo: qUpdatedTo }),
|
||||
...(order && { order }) }
|
||||
url: qURL,
|
||||
title: qTitle,
|
||||
originalCreatedFrom: qOriginalCreatedFrom,
|
||||
originalCreatedTo: qOriginalCreatedTo,
|
||||
createdFrom: qCreatedFrom,
|
||||
createdTo: qCreatedTo,
|
||||
updatedFrom: qUpdatedFrom,
|
||||
updatedTo: qUpdatedTo,
|
||||
order }
|
||||
const { data, isLoading: loading } = useQuery ({
|
||||
queryKey: postsKeys.index (keys),
|
||||
queryFn: () => fetchPosts (keys) })
|
||||
|
||||
@@ -44,10 +44,15 @@ export default () => {
|
||||
queryKey: tagsKeys.show (effectiveTitle),
|
||||
queryFn: () => fetchTagByName (effectiveTitle) })
|
||||
|
||||
const keys = {
|
||||
tags: effectiveTitle, match: 'all', page: 1, limit: 8, url: '', title: '',
|
||||
originalCreatedFrom: '', originalCreatedTo: '',
|
||||
createdFrom: '', createdTo: '', updatedFrom: '', updatedTo: '',
|
||||
order: 'original_created_at:desc' } as const
|
||||
const { data } = useQuery ({
|
||||
enabled: Boolean (effectiveTitle) && !(version),
|
||||
queryKey: postsKeys.index ({ tags: effectiveTitle, match: 'all', page: 1, limit: 8 }),
|
||||
queryFn: () => fetchPosts ({ tags: effectiveTitle, match: 'all', page: 1, limit: 8 }) })
|
||||
queryKey: postsKeys.index (keys),
|
||||
queryFn: () => fetchPosts (keys) })
|
||||
const posts = data?.posts || []
|
||||
|
||||
useEffect (() => {
|
||||
|
||||
+13
-13
@@ -12,19 +12,19 @@ export type FetchPostsOrder = `${ FetchPostsOrderField }:${ 'asc' | 'desc' }`
|
||||
export type FetchPostsOrderField = typeof FETCH_POSTS_ORDER_FIELDS[number]
|
||||
|
||||
export type FetchPostsParams = {
|
||||
url?: string
|
||||
title?: string
|
||||
tags?: string
|
||||
match?: 'all' | 'any'
|
||||
createdFrom?: string
|
||||
createdTo?: string
|
||||
updatedFrom?: string
|
||||
updatedTo?: string
|
||||
originalCreatedFrom?: string
|
||||
originalCreatedTo?: string
|
||||
page?: number
|
||||
limit?: number
|
||||
order?: FetchPostsOrder }
|
||||
url: string
|
||||
title: string
|
||||
tags: string
|
||||
match: 'all' | 'any'
|
||||
originalCreatedFrom: string
|
||||
originalCreatedTo: string
|
||||
createdFrom: string
|
||||
createdTo: string
|
||||
updatedFrom: string
|
||||
updatedTo: string
|
||||
page: number
|
||||
limit: number
|
||||
order: FetchPostsOrder }
|
||||
|
||||
export type Menu = MenuItem[]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user