@@ -40,6 +40,9 @@ public struct CategoryDetailFeature {
4040 var isFavoriteFiltered : Bool {
4141 get { domain. condition. isFavoriteFlitered }
4242 }
43+ var isFavoriteCategory : Bool {
44+ get { domain. category. isFavorite }
45+ }
4346
4447 var sortType : SortType = . ์ต์ ์
4548 var categories : IdentifiedArrayOf < BaseCategoryItem > ? {
@@ -57,7 +60,6 @@ public struct CategoryDetailFeature {
5760 var isCategorySheetPresented : Bool = false
5861 var isCategorySelectSheetPresented : Bool = false
5962 var isPokitDeleteSheetPresented : Bool = false
60- var isFilterSheetPresented : Bool = false
6163 /// pagenation
6264 var hasNext : Bool {
6365 domain. contentList. hasNext
@@ -83,11 +85,16 @@ public struct CategoryDetailFeature {
8385 case binding( BindingAction < State > )
8486 case dismiss
8587 case pagenation
88+
89+ /// ์ฆ๊ฒจ์ฐพ๊ธฐ or ์์ฝ์ ๋ฒํผ ๋๋ ์ ๋
90+ case ๋ถ๋ฅ_๋ฒํผ_๋๋ ์๋( SortCollectType )
91+ case ์ ๋ ฌ_๋ฒํผ_๋๋ ์๋
92+ case ๊ณต์ _๋ฒํผ_๋๋ ์๋
8693 case ์นดํ
๊ณ ๋ฆฌ_์ผ๋ฐฅ_๋ฒํผ_๋๋ ์๋
8794 case ์นดํ
๊ณ ๋ฆฌ_์ ํ_๋ฒํผ_๋๋ ์๋
8895 case ์นดํ
๊ณ ๋ฆฌ_์ ํํ์๋( BaseCategoryItem )
89- case ํํฐ_๋ฒํผ_๋๋ ์๋
9096 case ๋ทฐ๊ฐ_๋ํ๋ฌ์๋
97+ case ๋งํฌ_์ถ๊ฐ_๋ฒํผ_๋๋ ์๋
9198 }
9299
93100 public enum InnerAction : Equatable {
@@ -111,14 +118,14 @@ public struct CategoryDetailFeature {
111118 public enum ScopeAction {
112119 case categoryBottomSheet( PokitBottomSheet . Delegate )
113120 case categoryDeleteBottomSheet( PokitDeleteBottomSheet . Delegate )
114- case filterBottomSheet( CategoryFilterSheet . Delegate )
115121 case contents( IdentifiedActionOf < ContentCardFeature > )
116122 }
117123
118124 public enum DelegateAction : Equatable {
119125 case contentItemTapped( BaseContentItem )
120126 case linkCopyDetected( URL ? )
121127 case ๋งํฌ์์ ( contentId: Int )
128+ case ๋งํฌ์ถ๊ฐ( categoryId: Int )
122129 case ํฌํท์ญ์
123130 case ํฌํท์์ ( BaseCategoryItem )
124131 case ํฌํท๊ณต์
@@ -174,6 +181,45 @@ private extension CategoryDetailFeature {
174181 case . binding:
175182 return . none
176183
184+ case . ์ ๋ ฌ_๋ฒํผ_๋๋ ์๋:
185+ state. sortType = state. sortType == . ์ต์ ์
186+ ? . ์ค๋๋์
187+ : . ์ต์ ์
188+
189+ state. domain. pageable. sort = [
190+ state. sortType == . ์ต์ ์ ? " createdAt,desc " : " createdAt,asc "
191+ ]
192+
193+ return . concatenate(
194+ . send( . inner( . pagenation_์ด๊ธฐํ) , animation: . pokitDissolve) ,
195+ . send( . async( . ์นดํ
๊ณ ๋ฆฌ_๋ด_์ปจํ
์ธ _๋ชฉ๋ก_์กฐํ_API) )
196+ )
197+
198+ case let . ๋ถ๋ฅ_๋ฒํผ_๋๋ ์๋( type) :
199+ if type == . ์ฆ๊ฒจ์ฐพ๊ธฐ {
200+ state. domain. condition. isFavoriteFlitered. toggle ( )
201+ } else {
202+ state. domain. condition. isUnreadFlitered. toggle ( )
203+ }
204+ return . concatenate(
205+ . send( . inner( . pagenation_์ด๊ธฐํ) , animation: . pokitDissolve) ,
206+ . send( . async( . ์นดํ
๊ณ ๋ฆฌ_๋ด_์ปจํ
์ธ _๋ชฉ๋ก_์กฐํ_API) )
207+ )
208+
209+ case . ๊ณต์ _๋ฒํผ_๋๋ ์๋:
210+ kakaoShareClient. ์นดํ
๊ณ ๋ฆฌ_์นด์นด์คํก_๊ณต์ (
211+ CategoryKaKaoShareModel (
212+ categoryName: state. domain. category. categoryName,
213+ categoryId: state. domain. category. id,
214+ imageURL: state. domain. category. categoryImage. imageURL
215+ )
216+ )
217+ return . none
218+
219+ case . ๋งํฌ_์ถ๊ฐ_๋ฒํผ_๋๋ ์๋:
220+ let id = state. category. id
221+ return . send( . delegate( . ๋งํฌ์ถ๊ฐ( categoryId: id) ) )
222+
177223 case . ์นดํ
๊ณ ๋ฆฌ_์ผ๋ฐฅ_๋ฒํผ_๋๋ ์๋:
178224 return . run { send in await send ( . inner( . ์นดํ
๊ณ ๋ฆฌ_์ํธ_ํ์ฑํ( true ) ) ) }
179225
@@ -188,10 +234,6 @@ private extension CategoryDetailFeature {
188234 await send ( . inner( . ์นดํ
๊ณ ๋ฆฌ_์ ํ_์ํธ_ํ์ฑํ( false ) ) )
189235 }
190236
191- case . ํํฐ_๋ฒํผ_๋๋ ์๋:
192- state. isFilterSheetPresented. toggle ( )
193- return . none
194-
195237 case . dismiss:
196238 return . run { _ in await dismiss ( ) }
197239
@@ -347,16 +389,6 @@ private extension CategoryDetailFeature {
347389 /// - ์นดํ
๊ณ ๋ฆฌ์ ๋ํ `๊ณต์ ` / `์์ ` / `์ญ์ ` Delegate
348390 case . categoryBottomSheet( let delegateAction) :
349391 switch delegateAction {
350- case . shareCellButtonTapped:
351- kakaoShareClient. ์นดํ
๊ณ ๋ฆฌ_์นด์นด์คํก_๊ณต์ (
352- CategoryKaKaoShareModel (
353- categoryName: state. domain. category. categoryName,
354- categoryId: state. domain. category. id,
355- imageURL: state. domain. category. categoryImage. imageURL
356- )
357- )
358- state. isCategorySheetPresented = false
359- return . none
360392 case . editCellButtonTapped:
361393 return . run { [ category = state. category] send in
362394 await send ( . inner( . ์นดํ
๊ณ ๋ฆฌ_์ํธ_ํ์ฑํ( false ) ) )
@@ -384,25 +416,6 @@ private extension CategoryDetailFeature {
384416 try await categoryClient. ์นดํ
๊ณ ๋ฆฌ_์ญ์ ( categoryId)
385417 }
386418 }
387- /// - ํํฐ ๋ฒํผ์ ๋๋ ์ ๋
388- case . filterBottomSheet( let delegateAction) :
389- switch delegateAction {
390- case . dismiss:
391- state. isFilterSheetPresented. toggle ( )
392- return . none
393- case let . ํ์ธ_๋ฒํผ_๋๋ ์๋( type, bookMarkSelected, unReadSelected) :
394- state. isFilterSheetPresented. toggle ( )
395- state. domain. pageable. sort = [
396- type == . ์ต์ ์ ? " createdAt,desc " : " createdAt,asc "
397- ]
398- state. sortType = type
399- state. domain. condition. isFavoriteFlitered = bookMarkSelected
400- state. domain. condition. isUnreadFlitered = unReadSelected
401- return . concatenate(
402- . send( . inner( . pagenation_์ด๊ธฐํ) , animation: . pokitDissolve) ,
403- . send( . async( . ์นดํ
๊ณ ๋ฆฌ_๋ด_์ปจํ
์ธ _๋ชฉ๋ก_์กฐํ_API) )
404- )
405- }
406419
407420 case let . contents( . element( id: _, action: . delegate( . ์ปจํ
์ธ _ํญ๋ชฉ_์ผ๋ฐฅ_๋ฒํผ_๋๋ ์๋( content) ) ) ) :
408421 return . send( . delegate( . contentItemTapped( content) ) )
0 commit comments