Skip to content

Commit 413a6be

Browse files
committed
[feat] #167 링크 저장 팝업 클릭 시 포킷상세(미분류) 이동 로직으로 변경
1 parent 2cdb372 commit 413a6be

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

Projects/App/Sources/MainTab/MainTabFeature.swift

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public struct MainTabFeature {
4141
@Presents var contentDetail: ContentDetailFeature.State?
4242
@Shared(.inMemory("SelectCategory")) var categoryId: Int?
4343
@Shared(.inMemory("PushTapped")) var isPushTapped: Bool = false
44-
var savedContentId: Int?
44+
var categoryOfSavedContent: BaseCategoryItem?
4545

4646
public init() {
4747
self.pokit = .init()
@@ -78,6 +78,7 @@ public struct MainTabFeature {
7878
case 경고_띄움(BaseError)
7979
case errorSheetPresented(Bool)
8080
case 링크팝업_활성화(PokitLinkPopup.PopupType)
81+
case 카테고리상세_이동(category: BaseCategoryItem)
8182
}
8283
public enum AsyncAction: Equatable {
8384
case 공유받은_카테고리_조회(categoryId: Int)
@@ -98,7 +99,7 @@ public struct MainTabFeature {
9899
switch action {
99100
case .binding(\.linkPopup):
100101
guard state.linkPopup == nil else { return .none }
101-
state.savedContentId = nil
102+
state.categoryOfSavedContent = nil
102103
return .none
103104
case .binding:
104105
return .none
@@ -222,7 +223,14 @@ private extension MainTabFeature {
222223
case let .링크팝업_활성화(type):
223224
state.linkPopup = type
224225
return .none
225-
226+
case let .카테고리상세_이동(category):
227+
if category.categoryName == "미분류" {
228+
state.selectedTab = .pokit
229+
state.path.removeAll()
230+
return .send(.pokit(.delegate(.미분류_카테고리_활성화)))
231+
}
232+
state.path.append(.카테고리상세(.init(category: category)))
233+
return .none
226234
default: return .none
227235
}
228236
}
@@ -259,9 +267,9 @@ private extension MainTabFeature {
259267
return .send(.delegate(.링크추가하기))
260268
case .success:
261269
state.linkPopup = nil
262-
state.contentDetail = .init(contentId: state.savedContentId)
263-
state.savedContentId = nil
264-
return .none
270+
guard let category = state.categoryOfSavedContent else { return .none }
271+
state.categoryOfSavedContent = nil
272+
return .send(.inner(.카테고리상세_이동(category: category)))
265273
case .error, .text, .warning, .none:
266274
return .none
267275
}

Projects/App/Sources/MainTab/MainTabPath.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ public extension MainTabFeature {
175175

176176
/// - 링크추가 및 수정에서 저장하기 눌렀을 때
177177
case let .path(.element(stackElementId, action: .링크추가및수정(.delegate(.저장하기_완료(contentId))))):
178-
state.savedContentId = contentId
178+
state.categoryOfSavedContent = contentId
179179
state.path.removeLast()
180180
switch state.path.last {
181181
case .검색:

Projects/Feature/FeatureContentSetting/Sources/ContentSetting/ContentSettingFeature.swift

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public struct ContentSettingFeature {
123123
public enum ScopeAction: Equatable { case 없음 }
124124

125125
public enum DelegateAction: Equatable {
126-
case 저장하기_완료(contentId: Int)
126+
case 저장하기_완료(category: BaseCategoryItem)
127127
case 포킷추가하기
128128
case dismiss
129129
}
@@ -373,10 +373,13 @@ private extension ContentSettingFeature {
373373
categoryListFetch(request: request)
374374
)
375375
case .컨텐츠_수정_API:
376-
guard let contentId = state.domain.contentId,
377-
let categoryId = state.selectedPokit?.id else {
378-
return .none
379-
}
376+
guard
377+
let contentId = state.domain.contentId,
378+
let categoryId = state.selectedPokit?.id,
379+
let category = state.domain.categoryListInQuiry.data?.first(where: {
380+
$0.id == categoryId
381+
})
382+
else { return .none }
380383
let request = ContentBaseRequest(
381384
data: state.domain.data,
382385
title: state.domain.title,
@@ -391,14 +394,17 @@ private extension ContentSettingFeature {
391394
request
392395
)
393396
await send(.inner(.선택한_포킷_인메모리_삭제))
394-
await send(.delegate(.저장하기_완료(contentId: contentId)))
397+
await send(.delegate(.저장하기_완료(category: category)))
395398
} catch: { error, send in
396399
await send(.inner(.error(error)))
397400
}
398401
case .컨텐츠_추가_API:
399-
guard let categoryId = state.selectedPokit?.id else {
400-
return .none
401-
}
402+
guard
403+
let categoryId = state.selectedPokit?.id,
404+
let category = state.domain.categoryListInQuiry.data?.first(where: {
405+
$0.id == categoryId
406+
})
407+
else { return .none }
402408
let request = ContentBaseRequest(
403409
data: state.domain.data,
404410
title: state.domain.title,
@@ -410,7 +416,7 @@ private extension ContentSettingFeature {
410416
return .run { send in
411417
let content = try await contentClient.컨텐츠_추가(request)
412418
await send(.inner(.선택한_포킷_인메모리_삭제))
413-
await send(.delegate(.저장하기_완료(contentId: content.contentId)))
419+
await send(.delegate(.저장하기_완료(category: category)))
414420
} catch: { error, send in
415421
await send(.inner(.error(error)))
416422
}

Projects/Feature/FeaturePokit/Sources/PokitRootFeature.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ public struct PokitRootFeature {
123123

124124
case 포킷추가_버튼_눌렀을때
125125
case 링크추가_버튼_눌렀을때
126+
127+
case 미분류_카테고리_활성화
126128
}
127129
}
128130

@@ -513,6 +515,10 @@ private extension PokitRootFeature {
513515

514516
default: return .none
515517
}
518+
case .미분류_카테고리_활성화:
519+
state.folderType = .folder(.미분류)
520+
state.sortType = .sort(.최신순)
521+
return .send(.inner(.sort))
516522
default:
517523
return .none
518524
}

0 commit comments

Comments
 (0)