Skip to content

Commit 502675a

Browse files
committed
[feat] #180 리마인드 -> 추천으로 플로우 교체
1 parent 9c02398 commit 502675a

File tree

6 files changed

+64
-34
lines changed

6 files changed

+64
-34
lines changed

Projects/App/Sources/MainTab/MainTab.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ import DSKit
1111

1212
public enum MainTab: String, CaseIterable {
1313
case pokit = "포킷"
14-
case remind = "리마인드"
14+
case recommend = "링크추천"
1515

1616
var title: String { return self.rawValue }
1717

1818
var icon: PokitImage {
1919
switch self {
2020
case .pokit: return .icon(.folderFill)
21-
case .remind: return .icon(.remind)
21+
case .recommend: return .icon(.remind)
2222
}
2323
}
2424
}

Projects/App/Sources/MainTab/MainTabFeature.swift

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import SwiftUI
88

99
import ComposableArchitecture
1010
import FeaturePokit
11-
import FeatureRemind
11+
import FeatureRecommend
1212
import FeatureContentDetail
1313
import Domain
1414
import DSKit
@@ -37,7 +37,7 @@ public struct MainTabFeature {
3737

3838
var path: StackState<MainTabPath.State> = .init()
3939
var pokit: PokitRootFeature.State
40-
var remind: RemindFeature.State = .init()
40+
var recommend: RecommendFeature.State = .init()
4141
@Presents var contentDetail: ContentDetailFeature.State?
4242
@Shared(.inMemory("SelectCategory")) var categoryId: Int?
4343
@Shared(.inMemory("PushTapped")) var isPushTapped: Bool = false
@@ -59,7 +59,7 @@ public struct MainTabFeature {
5959
/// Todo: scope로 이동
6060
case path(StackAction<MainTabPath.State, MainTabPath.Action>)
6161
case pokit(PokitRootFeature.Action)
62-
case remind(RemindFeature.Action)
62+
case recommend(RecommendFeature.Action)
6363
case contentDetail(PresentationAction<ContentDetailFeature.Action>)
6464

6565
@CasePathable
@@ -70,6 +70,8 @@ public struct MainTabFeature {
7070
case onAppear
7171
case onOpenURL(url: URL)
7272
case 경고_확인버튼_클릭
73+
case 검색_버튼_눌렀을때
74+
case 알림_버튼_눌렀을때
7375
}
7476
public enum InnerAction: Equatable {
7577
case 링크추가및수정이동(contentId: Int)
@@ -129,7 +131,7 @@ public struct MainTabFeature {
129131
return .none
130132
case .pokit:
131133
return .none
132-
case .remind:
134+
case .recommend:
133135
return .none
134136
case .contentDetail:
135137
return .none
@@ -138,7 +140,14 @@ public struct MainTabFeature {
138140
/// - Reducer body
139141
public var body: some ReducerOf<Self> {
140142
Scope(state: \.pokit, action: \.pokit) { PokitRootFeature() }
141-
Scope(state: \.remind, action: \.remind) { RemindFeature() }
143+
Scope(state: \.recommend, action: \.recommend) {
144+
withDependencies {
145+
$0[UserClient.self] = .testValue
146+
$0[ContentClient.self] = .testValue
147+
} operation: {
148+
RecommendFeature()
149+
}
150+
}
142151

143152
BindingReducer()
144153
navigationReducer
@@ -198,6 +207,28 @@ private extension MainTabFeature {
198207
case .경고_확인버튼_클릭:
199208
state.error = nil
200209
return .run { send in await send(.inner(.errorSheetPresented(false))) }
210+
case .검색_버튼_눌렀을때:
211+
switch state.selectedTab {
212+
case .pokit: return .none
213+
case .recommend:
214+
return RecommendFeature()
215+
.reduce(
216+
into: &state.recommend,
217+
action: .view(.검색_버튼_눌렀을때)
218+
)
219+
.map(Action.recommend)
220+
}
221+
case .알림_버튼_눌렀을때:
222+
switch state.selectedTab {
223+
case .pokit: return .none
224+
case .recommend:
225+
return RecommendFeature()
226+
.reduce(
227+
into: &state.recommend,
228+
action: .view(.알림_버튼_눌렀을때)
229+
)
230+
.map(Action.recommend)
231+
}
201232
}
202233
}
203234
/// - Inner Effect

Projects/App/Sources/MainTab/MainTabFeatureView.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import SwiftUI
99
import ComposableArchitecture
1010
import DSKit
1111
import FeaturePokit
12-
import FeatureRemind
12+
import FeatureRecommend
1313
import FeatureSetting
1414
import FeatureCategorySetting
1515
import FeatureContentDetail
@@ -135,8 +135,8 @@ private extension MainTabView {
135135
.pokitNavigationBar { pokitNavigationBar }
136136
.toolbarBackground(.hidden, for: .tabBar)
137137

138-
case .remind:
139-
RemindView(store: store.scope(state: \.remind, action: \.remind))
138+
case .recommend:
139+
RecommendView(store: store.scope(state: \.recommend, action: \.recommend))
140140
.pokitNavigationBar { remindNavigationBar }
141141
.toolbarBackground(.hidden, for: .tabBar)
142142
}
@@ -181,11 +181,11 @@ private extension MainTabView {
181181
PokitHeaderItems(placement: .trailing) {
182182
PokitToolbarButton(
183183
.icon(.search),
184-
action: { store.send(.remind(.view(.검색_버튼_눌렀을때))) }
184+
action: { send(.검색_버튼_눌렀을때) }
185185
)
186186
PokitToolbarButton(
187187
.icon(.bell),
188-
action: { store.send(.remind(.view(.알림_버튼_눌렀을때))) }
188+
action: { send(.알림_버튼_눌렀을때) }
189189
)
190190
}
191191
}
@@ -198,7 +198,7 @@ private extension MainTabView {
198198

199199
Spacer()
200200

201-
bottomTabBarItem(.remind)
201+
bottomTabBarItem(.recommend)
202202
}
203203
.padding(.horizontal, 48)
204204
.padding(.top, 12)

Projects/App/Sources/MainTab/MainTabPath.swift

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,15 @@ public extension MainTabFeature {
6161
switch action {
6262
/// - 네비게이션 바 `알림`버튼 눌렀을 때
6363
case .pokit(.delegate(.alertButtonTapped)),
64-
.remind(.delegate(.alertButtonTapped)),
64+
.recommend(.delegate(.알림_버튼_눌렀을때)),
6565
.delegate(.알림함이동):
6666
state.isPushTapped = false
6767
state.path.append(.알림함(PokitAlertBoxFeature.State()))
6868
return .none
6969

7070
/// - 네비게이션 바 `검색`버튼 눌렀을 때
7171
case .pokit(.delegate(.searchButtonTapped)),
72-
.remind(.delegate(.searchButtonTapped)):
72+
.recommend(.delegate(.검색_버튼_눌렀을때)):
7373
state.path.append(.검색(PokitSearchFeature.State()))
7474
return .none
7575

@@ -120,7 +120,6 @@ public extension MainTabFeature {
120120
/// - 링크 상세
121121
case let .path(.element(_, action: .카테고리상세(.delegate(.contentItemTapped(content))))),
122122
let .pokit(.delegate(.contentDetailTapped(content))),
123-
let .remind(.delegate(.링크상세(content))),
124123
let .path(.element(_, action: .링크목록(.delegate(.링크상세(content: content))))),
125124
let .path(.element(_, action: .검색(.delegate(.linkCardTapped(content: content))))):
126125

@@ -130,7 +129,7 @@ public extension MainTabFeature {
130129
/// - 링크상세 바텀시트에서 링크수정으로 이동
131130
case let .contentDetail(.presented(.delegate(.editButtonTapped(id)))),
132131
let .pokit(.delegate(.링크수정하기(id))),
133-
let .remind(.delegate(.링크수정(id))),
132+
let .recommend(.delegate(.추가하기_버튼_눌렀을때(id))),
134133
let .path(.element(_, action: .카테고리상세(.delegate(.링크수정(id))))),
135134
let .path(.element(_, action: .링크목록(.delegate(.링크수정(id))))),
136135
let .path(.element(_, action: .검색(.delegate(.링크수정(id))))),
@@ -148,8 +147,8 @@ public extension MainTabFeature {
148147
switch state.selectedTab {
149148
case .pokit:
150149
return .send(.pokit(.delegate(.미분류_카테고리_컨텐츠_조회)))
151-
case .remind:
152-
return .send(.remind(.delegate(.컨텐츠_상세보기_delegate_위임)))
150+
case .recommend:
151+
return .none
153152
}
154153
}
155154
switch lastPath {
@@ -200,14 +199,6 @@ public extension MainTabFeature {
200199
case let .pokit(.delegate(.linkPopup(text))):
201200
state.linkPopup = .text(title: text)
202201
return .none
203-
/// 링크목록 `안읽음`
204-
case .remind(.delegate(.링크목록_안읽음)):
205-
state.path.append(.링크목록(ContentListFeature.State(contentType: .unread)))
206-
return .none
207-
/// 링크목록 `즐겨찾기`
208-
case .remind(.delegate(.링크목록_즐겨찾기)):
209-
state.path.append(.링크목록(ContentListFeature.State(contentType: .favorite)))
210-
return .none
211202

212203
case .path(.element(_, action: .설정(.delegate(.로그아웃)))):
213204
return .send(.delegate(.로그아웃))

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ public struct RecommendFeature {
6969
case 전체보기_버튼_눌렀을때(ScrollViewProxy)
7070
case 관심사_버튼_눌렀을때(BaseInterest, ScrollViewProxy)
7171
case 링크_공유_완료되었을때
72+
case 검색_버튼_눌렀을때
73+
case 알림_버튼_눌렀을때
7274
}
7375

7476
public enum InnerAction: Equatable {
@@ -86,7 +88,9 @@ public struct RecommendFeature {
8688
public enum ScopeAction: Equatable { case doNothing }
8789

8890
public enum DelegateAction: Equatable {
89-
case 추가하기_버튼_눌렀을때(BaseContentItem)
91+
case 추가하기_버튼_눌렀을때(Int)
92+
case 검색_버튼_눌렀을때
93+
case 알림_버튼_눌렀을때
9094
}
9195
}
9296

@@ -139,7 +143,7 @@ private extension RecommendFeature {
139143
case .pagination:
140144
return shared(.async(.추천_조회_페이징_API), state: &state)
141145
case let .추가하기_버튼_눌렀을때(content):
142-
return .send(.delegate(.추가하기_버튼_눌렀을때(content)))
146+
return .send(.delegate(.추가하기_버튼_눌렀을때(content.id)))
143147
case let .공유하기_버튼_눌렀을때(content):
144148
state.shareContent = content
145149
return .none
@@ -160,6 +164,10 @@ private extension RecommendFeature {
160164
case .링크_공유_완료되었을때:
161165
state.shareContent = nil
162166
return .none
167+
case .검색_버튼_눌렀을때:
168+
return .send(.delegate(.검색_버튼_눌렀을때))
169+
case .알림_버튼_눌렀을때:
170+
return .send(.delegate(.알림_버튼_눌렀을때))
163171
}
164172
}
165173

@@ -198,8 +206,8 @@ private extension RecommendFeature {
198206
keyword = state.selectedInterest?.description
199207
] send in
200208
let contentList = try await contentClient.추천_컨텐츠_조회(
201-
pageable: pageableRequest,
202-
keyword: keyword
209+
pageableRequest,
210+
keyword
203211
).toDomain()
204212

205213
await send(.inner(.추천_조회_페이징_API_반영(contentList)))
@@ -254,8 +262,8 @@ private extension RecommendFeature {
254262
sort: pageable.sort
255263
)
256264
let contentList = try await contentClient.추천_컨텐츠_조회(
257-
pageable: pageableRequest,
258-
keyword: keyword
265+
pageableRequest,
266+
keyword
259267
).toDomain()
260268
continuation.yield(contentList)
261269
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ private extension RecommendView {
168168
}
169169
}
170170
.padding(.horizontal, 20)
171-
.padding(.bottom, 36)
171+
.padding(.bottom, 150)
172172
}
173173
}
174174

0 commit comments

Comments
 (0)