Skip to content

Commit 8c932ea

Browse files
committed
[fix] #196 링크 추천 키워드 선택 플로우 수정
1 parent 120e41b commit 8c932ea

File tree

4 files changed

+36
-16
lines changed

4 files changed

+36
-16
lines changed

Projects/DSKit/Sources/Components/PokitCaution.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public enum CautionType {
6565
case .알림없음:
6666
return "리마인드 알림을 설정하세요"
6767
case .추천_링크없음:
68-
return ""
68+
return "다른 사용자들이 링크를 저장하면\n추천해드릴게요"
6969
}
7070
}
7171

Projects/Feature/FeatureRecommend/Sources/Recommend/RecommendFeature.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public struct RecommendFeature {
8383
case 전체보기_버튼_눌렀을때(ScrollViewProxy)
8484
case 관심사_버튼_눌렀을때(BaseInterest, ScrollViewProxy)
8585
case 관심사_편집_버튼_눌렀을때
86-
case 키워드_선택_버튼_눌렀을때
86+
case 키워드_선택_버튼_눌렀을때(Set<BaseInterest>)
8787
case 링크_공유_완료되었을때
8888
case 검색_버튼_눌렀을때
8989
case 알림_버튼_눌렀을때
@@ -215,9 +215,10 @@ private extension RecommendFeature {
215215
return .run { _ in await openURL(url) }
216216
case .관심사_편집_버튼_눌렀을때:
217217
return shared(.async(.관심사_조회_API), state: &state)
218-
case .키워드_선택_버튼_눌렀을때:
218+
case let .키워드_선택_버튼_눌렀을때(interests):
219219
state.showKeywordSheet = false
220220
state.selectedInterest = nil
221+
state.selectedInterestList = interests
221222
return .run { [ interests = state.selectedInterestList ] send in
222223
let request = InterestRequest(interests: interests.map(\.description))
223224
try await userClient.관심사_수정(model: request)

Projects/Feature/FeatureRecommend/Sources/Recommend/RecommendKeywordBottomSheet.swift

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,31 @@ import DSKit
1212
import Util
1313

1414
struct RecommendKeywordBottomSheet: View {
15-
@Binding
15+
@State
1616
private var selectedInterests: Set<BaseInterest>
1717
@State
1818
private var height: CGFloat = 0
1919

2020
private let interests: [BaseInterest]
21-
private let action: () -> Void
21+
private let onSave: ((Set<BaseInterest>) -> Void)?
2222

23-
init(
24-
selectedInterests: Binding<Set<BaseInterest>>,
23+
private init(
24+
selectedInterests: Set<BaseInterest>,
2525
interests: [BaseInterest],
26-
action: @escaping () -> Void
26+
onSave: ((Set<BaseInterest>) -> Void)?
2727
) {
28-
self._selectedInterests = selectedInterests
28+
self._selectedInterests = State(wrappedValue: selectedInterests)
2929
self.interests = interests
30-
self.action = action
30+
self.onSave = onSave
31+
}
32+
33+
init(
34+
selectedInterests: Set<BaseInterest>,
35+
interests: [BaseInterest]
36+
) {
37+
self._selectedInterests = State(wrappedValue: selectedInterests)
38+
self.interests = interests
39+
self.onSave = nil
3140
}
3241

3342

@@ -44,7 +53,7 @@ struct RecommendKeywordBottomSheet: View {
4453
PokitBottomButton(
4554
"키워드 선택",
4655
state: selectedInterests.count == 0 ? .disable : .filled(.primary),
47-
action: action
56+
action: { onSave?(selectedInterests) }
4857
)
4958
.pokitMaxWidth()
5059
}
@@ -62,6 +71,14 @@ struct RecommendKeywordBottomSheet: View {
6271
.presentationDetents([.height(height)])
6372
.ignoresSafeArea(edges: [.bottom, .top])
6473
}
74+
75+
func onSave(_ perform: @escaping (Set<BaseInterest>) -> Void) -> Self {
76+
RecommendKeywordBottomSheet(
77+
selectedInterests: self.selectedInterests,
78+
interests: self.interests,
79+
onSave: perform
80+
)
81+
}
6582
}
6683

6784
//MARK: - Configure View
@@ -114,7 +131,7 @@ extension RecommendKeywordBottomSheet {
114131
var selectedInterests = Set<BaseInterest>()
115132

116133
RecommendKeywordBottomSheet(
117-
selectedInterests: $selectedInterests,
134+
selectedInterests: selectedInterests,
118135
interests: []
119-
) { }
136+
)
120137
}

Projects/Feature/FeatureRecommend/Sources/Recommend/RecommendView.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ public extension RecommendView {
4646
.task { await send(.onAppear).finish() }
4747
.sheet(isPresented: $store.showKeywordSheet) {
4848
RecommendKeywordBottomSheet(
49-
selectedInterests: $store.selectedInterestList,
50-
interests: store.interests,
51-
action: { send(.키워드_선택_버튼_눌렀을때) }
49+
selectedInterests: store.selectedInterestList,
50+
interests: store.interests
5251
)
52+
.onSave { interests in
53+
send(.키워드_선택_버튼_눌렀을때(interests))
54+
}
5355
}
5456
.sheet(item: $store.reportContent) { content in
5557
PokitAlert(

0 commit comments

Comments
 (0)