diff --git a/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift b/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift index e32cd674..81bdff36 100644 --- a/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift @@ -16,5 +16,7 @@ final class ObserveNetworkConnectivityUseCaseImpl: ObserveNetworkConnectivityUse func observe() -> AnyPublisher { repository.observeNetworkConnectivity() + .removeDuplicates() + .eraseToAnyPublisher() } } diff --git a/DevLog/Infra/Service/NWPathConnectivityProvider.swift b/DevLog/Infra/Service/NWPathConnectivityProvider.swift index 4ecda776..07cd8541 100644 --- a/DevLog/Infra/Service/NWPathConnectivityProvider.swift +++ b/DevLog/Infra/Service/NWPathConnectivityProvider.swift @@ -11,12 +11,9 @@ import Combine final class NWPathConnectivityProvider { private let networkPathMonitor = NWPathMonitor() private let monitoringQueue = DispatchQueue(label: "NWPathConnectivityProviderQueue") - private let isConnectedSubject = CurrentValueSubject(false) + private let isConnectedSubject = CurrentValueSubject(nil) init() { - let initialStatus = networkPathMonitor.currentPath.status == .satisfied - isConnectedSubject.send(initialStatus) - networkPathMonitor.pathUpdateHandler = { [weak self] path in let connected = (path.status == .satisfied) self?.isConnectedSubject.send(connected) @@ -30,6 +27,8 @@ final class NWPathConnectivityProvider { } func observeNetworkConnectivity() -> AnyPublisher { - isConnectedSubject.eraseToAnyPublisher() + isConnectedSubject + .compactMap { $0 } + .eraseToAnyPublisher() } } diff --git a/DevLog/Presentation/ViewModel/HomeViewModel.swift b/DevLog/Presentation/ViewModel/HomeViewModel.swift index fb8974b4..809c8745 100644 --- a/DevLog/Presentation/ViewModel/HomeViewModel.swift +++ b/DevLog/Presentation/ViewModel/HomeViewModel.swift @@ -446,7 +446,6 @@ private extension HomeViewModel { func setupNetworkObserving() { networkConnectivityUseCase.observe() - .removeDuplicates() .receive(on: DispatchQueue.main) .sink { [weak self] isConnected in self?.send(.networkStatusChanged(isConnected)) diff --git a/DevLog/Presentation/ViewModel/ProfileViewModel.swift b/DevLog/Presentation/ViewModel/ProfileViewModel.swift index 1844e36f..aaa89eaa 100644 --- a/DevLog/Presentation/ViewModel/ProfileViewModel.swift +++ b/DevLog/Presentation/ViewModel/ProfileViewModel.swift @@ -250,7 +250,6 @@ final class ProfileViewModel: Store { extension ProfileViewModel { private func setupNetworkObserving() { networkConnectivityUseCase.observe() - .removeDuplicates() .receive(on: DispatchQueue.main) .sink { [weak self] isConnected in self?.send(.networkStatusChanged(isConnected)) diff --git a/DevLog/Presentation/ViewModel/RootViewModel.swift b/DevLog/Presentation/ViewModel/RootViewModel.swift index b8cdd9e9..d4f47503 100644 --- a/DevLog/Presentation/ViewModel/RootViewModel.swift +++ b/DevLog/Presentation/ViewModel/RootViewModel.swift @@ -99,7 +99,6 @@ private extension RootViewModel { func setupNetworkObserving() { networkConnectivityUseCase.observe() - .removeDuplicates() .receive(on: DispatchQueue.main) .sink { [weak self] isConnected in self?.send(.networkStatusChanged(isConnected)) diff --git a/DevLog/Presentation/ViewModel/SettingViewModel.swift b/DevLog/Presentation/ViewModel/SettingViewModel.swift index 4ac61adc..902118ae 100644 --- a/DevLog/Presentation/ViewModel/SettingViewModel.swift +++ b/DevLog/Presentation/ViewModel/SettingViewModel.swift @@ -174,7 +174,6 @@ private extension SettingViewModel { func setupNetworkObserving() { networkConnectivityUseCase.observe() - .removeDuplicates() .receive(on: DispatchQueue.main) .sink { [weak self] isConnected in self?.send(.networkStatusChanged(isConnected))