Skip to content

Commit a415a5d

Browse files
committed
[fix] #83 fcm 분기처리 수정
1 parent 38648a2 commit a415a5d

File tree

5 files changed

+37
-28
lines changed

5 files changed

+37
-28
lines changed

Projects/App/Sources/AppDelegate/AppDelegateFeature.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public struct AppDelegateFeature {
2121
@ObservableState
2222
public struct State {
2323
public var root = RootFeature.State()
24+
@Shared(.inMemory("PushTapped")) var isPushTapped: Bool = false
2425

2526
public init() {}
2627
}
@@ -80,6 +81,7 @@ public struct AppDelegateFeature {
8081
return .run { _ in completionHandler(.banner) }
8182

8283
case let .userNotifications(.didReceiveResponse(_, completionHandler)):
84+
state.isPushTapped = true
8385
return .run { @MainActor _ in completionHandler() }
8486
case .userNotifications:
8587
return .none

Projects/App/Sources/Intro/IntroFeature.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,6 @@ private extension IntroFeature {
6868

6969
case .delegate(.loginNeeded):
7070
return .run { send in
71-
/// 알람을 통해 앱을 들어왔으나 자동 로그인을 실패했다면 배너로 이동하지 못하게 flag 삭제
72-
await userDefaults.removeBool(.fromBanner)
73-
/// Todo: 원하는 애니메이션 넣어줘~
7471
await send(._sceneChange(.login()), animation: .smooth)
7572
}
7673

Projects/App/Sources/MainTab/MainTabFeature.swift

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,24 @@ public struct MainTabFeature {
3131
var isLinkSheetPresented: Bool = false
3232
var isErrorSheetPresented: Bool = false
3333
var link: String?
34-
34+
3535
var error: BaseError?
36-
36+
3737
var path: StackState<MainTabPath.State> = .init()
3838
var pokit: PokitRootFeature.State
3939
var remind: RemindFeature.State = .init()
4040
@Presents var contentDetail: ContentDetailFeature.State?
4141
@Shared(.inMemory("SelectCategory")) var selectedPokit: BaseCategoryItem?
42-
42+
@Shared(.inMemory("PushTapped")) var isPushTapped: Bool = false
43+
4344
public init() {
4445
self.pokit = .init()
4546
}
4647
}
4748
/// - Action
4849
public enum Action: FeatureAction, BindableAction, ViewAction {
4950
case binding(BindingAction<State>)
51+
case pushAlertTapped(Bool)
5052
case view(View)
5153
case inner(InnerAction)
5254
case async(AsyncAction)
@@ -93,6 +95,12 @@ public struct MainTabFeature {
9395
switch action {
9496
case .binding:
9597
return .none
98+
case let .pushAlertTapped(isTapped):
99+
if isTapped {
100+
return .send(.delegate(.알림함이동))
101+
} else {
102+
return .none
103+
}
96104
/// - View
97105
case .view(let viewAction):
98106
return handleViewAction(viewAction, state: &state)
@@ -108,7 +116,7 @@ public struct MainTabFeature {
108116
/// - Delegate
109117
case .delegate(let delegateAction):
110118
return handleDelegateAction(delegateAction, state: &state)
111-
119+
112120
case .path:
113121
return .none
114122
case .pokit:
@@ -123,7 +131,7 @@ public struct MainTabFeature {
123131
public var body: some ReducerOf<Self> {
124132
Scope(state: \.pokit, action: \.pokit) { PokitRootFeature() }
125133
Scope(state: \.remind, action: \.remind) { RemindFeature() }
126-
134+
127135
BindingReducer()
128136
navigationReducer
129137
Reduce(self.core)
@@ -140,42 +148,45 @@ private extension MainTabFeature {
140148
case .addButtonTapped:
141149
state.isBottomSheetPresented.toggle()
142150
return .none
143-
151+
144152
case .addSheetTypeSelected(let type):
145153
state.isBottomSheetPresented = false
146154
switch type {
147155
case .링크추가: return .send(.delegate(.링크추가하기))
148156
case .포킷추가: return .send(.delegate(.포킷추가하기))
149157
}
150-
158+
151159
case .linkCopyButtonTapped:
152160
state.isLinkSheetPresented = false
153161
return .run { send in await send(.delegate(.링크추가하기)) }
154162

155163
case .onAppear:
156-
return .run { send in
157-
let fromBanner = userDefaults.boolKey(.fromBanner)
158-
if fromBanner {
159-
await userDefaults.removeBool(.fromBanner)
160-
await send(.delegate(.알림함이동))
161-
}
162-
163-
for await _ in self.pasteBoard.changes() {
164-
let url = try await pasteBoard.probableWebURL()
165-
await send(.inner(.linkCopySuccess(url)), animation: .pokitSpring)
166-
}
164+
if state.isPushTapped {
165+
return .send(.pushAlertTapped(true))
167166
}
167+
return .merge(
168+
.run { send in
169+
for await _ in self.pasteBoard.changes() {
170+
let url = try await pasteBoard.probableWebURL()
171+
await send(.inner(.linkCopySuccess(url)), animation: .pokitSpring)
172+
}
173+
},
174+
.publisher {
175+
state.$isPushTapped.publisher
176+
.map(Action.pushAlertTapped)
177+
}
178+
)
168179
case .onOpenURL(url: let url):
169180
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
170181
return .none
171182
}
172-
183+
173184
let queryItems = components.queryItems ?? []
174185
guard let categoryIdString = queryItems.first(where: { $0.name == "categoryId" })?.value,
175186
let categoryId = Int(categoryIdString) else {
176187
return .none
177188
}
178-
189+
179190
return .send(.async(.공유받은_카테고리_조회(categoryId: categoryId)))
180191
case .경고_확인버튼_클릭:
181192
state.error = nil
@@ -190,15 +201,15 @@ private extension MainTabFeature {
190201
state.isLinkSheetPresented = true
191202
state.link = url.absoluteString
192203
return .none
193-
204+
194205
case let .경고_띄움(error):
195206
state.error = error
196207
return .run { send in await send(.inner(.errorSheetPresented(true))) }
197-
208+
198209
case let .errorSheetPresented(isPresented):
199210
state.isErrorSheetPresented = isPresented
200211
return .none
201-
212+
202213
default: return .none
203214
}
204215
}

Projects/App/Sources/MainTab/MainTabPath.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public extension MainTabFeature {
6262
case .pokit(.delegate(.alertButtonTapped)),
6363
.remind(.delegate(.alertButtonTapped)),
6464
.delegate(.알림함이동):
65+
state.isPushTapped = false
6566
state.path.append(.알림함(PokitAlertBoxFeature.State()))
6667
return .none
6768

Projects/CoreKit/Sources/Data/Client/UserDefaults/UserDefaultsKey.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import Foundation
1010
public enum UserDefaultsKey {
1111
public enum BoolKey: String {
1212
case autoSaveSearch
13-
/// - 배너를 클릭해서 들어왔을 때
14-
case fromBanner
1513
}
1614
public enum StringKey: String {
1715
/// `구글` or `애플`

0 commit comments

Comments
 (0)