Skip to content

Commit 842e512

Browse files
committed
[feat] #177 포킷 이동 성공시 팝업 기능 추가
1 parent d3acb0c commit 842e512

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

Projects/App/Sources/MainTab/MainTabPath.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,10 @@ public extension MainTabFeature {
196196
let .path(.element(_, action: .포킷추가및수정(.delegate(.linkCopyDetected(url))))),
197197
let .path(.element(_, action: .링크목록(.delegate(.linkCopyDetected(url))))):
198198
return .run { send in await send(.inner(.linkCopySuccess(url)), animation: .pokitSpring) }
199+
/// 바텀메세지
200+
case let .pokit(.delegate(.linkPopup(text))):
201+
state.linkPopup = .text(title: text)
202+
return .none
199203
/// 링크목록 `안읽음`
200204
case .remind(.delegate(.링크목록_안읽음)):
201205
state.path.append(.링크목록(ContentListFeature.State(contentType: .unread)))

Projects/Feature/FeaturePokit/Sources/PokitLinkEditFeature.swift

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public struct PokitLinkEditFeature {
8585
}
8686

8787
public enum DelegateAction: Equatable {
88-
case 링크_편집_종료(items: [BaseContentItem])
88+
case 링크_편집_종료(items: [BaseContentItem], type: LinkEditType)
8989
}
9090
}
9191

@@ -135,8 +135,7 @@ private extension PokitLinkEditFeature {
135135
return .none
136136

137137
case .dismiss:
138-
return .send(.delegate(.링크_편집_종료(items: state.list.elements)))
139-
// return .run { _ in await dismiss() }
138+
return .send(.delegate(.링크_편집_종료(items: state.list.elements, type: .dismiss)))
140139

141140
case .뷰가_나타났을때:
142141
return fetchCateogryList()
@@ -170,7 +169,7 @@ private extension PokitLinkEditFeature {
170169
.send(.inner(.경고팝업_활성화(.error(title: "링크를 선택해주세요."))))
171170
)
172171
} else {
173-
return moveContentList(categoryId: pokit.id, state: &state)
172+
return moveContentList(category: pokit, state: &state)
174173
}
175174

176175
case .링크팝업_버튼_눌렀을때:
@@ -212,7 +211,7 @@ private extension PokitLinkEditFeature {
212211

213212
case let .미분류_API_반영(type):
214213
/// 1. 시트 내리기
215-
if type == .링크이동 {
214+
if case .링크이동 = type {
216215
state.categorySelectSheetPresetend = false
217216
} else {
218217
state.linkDeleteSheetPresented = false
@@ -222,10 +221,16 @@ private extension PokitLinkEditFeature {
222221
.map { $0.id }
223222
.forEach { state.list.remove(id: $0) }
224223
state.selectedItems.removeAll()
225-
224+
/// 3. 분류가 남은 링크가 없을 때 편집하기 종료
226225
if state.list.isEmpty {
227-
return .send(.delegate(.링크_편집_종료(items: [])))
226+
return .send(.delegate(.링크_편집_종료(items: [], type: type)))
227+
}
228+
/// 4. 링크이동을 했을 때 바텀 메세지 출력
229+
if case let .링크이동(categoryName) = type {
230+
state.linkPopup = .text(title: "\(categoryName)\n카테고리로 이동되었습니다.")
231+
return .none
228232
}
233+
229234
return .none
230235
}
231236
}
@@ -286,12 +291,12 @@ private extension PokitLinkEditFeature {
286291
}
287292

288293
/// 미분류 링크 카테고리 이동 API
289-
func moveContentList(categoryId: Int, state: inout State) -> Effect<Action> {
294+
func moveContentList(category: BaseCategoryItem, state: inout State) -> Effect<Action> {
290295
return .run { [contentIds = state.selectedItems] send in
291296
let contentIds = contentIds.map { $0.id }
292-
let request = ContentMoveRequest(contentIds: contentIds, categoryId: categoryId)
297+
let request = ContentMoveRequest(contentIds: contentIds, categoryId: category.id)
293298
try await contentClient.미분류_링크_포킷_이동(request)
294-
await send(.inner(.미분류_API_반영(.링크이동)))
299+
await send(.inner(.미분류_API_반영(.링크이동(categoryName: category.categoryName))))
295300
} catch: { error, send in
296301
await send(.inner(.error(error)))
297302
}
@@ -309,7 +314,8 @@ private extension PokitLinkEditFeature {
309314
}
310315
public extension PokitLinkEditFeature {
311316
enum LinkEditType: Equatable {
312-
case 링크이동
317+
case dismiss
318+
case 링크이동(categoryName: String)
313319
case 링크삭제
314320
}
315321
}

Projects/Feature/FeaturePokit/Sources/PokitRootFeature.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ public struct PokitRootFeature {
130130
case settingButtonTapped
131131

132132
case categoryTapped(BaseCategoryItem)
133+
case linkPopup(text: String)
133134
case 수정하기(BaseCategoryItem)
134135
case 링크수정하기(id: Int)
135136
/// 링크상세로 이동
@@ -544,7 +545,7 @@ private extension PokitRootFeature {
544545
case .contents:
545546
return .none
546547

547-
case let .linkEdit(.presented(.delegate(.링크_편집_종료(list)))):
548+
case let .linkEdit(.presented(.delegate(.링크_편집_종료(list, type)))):
548549
/// 링크가 비어있을때는 전부 삭제
549550
if list.isEmpty {
550551
state.contents.removeAll()
@@ -562,6 +563,11 @@ private extension PokitRootFeature {
562563
state.contents = linkIds
563564
}
564565
state.linkEdit = nil
566+
567+
if case let .링크이동(categoryName) = type {
568+
let text = "\(categoryName)\n카테고리로 이동되었습니다."
569+
return .send(.delegate(.linkPopup(text: text)))
570+
}
565571
return .none
566572

567573
case .linkEdit:

0 commit comments

Comments
 (0)