@@ -33,10 +33,6 @@ struct PaperListView: View {
33
33
@State private var isIPadMini : Bool = false
34
34
@State private var isVertical = false
35
35
36
- // 검색 관련 변수
37
- @State private var isMenuOpen : Bool = false
38
- @State private var buttonPosition : CGRect = . zero
39
-
40
36
var body : some View {
41
37
GeometryReader { geometry in
42
38
ZStack {
@@ -80,9 +76,6 @@ struct PaperListView: View {
80
76
81
77
Spacer ( )
82
78
}
83
- } else if homeViewModel. isSearching {
84
- searchFilter ( )
85
- . frame ( height: 52 )
86
79
} else {
87
80
HStack ( spacing: 0 ) {
88
81
// 최상위 폴더가 아닐 경우에 등장
@@ -140,7 +133,6 @@ struct PaperListView: View {
140
133
ForEach ( homeViewModel. filteredLists. indices, id: \. self) { index in
141
134
let item = homeViewModel. filteredLists [ index]
142
135
switch item {
143
- // 논문 추가
144
136
case . paper( let paperInfo) :
145
137
// MARK: searchview 들어갈 위치
146
138
PaperListCell (
@@ -153,15 +145,6 @@ struct PaperListView: View {
153
145
isEditingSelected: selectedItems. contains ( item. id) ,
154
146
onSelect: {
155
147
if !isEditing && !isNavigationPushed {
156
- // 검색 중에 문서를 클릭한다면 바로 이동
157
- if homeViewModel. isSearching {
158
- // 검색 후 이동 시 최근 검색어 저장
159
- homeViewModel. addSearchTerm ( homeViewModel. searchText)
160
- homeViewModel. recentSearches = UserDefaults . standard. recentSearches
161
-
162
- selectedItemID = paperInfo. id
163
- }
164
-
165
148
if selectedItemID == paperInfo. id {
166
149
self . isNavigationPushed = true
167
150
navigateToPaper ( )
@@ -194,18 +177,6 @@ struct PaperListView: View {
194
177
isEditingSelected: selectedItems. contains ( item. id) ,
195
178
onSelect: {
196
179
if !isEditing && !isNavigationPushed {
197
- // 검색 중에 폴더를 선택한다면 해당 폴더로 navigate
198
- if homeViewModel. isSearching {
199
- // 검색 후 이동 시 최근 검색어 저장
200
- homeViewModel. addSearchTerm ( homeViewModel. searchText)
201
- homeViewModel. recentSearches = UserDefaults . standard. recentSearches
202
-
203
- homeViewModel. isSearching. toggle ( )
204
- homeViewModel. selectedMenu = . main
205
- homeViewModel. searchText = " "
206
- selectedItemID = folder. id
207
- }
208
-
209
180
if selectedItemID == folder. id {
210
181
homeViewModel. navigateTo ( folder: folder)
211
182
} else {
@@ -235,81 +206,13 @@ struct PaperListView: View {
235
206
}
236
207
. background ( . gray300)
237
208
}
238
-
239
- if isMenuOpen {
240
- VStack ( spacing: 0 ) {
241
- ForEach ( SearchFilter . allCases, id: \. self) { filter in
242
- Button ( action: {
243
- self . homeViewModel. selectedFilter = filter
244
- withAnimation {
245
- self . isMenuOpen. toggle ( )
246
- }
247
- } ) {
248
- HStack ( spacing: 0 ) {
249
- Text ( filter. title)
250
- . reazyFont ( . button1)
251
- . foregroundColor ( . gray700)
252
-
253
- Spacer ( )
254
-
255
- // 선택된 항목에만 체크 표시
256
- if homeViewModel. selectedFilter == filter {
257
- Image ( . check)
258
- . renderingMode ( . template)
259
- . resizable ( )
260
- . scaledToFit ( )
261
- . frame ( width: 20 , height: 20 )
262
- . foregroundStyle ( . primary1)
263
- }
264
- }
265
- . padding ( . horizontal, 20 )
266
- . padding ( . vertical, 12 )
267
- }
268
- }
269
- }
270
- . frame ( width: 156 )
271
- . background (
272
- RoundedRectangle ( cornerRadius: 12 )
273
- . foregroundStyle ( . gray100)
274
- . shadow ( color: Color ( hex: " 3C3D4B " ) . opacity ( 0.08 ) , radius: 16 , x: 0 , y: 0 )
275
- )
276
- . overlay (
277
- Image ( systemName: " triangle.fill " )
278
- . resizable ( )
279
- . foregroundStyle ( . gray100)
280
- . frame ( width: 46 , height: 30 )
281
- . offset ( x: - 30 , y: - 15 ) ,
282
- alignment: . top
283
- )
284
- . position (
285
- x: buttonPosition. midX + 46 , // 버튼의 중심 X축 위치
286
- y: buttonPosition. maxY - 10 // 버튼의 아래 Y축 위치
287
- )
288
- }
289
209
}
290
210
. onAppear {
291
211
initializeSelectedItemID ( )
292
212
detectIPadMini ( )
293
213
updateOrientation ( with: geometry)
294
-
295
- // 키보드 높이에 맞게 검색 Text 위치 조정
296
- NotificationCenter . default. addObserver ( forName: UIResponder . keyboardWillShowNotification, object: nil , queue: . main) { notification in
297
- if let keyboardFrame = notification. userInfo ? [ UIResponder . keyboardFrameEndUserInfoKey] as? CGRect {
298
- withAnimation {
299
- self . keyboardHeight = keyboardFrame. height
300
- }
301
- }
302
- }
303
- NotificationCenter . default. addObserver ( forName: UIResponder . keyboardWillHideNotification, object: nil , queue: . main) { _ in
304
- withAnimation {
305
- self . keyboardHeight = 0
306
- }
307
- }
308
214
}
309
215
. onDisappear {
310
- // Notification 제거
311
- NotificationCenter . default. removeObserver ( self , name: UIResponder . keyboardWillShowNotification, object: nil )
312
- NotificationCenter . default. removeObserver ( self , name: UIResponder . keyboardWillHideNotification, object: nil )
313
216
self . isNavigationPushed = false
314
217
}
315
218
. onChange ( of: selectedItemID) {
@@ -324,48 +227,12 @@ struct PaperListView: View {
324
227
self . selectAll = true
325
228
}
326
229
}
327
- . onChange ( of: homeViewModel. selectedFilter) {
328
- homeViewModel. updateSearchList ( with: homeViewModel. selectedFilter)
329
- }
330
230
. background ( . gray200)
331
231
. ignoresSafeArea ( )
332
232
}
333
233
}
334
234
}
335
235
336
- extension PaperListView {
337
- @ViewBuilder
338
- func searchFilter( ) -> some View {
339
- HStack ( spacing: 0 ) {
340
- GeometryReader { geometry in
341
- Button ( action: {
342
- withAnimation {
343
- self . isMenuOpen. toggle ( )
344
- }
345
- buttonPosition = geometry. frame ( in: . global)
346
- } ) {
347
- HStack ( spacing: 0 ) {
348
- Text ( homeViewModel. selectedFilter. title)
349
- . reazyFont ( . button1)
350
- . foregroundStyle ( . gray700)
351
- . padding ( . trailing, 10 )
352
-
353
- Image ( systemName: " chevron.down " )
354
- . font ( . system( size: 12 ) )
355
- . foregroundStyle ( . gray700)
356
- }
357
- . padding ( . leading, 22 )
358
- . padding ( . vertical, 12 )
359
- }
360
- }
361
- . frame ( width: 100 )
362
-
363
- Spacer ( )
364
- }
365
- }
366
- }
367
-
368
-
369
236
extension PaperListView {
370
237
371
238
// TODO: URL 분리 필요
0 commit comments