@@ -7,21 +7,17 @@ import {
7
7
} from '@blueprintjs/core'
8
8
9
9
import { UseOperationsParams } from 'apis/operation'
10
- import { useAtom , useAtomValue } from 'jotai'
10
+ import { useAtom } from 'jotai'
11
11
import { debounce } from 'lodash-es'
12
12
import { ComponentType , useMemo , useState } from 'react'
13
13
14
14
import { CardTitle } from 'components/CardTitle'
15
15
import { OperationList } from 'components/OperationList'
16
16
import { OperationSetList } from 'components/OperationSetList'
17
17
import { neoLayoutAtom } from 'store/pref'
18
- import {
19
- selectedOperatorQueryAtom ,
20
- selectedOperatorsAtom ,
21
- } from 'store/selectedOperators'
22
18
23
19
import { authAtom } from '../store/auth'
24
- import { OperatorSelect } from './OperatorSelect '
20
+ import { OperatorFilter } from './OperatorFilter '
25
21
import { withSuspensable } from './Suspensable'
26
22
27
23
export const Operations : ComponentType = withSuspensable ( ( ) => {
@@ -31,14 +27,13 @@ export const Operations: ComponentType = withSuspensable(() => {
31
27
limit : 10 ,
32
28
orderBy : 'hot' ,
33
29
} )
34
- const [ selectedOperators , setSelectedOperators ] = useAtom (
35
- selectedOperatorsAtom ,
36
- )
37
- const selectedOperatorQuery = useAtomValue ( selectedOperatorQueryAtom )
38
30
const debouncedSetQueryParams = useMemo (
39
31
( ) => debounce ( setQueryParams , 500 ) ,
40
32
[ ] ,
41
33
)
34
+
35
+ const [ selectedOperators , setSelectedOperators ] = useState < string [ ] > ( [ ] )
36
+
42
37
const [ authState ] = useAtom ( authAtom )
43
38
const [ neoLayout , setNeoLayout ] = useAtom ( neoLayoutAtom )
44
39
const [ listMode , setListMode ] = useState < 'operation' | 'operationSet' > (
@@ -104,14 +99,7 @@ export const Operations: ComponentType = withSuspensable(() => {
104
99
{ listMode === 'operation' && (
105
100
< div className = "flex flex-wrap items-end" >
106
101
< div className = "flex mr-4" >
107
- < FormGroup
108
- helperText = {
109
- selectedOperators . length
110
- ? '点击干员标签以标记为排除该干员'
111
- : undefined
112
- }
113
- className = "max-w-md"
114
- >
102
+ < div className = "max-w-md" >
115
103
< InputGroup
116
104
className = "[&>input]:!rounded-md"
117
105
placeholder = "标题、描述、神秘代码"
@@ -145,12 +133,12 @@ export const Operations: ComponentType = withSuspensable(() => {
145
133
}
146
134
onBlur = { ( ) => debouncedSetQueryParams . flush ( ) }
147
135
/>
148
- < OperatorSelect
136
+ < OperatorFilter
149
137
className = "mt-2"
150
- operators = { selectedOperatorQuery . split ( ',' ) }
138
+ operators = { selectedOperators }
151
139
onChange = { setSelectedOperators }
152
140
/>
153
- </ FormGroup >
141
+ </ div >
154
142
</ div >
155
143
< div className = "flex flex-col" >
156
144
{ filterNode }
@@ -221,7 +209,7 @@ export const Operations: ComponentType = withSuspensable(() => {
221
209
{ listMode === 'operation' && (
222
210
< OperationList
223
211
{ ...queryParams }
224
- operator = { selectedOperatorQuery }
212
+ operator = { selectedOperators . join ( ',' ) }
225
213
// 按热度排序时列表前几页的变化不会太频繁,可以不刷新第一页,节省点流量
226
214
revalidateFirstPage = { queryParams . orderBy !== 'hot' }
227
215
/>
0 commit comments