diff --git a/api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidDeviceIpAddressProvider.kt b/api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidDeviceIpAddressProvider.kt index 1ece0055..c3f6fa3f 100644 --- a/api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidDeviceIpAddressProvider.kt +++ b/api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidDeviceIpAddressProvider.kt @@ -9,6 +9,7 @@ import android.net.NetworkRequest import com.mooncloak.kodetools.logpile.core.LogPile import com.mooncloak.kodetools.logpile.core.warning import com.mooncloak.vpn.api.shared.VpnServiceApi +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider import com.mooncloak.vpn.data.shared.cache.Cache import com.mooncloak.vpn.data.shared.keyvalue.get import com.mooncloak.vpn.data.shared.keyvalue.set diff --git a/api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidLocalNetworkManager.kt b/api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidLocalDeviceIpAddressProvider.kt similarity index 82% rename from api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidLocalNetworkManager.kt rename to api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidLocalDeviceIpAddressProvider.kt index ab957efe..109f3d56 100644 --- a/api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidLocalNetworkManager.kt +++ b/api-vpn/src/androidMain/kotlin/com/mooncloak/vpn/api/shared/network/AndroidLocalDeviceIpAddressProvider.kt @@ -4,19 +4,20 @@ import android.content.Context import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.net.wifi.WifiManager +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider import java.net.InetAddress -public operator fun LocalNetworkManager.Companion.invoke(context: Context): LocalNetworkManager = - AndroidLocalNetworkManager(context = context) +public operator fun LocalDeviceIPAddressProvider.Companion.invoke(context: Context): LocalDeviceIPAddressProvider = + AndroidLocalDeviceIpAddressProvider(context = context) -internal class AndroidLocalNetworkManager internal constructor( +internal class AndroidLocalDeviceIpAddressProvider internal constructor( private val context: Context -) : LocalNetworkManager { +) : LocalDeviceIPAddressProvider { - // TODO: Implement AndroidLocalNetworkManager - override suspend fun getInfo(): LocalNetworkInfo = LocalNetworkInfo( - ipAddress = getDeviceIpAddress(context) - ) + override suspend fun get(): String? = getDeviceIpAddress(context) + + override suspend fun invalidate() { + } private fun getDeviceIpAddress(context: Context): String? { val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager diff --git a/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/LocalNetworkInfo.kt b/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/LocalNetworkInfo.kt deleted file mode 100644 index a48ede15..00000000 --- a/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/LocalNetworkInfo.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.mooncloak.vpn.api.shared.network - -import androidx.compose.runtime.Immutable -import com.mooncloak.kodetools.locale.Country -import com.mooncloak.kodetools.locale.Region -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Immutable -@Serializable -public data class LocalNetworkInfo public constructor( - @SerialName(value = "ip") public val ipAddress: String? = null, - @SerialName(value = "country") public val country: Country? = null, - @SerialName(value = "region") public val region: Region? = null -) diff --git a/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/LocalNetworkManager.kt b/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/LocalNetworkManager.kt deleted file mode 100644 index 5e0c7156..00000000 --- a/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/LocalNetworkManager.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.mooncloak.vpn.api.shared.network - -public interface LocalNetworkManager { - - public suspend fun getInfo(): LocalNetworkInfo? - - public companion object -} diff --git a/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/DeviceIPAddressProvider.kt b/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/ip/DeviceIPAddressProvider.kt similarity index 91% rename from api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/DeviceIPAddressProvider.kt rename to api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/ip/DeviceIPAddressProvider.kt index eefa4771..4e2b476a 100644 --- a/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/DeviceIPAddressProvider.kt +++ b/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/ip/DeviceIPAddressProvider.kt @@ -1,4 +1,4 @@ -package com.mooncloak.vpn.api.shared.network +package com.mooncloak.vpn.api.shared.network.ip /** * A component that retrieves the Internet Protocol (IP) Address of the current device running this application. diff --git a/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/ip/LocalDeviceIPAddressProvider.kt b/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/ip/LocalDeviceIPAddressProvider.kt new file mode 100644 index 00000000..fbb4452f --- /dev/null +++ b/api-vpn/src/commonMain/kotlin/com/mooncloak/vpn/api/shared/network/ip/LocalDeviceIPAddressProvider.kt @@ -0,0 +1,9 @@ +package com.mooncloak.vpn.api.shared.network.ip + +/** + * A [DeviceIPAddressProvider] that retrieves the local network IP address of the device running this application. + */ +public interface LocalDeviceIPAddressProvider : DeviceIPAddressProvider { + + public companion object +} diff --git a/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmDeviceIpAddressProvider.kt b/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmDeviceIpAddressProvider.kt index b67dc7a9..27809bdf 100644 --- a/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmDeviceIpAddressProvider.kt +++ b/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmDeviceIpAddressProvider.kt @@ -3,6 +3,7 @@ package com.mooncloak.vpn.api.shared.network import com.mooncloak.kodetools.logpile.core.LogPile import com.mooncloak.kodetools.logpile.core.warning import com.mooncloak.vpn.api.shared.MooncloakVpnServiceHttpApi +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider import com.mooncloak.vpn.data.shared.cache.Cache import com.mooncloak.vpn.data.shared.keyvalue.get import com.mooncloak.vpn.data.shared.keyvalue.set diff --git a/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmLocalDeviceIPAddressProvider.kt b/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmLocalDeviceIPAddressProvider.kt new file mode 100644 index 00000000..89f23ccf --- /dev/null +++ b/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmLocalDeviceIPAddressProvider.kt @@ -0,0 +1,14 @@ +package com.mooncloak.vpn.api.shared.network + +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider + +public operator fun LocalDeviceIPAddressProvider.Companion.invoke(): LocalDeviceIPAddressProvider = + JvmLocalDeviceIPAddressProvider() + +internal class JvmLocalDeviceIPAddressProvider internal constructor() : LocalDeviceIPAddressProvider { + + override suspend fun get(): String? = null + + override suspend fun invalidate() { + } +} diff --git a/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmLocalNetworkManager.kt b/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmLocalNetworkManager.kt deleted file mode 100644 index 26d0959b..00000000 --- a/api-vpn/src/jvmMain/kotlin/com/mooncloak/vpn/api/shared/network/JvmLocalNetworkManager.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.mooncloak.vpn.api.shared.network - -public operator fun LocalNetworkManager.Companion.invoke(): LocalNetworkManager = JvmLocalNetworkManager() - -internal class JvmLocalNetworkManager internal constructor() : LocalNetworkManager { - - // TODO: Implement JVMLocalNetworkManager - override suspend fun getInfo(): LocalNetworkInfo? = null -} diff --git a/app-android/src/main/kotlin/com.mooncloak.vpn.app.android/api/wireguard/AndroidWireGuardTunnelManager.kt b/app-android/src/main/kotlin/com.mooncloak.vpn.app.android/api/wireguard/AndroidWireGuardTunnelManager.kt index d678ea18..24787434 100644 --- a/app-android/src/main/kotlin/com.mooncloak.vpn.app.android/api/wireguard/AndroidWireGuardTunnelManager.kt +++ b/app-android/src/main/kotlin/com.mooncloak.vpn.app.android/api/wireguard/AndroidWireGuardTunnelManager.kt @@ -10,7 +10,7 @@ import com.mooncloak.kodetools.logpile.core.error import com.mooncloak.kodetools.logpile.core.info import com.mooncloak.kodetools.statex.persistence.ExperimentalPersistentStateAPI import com.mooncloak.vpn.api.shared.VpnServiceApi -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider import com.mooncloak.vpn.app.shared.api.key.WireGuardConnectionKeyPairResolver import com.mooncloak.vpn.api.shared.server.Server import com.mooncloak.vpn.app.shared.api.server.usecase.RegisterClientUseCase diff --git a/app-android/src/main/kotlin/com.mooncloak.vpn.app.android/di/AndroidApplicationComponent.kt b/app-android/src/main/kotlin/com.mooncloak.vpn.app.android/di/AndroidApplicationComponent.kt index 8bb6591d..83b0974c 100644 --- a/app-android/src/main/kotlin/com.mooncloak.vpn.app.android/di/AndroidApplicationComponent.kt +++ b/app-android/src/main/kotlin/com.mooncloak.vpn.app.android/di/AndroidApplicationComponent.kt @@ -4,7 +4,7 @@ import com.mooncloak.kodetools.konstruct.annotations.Provides import com.mooncloak.kodetools.konstruct.annotations.Singleton import com.mooncloak.vpn.app.android.api.wireguard.WireGuardBackend import com.mooncloak.vpn.api.shared.MooncloakVpnServiceHttpApi -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider import com.mooncloak.vpn.api.shared.network.invoke import com.mooncloak.vpn.app.shared.di.ApplicationComponent import com.mooncloak.vpn.app.shared.util.ApplicationContext diff --git a/app-android/src/play/kotlin/com.mooncloak.vpn.app.android/di/AndroidGooglePlayApplicationComponent.kt b/app-android/src/play/kotlin/com.mooncloak.vpn.app.android/di/AndroidGooglePlayApplicationComponent.kt index 6926b715..1fe20df1 100644 --- a/app-android/src/play/kotlin/com.mooncloak.vpn.app.android/di/AndroidGooglePlayApplicationComponent.kt +++ b/app-android/src/play/kotlin/com.mooncloak.vpn.app.android/di/AndroidGooglePlayApplicationComponent.kt @@ -9,7 +9,7 @@ import com.mooncloak.vpn.app.android.api.wireguard.WireGuardBackend import com.mooncloak.vpn.app.android.api.wireguard.AndroidWireGuardTunnelManager import com.mooncloak.vpn.app.android.util.WireGuardVpnContextWrapper import com.mooncloak.vpn.api.shared.key.WireGuardConnectionKeyManager -import com.mooncloak.vpn.api.shared.network.LocalNetworkManager +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider import com.mooncloak.vpn.api.shared.network.invoke import com.mooncloak.vpn.api.shared.tunnel.TunnelManager import com.mooncloak.vpn.app.shared.di.ApplicationComponent @@ -40,8 +40,8 @@ internal abstract class AndroidGooglePlayApplicationComponent internal construct @Provides @Singleton - internal fun provideLocalNetworkManager(context: ApplicationContext): LocalNetworkManager = - LocalNetworkManager(context = context) + internal fun provideLocalNetworkManager(context: ApplicationContext): LocalDeviceIPAddressProvider = + LocalDeviceIPAddressProvider(context = context) @Provides @Singleton diff --git a/app-desktop/src/main/kotlin/com/mooncloak/vpn/app/desktop/di/JvmApplicationComponent.kt b/app-desktop/src/main/kotlin/com/mooncloak/vpn/app/desktop/di/JvmApplicationComponent.kt index 50a1ba1d..85733bcd 100644 --- a/app-desktop/src/main/kotlin/com/mooncloak/vpn/app/desktop/di/JvmApplicationComponent.kt +++ b/app-desktop/src/main/kotlin/com/mooncloak/vpn/app/desktop/di/JvmApplicationComponent.kt @@ -8,8 +8,8 @@ import com.mooncloak.vpn.app.desktop.api.wireguard.JvmWireGuardTunnelManager import com.mooncloak.vpn.app.desktop.info.JvmAppClientInfo import com.mooncloak.vpn.api.shared.MooncloakVpnServiceHttpApi import com.mooncloak.vpn.api.shared.key.WireGuardConnectionKeyManager -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider -import com.mooncloak.vpn.api.shared.network.LocalNetworkManager +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider import com.mooncloak.vpn.api.shared.network.invoke import com.mooncloak.vpn.api.shared.tunnel.TunnelManager import com.mooncloak.vpn.app.shared.di.ApplicationComponent @@ -52,7 +52,7 @@ internal abstract class JvmApplicationComponent internal constructor( @Provides @Singleton - internal fun provideLocalNetworkManager(): LocalNetworkManager = LocalNetworkManager() + internal fun provideLocalNetworkManager(): LocalDeviceIPAddressProvider = LocalDeviceIPAddressProvider() @Provides @Singleton diff --git a/app-shared/src/androidMain/kotlin/com.mooncloak.vpn.app.shared/di/AndroidApplicationDependencies.kt b/app-shared/src/androidMain/kotlin/com.mooncloak.vpn.app.shared/di/AndroidApplicationDependencies.kt index ebd138e0..7aa6a094 100644 --- a/app-shared/src/androidMain/kotlin/com.mooncloak.vpn.app.shared/di/AndroidApplicationDependencies.kt +++ b/app-shared/src/androidMain/kotlin/com.mooncloak.vpn.app.shared/di/AndroidApplicationDependencies.kt @@ -3,8 +3,8 @@ package com.mooncloak.vpn.app.shared.di import coil3.SingletonImageLoader import com.mooncloak.kodetools.logpile.core.Logger import com.mooncloak.vpn.api.shared.key.WireGuardConnectionKeyManager -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider -import com.mooncloak.vpn.api.shared.network.LocalNetworkManager +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider import com.mooncloak.vpn.api.shared.tunnel.TunnelManager import com.mooncloak.vpn.app.shared.api.server.usecase.GetDefaultServerUseCase import com.mooncloak.vpn.app.shared.info.AppClientInfo @@ -32,7 +32,7 @@ public actual interface ApplicationDependencies { public actual val preferenceStorage: UserPreferenceSettings public actual val imageLoaderFactory: SingletonImageLoader.Factory public actual val databaseDriverFactory: SqlDriverFactory - public actual val localNetworkManager: LocalNetworkManager + public actual val localDeviceIPAddressProvider: LocalDeviceIPAddressProvider public actual val deviceIPAddressProvider: DeviceIPAddressProvider public actual val wireGuardConnectionKeyManager: WireGuardConnectionKeyManager public actual val tunnelManager: TunnelManager diff --git a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/di/ApplicationDependencies.kt b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/di/ApplicationDependencies.kt index 8e6c7325..68cabc08 100644 --- a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/di/ApplicationDependencies.kt +++ b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/di/ApplicationDependencies.kt @@ -3,8 +3,8 @@ package com.mooncloak.vpn.app.shared.di import coil3.SingletonImageLoader import com.mooncloak.kodetools.logpile.core.Logger import com.mooncloak.vpn.api.shared.key.WireGuardConnectionKeyManager -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider -import com.mooncloak.vpn.api.shared.network.LocalNetworkManager +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider import com.mooncloak.vpn.api.shared.tunnel.TunnelManager import com.mooncloak.vpn.app.shared.api.server.usecase.GetDefaultServerUseCase import com.mooncloak.vpn.app.shared.info.AppClientInfo @@ -31,7 +31,7 @@ public expect interface ApplicationDependencies { public val preferenceStorage: UserPreferenceSettings public val imageLoaderFactory: SingletonImageLoader.Factory public val databaseDriverFactory: SqlDriverFactory - public val localNetworkManager: LocalNetworkManager + public val localDeviceIPAddressProvider: LocalDeviceIPAddressProvider public val deviceIPAddressProvider: DeviceIPAddressProvider public val wireGuardConnectionKeyManager: WireGuardConnectionKeyManager public val tunnelManager: TunnelManager diff --git a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/home/HomeStateModel.kt b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/home/HomeStateModel.kt index 47262339..9cd866c8 100644 --- a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/home/HomeStateModel.kt +++ b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/home/HomeStateModel.kt @@ -1,7 +1,6 @@ package com.mooncloak.vpn.app.shared.feature.home import androidx.compose.runtime.Immutable -import com.mooncloak.vpn.api.shared.network.LocalNetworkInfo import com.mooncloak.vpn.api.shared.server.Server import com.mooncloak.vpn.api.shared.vpn.VPNConnection import com.mooncloak.vpn.app.shared.feature.home.model.HomeFeedItem @@ -11,8 +10,8 @@ import com.mooncloak.vpn.api.shared.service.ServiceSubscription @Immutable public data class HomeStateModel public constructor( public val subscription: ServiceSubscription? = null, - public val localNetwork: LocalNetworkInfo? = null, - public val deviceIpAddress: String? = null, + public val localIpAddress: String? = null, + public val publicIpAddress: String? = null, public val servers: List = emptyList(), public val connection: VPNConnection = VPNConnection.Disconnected(), public val items: List = emptyList(), @@ -34,15 +33,11 @@ public val HomeStateModel.isConnecting: Boolean inline get() = connectionStatus == VPNConnectionStatus.Connecting public val HomeStateModel.connectedName: String? - inline get() = if (this.isDisconnected) { - localNetwork?.country?.name - } else { - servers.firstOrNull()?.name - } + inline get() = servers.firstOrNull()?.name public val HomeStateModel.connectedIpAddress: String? inline get() = if (this.isDisconnected) { - deviceIpAddress ?: localNetwork?.ipAddress + publicIpAddress ?: localIpAddress } else { servers.firstOrNull()?.let { it.ipV4Address ?: it.ipV6Address } } diff --git a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/home/HomeViewModel.kt b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/home/HomeViewModel.kt index 2e2bb33d..dc9f620c 100644 --- a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/home/HomeViewModel.kt +++ b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/home/HomeViewModel.kt @@ -15,9 +15,8 @@ import com.mooncloak.kodetools.logpile.core.LogPile import com.mooncloak.kodetools.logpile.core.error import com.mooncloak.kodetools.statex.ViewModel import com.mooncloak.vpn.app.shared.api.service.ServiceSubscriptionFlowProvider -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider -import com.mooncloak.vpn.api.shared.network.LocalNetworkInfo -import com.mooncloak.vpn.api.shared.network.LocalNetworkManager +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider import com.mooncloak.vpn.api.shared.server.Server import com.mooncloak.vpn.api.shared.server.ServerConnectionRecordRepository import com.mooncloak.vpn.api.shared.vpn.VPNConnection @@ -69,7 +68,7 @@ public class HomeViewModel @Inject public constructor( private val serviceConnectionRecordRepository: ServerConnectionRecordRepository, private val subscriptionStorage: SubscriptionSettings, private val serverConnectionManager: VPNConnectionManager, - private val localNetworkManager: LocalNetworkManager, + private val localDeviceIPAddressProvider: LocalDeviceIPAddressProvider, private val deviceIPAddressProvider: DeviceIPAddressProvider, private val getServiceSubscriptionFlow: ServiceSubscriptionFlowProvider, private val clock: Clock, @@ -134,12 +133,12 @@ public class HomeViewModel @Inject public constructor( emit(value = state.current.value.copy(isLoading = true)) var initialSubscription: ServiceSubscription? = null - var localNetworkInfo: LocalNetworkInfo? = null + var localIpAddress: String? = null var deviceIpAddress: String? = null try { initialSubscription = subscriptionStorage.subscription.get() - localNetworkInfo = localNetworkManager.getInfo() + localIpAddress = localDeviceIPAddressProvider.get() deviceIpAddress = deviceIPAddressProvider.get() val items = getFeedItems( @@ -150,8 +149,8 @@ public class HomeViewModel @Inject public constructor( emit { current -> current.copy( subscription = initialSubscription, - localNetwork = localNetworkInfo, - deviceIpAddress = deviceIpAddress, + publicIpAddress = deviceIpAddress, + localIpAddress = localIpAddress, items = items, isLoading = false, isCheckingStatus = false @@ -163,8 +162,8 @@ public class HomeViewModel @Inject public constructor( emit { current -> current.copy( subscription = initialSubscription, - localNetwork = localNetworkInfo, - deviceIpAddress = deviceIpAddress, + publicIpAddress = deviceIpAddress, + localIpAddress = localIpAddress, isLoading = false, isCheckingStatus = false, errorMessage = getString(Res.string.global_unexpected_error) diff --git a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/server/details/ServerDetailsViewModel.kt b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/server/details/ServerDetailsViewModel.kt index f67204b7..c0edbe80 100644 --- a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/server/details/ServerDetailsViewModel.kt +++ b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/server/details/ServerDetailsViewModel.kt @@ -5,7 +5,7 @@ import com.mooncloak.kodetools.konstruct.annotations.Inject import com.mooncloak.kodetools.logpile.core.LogPile import com.mooncloak.kodetools.logpile.core.error import com.mooncloak.kodetools.statex.ViewModel -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider import com.mooncloak.vpn.api.shared.server.Server import com.mooncloak.vpn.api.shared.vpn.VPNConnectionManager import com.mooncloak.vpn.api.shared.server.ServerConnectionRecord diff --git a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/settings/SettingsViewModel.kt b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/settings/SettingsViewModel.kt index d57bcc62..6431745c 100644 --- a/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/settings/SettingsViewModel.kt +++ b/app-shared/src/commonMain/kotlin/com/mooncloak/vpn/app/shared/feature/settings/SettingsViewModel.kt @@ -8,8 +8,8 @@ import com.mooncloak.kodetools.statex.ViewModel import com.mooncloak.kodetools.statex.persistence.ExperimentalPersistentStateAPI import com.mooncloak.kodetools.statex.update import com.mooncloak.vpn.app.shared.api.service.ServiceSubscriptionFlowProvider -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider -import com.mooncloak.vpn.api.shared.network.LocalNetworkManager +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider import com.mooncloak.vpn.api.shared.preference.WireGuardPreferences import com.mooncloak.vpn.api.shared.service.ServiceSubscription import com.mooncloak.vpn.api.shared.service.isActive @@ -45,7 +45,7 @@ public class SettingsViewModel @Inject public constructor( private val preferencesStorage: UserPreferenceSettings, private val systemAuthenticationProvider: SystemAuthenticationProvider, private val clock: Clock, - private val localNetworkManager: LocalNetworkManager, + private val localDeviceIPAddressProvider: LocalDeviceIPAddressProvider, private val deviceIPAddressProvider: DeviceIPAddressProvider, private val getServiceSubscriptionFlow: ServiceSubscriptionFlowProvider ) : ViewModel(initialStateValue = SettingsStateModel()) { @@ -219,7 +219,7 @@ public class SettingsViewModel @Inject public constructor( private suspend fun getDeviceDetails(): SettingsDeviceDetails = try { val publicIp = deviceIPAddressProvider.get() - val localIp = localNetworkManager.getInfo()?.ipAddress + val localIp = localDeviceIPAddressProvider.get() SettingsDeviceDetails( publicIpAddress = publicIp, diff --git a/app-shared/src/jvmMain/kotlin/com/mooncloak/vpn/app/shared/di/JvmApplicationDependencies.kt b/app-shared/src/jvmMain/kotlin/com/mooncloak/vpn/app/shared/di/JvmApplicationDependencies.kt index 7ced0d39..f9116d9c 100644 --- a/app-shared/src/jvmMain/kotlin/com/mooncloak/vpn/app/shared/di/JvmApplicationDependencies.kt +++ b/app-shared/src/jvmMain/kotlin/com/mooncloak/vpn/app/shared/di/JvmApplicationDependencies.kt @@ -3,8 +3,8 @@ package com.mooncloak.vpn.app.shared.di import coil3.SingletonImageLoader import com.mooncloak.kodetools.logpile.core.Logger import com.mooncloak.vpn.api.shared.key.WireGuardConnectionKeyManager -import com.mooncloak.vpn.api.shared.network.DeviceIPAddressProvider -import com.mooncloak.vpn.api.shared.network.LocalNetworkManager +import com.mooncloak.vpn.api.shared.network.ip.DeviceIPAddressProvider +import com.mooncloak.vpn.api.shared.network.ip.LocalDeviceIPAddressProvider import com.mooncloak.vpn.api.shared.tunnel.TunnelManager import com.mooncloak.vpn.app.shared.api.server.usecase.GetDefaultServerUseCase import com.mooncloak.vpn.app.shared.info.AppClientInfo @@ -31,7 +31,7 @@ public actual interface ApplicationDependencies { public actual val preferenceStorage: UserPreferenceSettings public actual val imageLoaderFactory: SingletonImageLoader.Factory public actual val databaseDriverFactory: SqlDriverFactory - public actual val localNetworkManager: LocalNetworkManager + public actual val localDeviceIPAddressProvider: LocalDeviceIPAddressProvider public actual val deviceIPAddressProvider: DeviceIPAddressProvider public actual val wireGuardConnectionKeyManager: WireGuardConnectionKeyManager public actual val tunnelManager: TunnelManager