Skip to content

Commit e95ff19

Browse files
authored
[#330] 네트워크가 연결되어있음에도 앱을 시작할 시 간헐적으로 네트워크 관련 얼럿이 뜨는 현상을 해결한다 (#333)
* refactor: 옵셔널 포함하지만, 방출을 compactMap으로 처리하여 최초 Bool 값을 방출하지 않도록 개선 * style: 유즈케이스 단에서 removeDuplicates() 적용
1 parent 91c82cd commit e95ff19

6 files changed

Lines changed: 6 additions & 9 deletions

File tree

DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,7 @@ final class ObserveNetworkConnectivityUseCaseImpl: ObserveNetworkConnectivityUse
1616

1717
func observe() -> AnyPublisher<Bool, Never> {
1818
repository.observeNetworkConnectivity()
19+
.removeDuplicates()
20+
.eraseToAnyPublisher()
1921
}
2022
}

DevLog/Infra/Service/NWPathConnectivityProvider.swift

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,9 @@ import Combine
1111
final class NWPathConnectivityProvider {
1212
private let networkPathMonitor = NWPathMonitor()
1313
private let monitoringQueue = DispatchQueue(label: "NWPathConnectivityProviderQueue")
14-
private let isConnectedSubject = CurrentValueSubject<Bool, Never>(false)
14+
private let isConnectedSubject = CurrentValueSubject<Bool?, Never>(nil)
1515

1616
init() {
17-
let initialStatus = networkPathMonitor.currentPath.status == .satisfied
18-
isConnectedSubject.send(initialStatus)
19-
2017
networkPathMonitor.pathUpdateHandler = { [weak self] path in
2118
let connected = (path.status == .satisfied)
2219
self?.isConnectedSubject.send(connected)
@@ -30,6 +27,8 @@ final class NWPathConnectivityProvider {
3027
}
3128

3229
func observeNetworkConnectivity() -> AnyPublisher<Bool, Never> {
33-
isConnectedSubject.eraseToAnyPublisher()
30+
isConnectedSubject
31+
.compactMap { $0 }
32+
.eraseToAnyPublisher()
3433
}
3534
}

DevLog/Presentation/ViewModel/HomeViewModel.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,6 @@ private extension HomeViewModel {
446446

447447
func setupNetworkObserving() {
448448
networkConnectivityUseCase.observe()
449-
.removeDuplicates()
450449
.receive(on: DispatchQueue.main)
451450
.sink { [weak self] isConnected in
452451
self?.send(.networkStatusChanged(isConnected))

DevLog/Presentation/ViewModel/ProfileViewModel.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,6 @@ final class ProfileViewModel: Store {
250250
extension ProfileViewModel {
251251
private func setupNetworkObserving() {
252252
networkConnectivityUseCase.observe()
253-
.removeDuplicates()
254253
.receive(on: DispatchQueue.main)
255254
.sink { [weak self] isConnected in
256255
self?.send(.networkStatusChanged(isConnected))

DevLog/Presentation/ViewModel/RootViewModel.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ private extension RootViewModel {
9999

100100
func setupNetworkObserving() {
101101
networkConnectivityUseCase.observe()
102-
.removeDuplicates()
103102
.receive(on: DispatchQueue.main)
104103
.sink { [weak self] isConnected in
105104
self?.send(.networkStatusChanged(isConnected))

DevLog/Presentation/ViewModel/SettingViewModel.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ private extension SettingViewModel {
174174

175175
func setupNetworkObserving() {
176176
networkConnectivityUseCase.observe()
177-
.removeDuplicates()
178177
.receive(on: DispatchQueue.main)
179178
.sink { [weak self] isConnected in
180179
self?.send(.networkStatusChanged(isConnected))

0 commit comments

Comments
 (0)