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