Skip to content

Commit dbd1283

Browse files
committed
Simplify checking for air-gapped status: remove it from EnterpriseService, check in DefaultNetworkMonitor if the build is enterprise before updating the value.
1 parent 24fa6b3 commit dbd1283

File tree

5 files changed

+10
-17
lines changed

5 files changed

+10
-17
lines changed

features/enterprise/api/src/main/kotlin/io/element/android/features/enterprise/api/EnterpriseService.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,6 @@ interface EnterpriseService {
4040
*/
4141
fun getNoisyNotificationChannelId(sessionId: SessionId): String?
4242

43-
/**
44-
* Checks if the app is running in an air-gapped environment. An air-gapped environment is an environment that is not connected to the internet,
45-
* and where the app can only communicate with a limited set of servers.
46-
*/
47-
fun isInAirGappedEnvironment(): Flow<Boolean>
48-
4943
companion object {
5044
const val ANY_ACCOUNT_PROVIDER = "*"
5145
}

features/enterprise/impl-foss/src/main/kotlin/io/element/android/features/enterprise/impl/DefaultEnterpriseService.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,4 @@ class DefaultEnterpriseService : EnterpriseService {
4545
}
4646

4747
override fun getNoisyNotificationChannelId(sessionId: SessionId): String? = null
48-
49-
// Act as no-op
50-
override fun isInAirGappedEnvironment(): Flow<Boolean> = flowOf(false)
5148
}

features/enterprise/test/src/main/kotlin/io/element/android/features/enterprise/test/FakeEnterpriseService.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ class FakeEnterpriseService(
3030
private val firebasePushGatewayResult: () -> String? = { lambdaError() },
3131
private val unifiedPushDefaultPushGatewayResult: () -> String? = { lambdaError() },
3232
private val getNoisyNotificationChannelIdResult: (SessionId?) -> String? = { lambdaError() },
33-
private val isInAirGappedEnvironmentResult: () -> Flow<Boolean> = { lambdaError() },
3433
) : EnterpriseService {
3534
private val brandColorState = MutableStateFlow(initialBrandColor)
3635
private val semanticColorsState = MutableStateFlow(initialSemanticColors)
@@ -75,8 +74,4 @@ class FakeEnterpriseService(
7574
override fun getNoisyNotificationChannelId(sessionId: SessionId): String? {
7675
return getNoisyNotificationChannelIdResult(sessionId)
7776
}
78-
79-
override fun isInAirGappedEnvironment(): Flow<Boolean> {
80-
return isInAirGappedEnvironmentResult()
81-
}
8277
}

features/networkmonitor/impl/src/main/kotlin/io/element/android/features/networkmonitor/impl/DefaultNetworkMonitor.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import dev.zacsweers.metro.ContributesBinding
2020
import dev.zacsweers.metro.SingleIn
2121
import io.element.android.features.networkmonitor.api.NetworkMonitor
2222
import io.element.android.features.networkmonitor.api.NetworkStatus
23+
import io.element.android.libraries.core.meta.BuildMeta
2324
import io.element.android.libraries.di.annotations.AppCoroutineScope
2425
import io.element.android.libraries.di.annotations.ApplicationContext
2526
import kotlinx.coroutines.CoroutineScope
@@ -42,6 +43,7 @@ import java.util.concurrent.atomic.AtomicInteger
4243
class DefaultNetworkMonitor(
4344
@ApplicationContext context: Context,
4445
@AppCoroutineScope appCoroutineScope: CoroutineScope,
46+
private val buildMeta: BuildMeta,
4547
) : NetworkMonitor {
4648
private val connectivityManager: ConnectivityManager = context.getSystemService(ConnectivityManager::class.java)
4749

@@ -73,6 +75,11 @@ class DefaultNetworkMonitor(
7375
}
7476

7577
override fun onCapabilitiesChanged(network: Network, networkCapabilities: NetworkCapabilities) {
78+
if (!buildMeta.isEnterpriseBuild) {
79+
// The air-gapped environment detection is only relevant for the enterprise build.
80+
return
81+
}
82+
7683
if (network.networkHandle == connectivityManager.activeNetwork?.networkHandle) {
7784
// If the network doesn't have the NET_CAPABILITY_VALIDATED capability, it means that the network is not able to reach the internet
7885
// (according to Google), which is a common case in air-gapped environments.

libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/workmanager/SyncPendingNotificationsRequestBuilder.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import dev.zacsweers.metro.Assisted
2222
import dev.zacsweers.metro.AssistedFactory
2323
import dev.zacsweers.metro.AssistedInject
2424
import dev.zacsweers.metro.ContributesBinding
25-
import io.element.android.features.enterprise.api.EnterpriseService
25+
import io.element.android.features.networkmonitor.api.NetworkMonitor
2626
import io.element.android.libraries.featureflag.api.FeatureFlagService
2727
import io.element.android.libraries.featureflag.api.FeatureFlags
2828
import io.element.android.libraries.matrix.api.core.SessionId
@@ -50,7 +50,7 @@ interface SyncPendingNotificationsRequestBuilder : WorkManagerRequestBuilder {
5050
class DefaultSyncPendingNotificationsRequestBuilder(
5151
@Assisted private val sessionId: SessionId,
5252
private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider,
53-
private val enterpriseService: EnterpriseService,
53+
private val networkMonitor: NetworkMonitor,
5454
private val featureFlagService: FeatureFlagService,
5555
) : SyncPendingNotificationsRequestBuilder {
5656
@AssistedFactory
@@ -77,7 +77,7 @@ class DefaultSyncPendingNotificationsRequestBuilder(
7777

7878
// If we're in an air-gapped environment, we shouldn't validate internet connectivity, as the checker will fail and the worker won't run at all.
7979
// Note this will always be false for FOSS, since the feature is only enabled in Element Pro.
80-
if (enterpriseService.isInAirGappedEnvironment().first()) {
80+
if (networkMonitor.isInAirGappedEnvironment.first()) {
8181
Timber.d("In an air-gapped environment, not adding NET_CAPABILITY_VALIDATED to the network request")
8282
networkRequestBuilder.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
8383
} else if (featureFlagService.isFeatureEnabled(FeatureFlags.ValidateNetworkWhenSchedulingNotificationFetching)) {

0 commit comments

Comments
 (0)