1
- import { useInfiniteScroll , useRequest } from 'ahooks'
1
+ import { useInfiniteScroll , useRequest , useWhyDidYouUpdate } from 'ahooks'
2
2
import type { Ref } from '@web-archive/shared/components/scroll-area'
3
3
import { useEffect , useMemo , useRef , useState } from 'react'
4
4
import type { Page } from '@web-archive/shared/types'
5
5
import { ScrollArea } from '@web-archive/shared/components/scroll-area'
6
6
import { useOutletContext } from 'react-router-dom'
7
- import { isNotNil } from '@web-archive/shared/utils'
7
+ import { isNil , isNotNil } from '@web-archive/shared/utils'
8
8
import { useMediaQuery } from '~/hooks/useMediaQuery'
9
9
import PageDataPieCard from '~/components/page-data-pie-card'
10
10
import R2UsageCard from '~/components/r2-usage-card'
@@ -14,6 +14,7 @@ import { getR2Usage } from '~/data/data'
14
14
import Header from '~/components/header'
15
15
import LoadingWrapper from '~/components/loading-wrapper'
16
16
import CardView from '~/components/card-view'
17
+ import LoadingMore from '~/components/loading-more'
17
18
18
19
function RecentSavePageView ( ) {
19
20
const { data : r2Data , loading : r2Loading } = useRequest ( getR2Usage )
@@ -101,6 +102,8 @@ function SearchiPageView() {
101
102
reload ( )
102
103
} , [ searchTrigger ] )
103
104
105
+ useWhyDidYouUpdate ( 'SearchiPageView' , { pagesData, pagesLoading, loadingMore, keyword, selectedTag } )
106
+
104
107
const { run : handleDeletePage } = useRequest ( deletePage , {
105
108
manual : true ,
106
109
onSuccess : ( data ) => {
@@ -110,18 +113,33 @@ function SearchiPageView() {
110
113
return (
111
114
< ScrollArea ref = { scrollRef } className = "p-4 overflow-auto h-[calc(100vh-58px)]" >
112
115
< LoadingWrapper loading = { pagesLoading || ( ! pagesData ) } >
113
- < CardView pages = { pagesData ?. list } onPageDelete = { handleDeletePage } />
116
+ < div className = "h-full" >
117
+ < CardView pages = { pagesData ?. list } onPageDelete = { handleDeletePage } />
118
+ { loadingMore && < LoadingMore /> }
119
+ </ div >
114
120
</ LoadingWrapper >
115
121
</ ScrollArea >
116
122
)
117
123
}
118
124
119
125
function ArchiveHome ( ) {
120
126
const { keyword, selectedTag, setKeyword, handleSearch } = useOutletContext < { keyword : string , searchTrigger : boolean , selectedTag : number | null , setKeyword : ( keyword : string ) => void , handleSearch : ( ) => void } > ( )
121
- const showSearchView = useMemo ( ( ) => keyword || isNotNil ( selectedTag ) , [ keyword , selectedTag ] )
127
+ const [ showSearchView , setShowSearchView ] = useState ( false )
128
+ const handleStartSearch = ( ) => {
129
+ if ( isNil ( keyword ) || keyword === '' ) {
130
+ setShowSearchView ( false )
131
+ }
132
+ else {
133
+ setShowSearchView ( true )
134
+ handleSearch ( )
135
+ }
136
+ }
137
+ useEffect ( ( ) => {
138
+ setShowSearchView ( isNotNil ( selectedTag ) )
139
+ } , [ selectedTag ] )
122
140
return (
123
141
< div className = "flex flex-col flex-1" >
124
- < Header keyword = { keyword } setKeyword = { setKeyword } handleSearch = { handleSearch } > </ Header >
142
+ < Header keyword = { keyword } setKeyword = { setKeyword } handleSearch = { handleStartSearch } > </ Header >
125
143
{ showSearchView
126
144
? < SearchiPageView > </ SearchiPageView >
127
145
: < RecentSavePageView > </ RecentSavePageView > }
0 commit comments