Skip to content

Commit 0897620

Browse files
authored
enhancement/node_localhost_setup (#352)
fixes #351
1 parent 594e551 commit 0897620

File tree

4 files changed

+37
-8
lines changed

4 files changed

+37
-8
lines changed

androidNode/src/androidMain/kotlin/network/bisq/mobile/android/node/MainApplication.kt

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,20 @@ import android.os.Process
66
import bisq.common.facades.FacadeProvider
77
import bisq.common.facades.android.AndroidGuavaFacade
88
import bisq.common.facades.android.AndroidJdkFacade
9-
import bisq.common.network.AndroidEmulatorLocalhostFacade
9+
import bisq.common.network.ClearNetAndroidEmulatorLocalAddressFacade
10+
import bisq.common.network.ClearNetLANLocalAddressFacade
1011
import network.bisq.mobile.android.node.di.androidNodeModule
1112
import network.bisq.mobile.domain.di.domainModule
1213
import network.bisq.mobile.domain.di.serviceModule
14+
import network.bisq.mobile.domain.utils.Logging
1315
import network.bisq.mobile.presentation.di.presentationModule
1416
import org.bouncycastle.jce.provider.BouncyCastleProvider
1517
import org.koin.android.ext.koin.androidContext
1618
import org.koin.core.context.startKoin
1719
import org.koin.core.context.stopKoin
1820
import java.security.Security
1921

20-
class MainApplication : Application() {
22+
class MainApplication : Application(), Logging {
2123
companion object {
2224
private val nodeModules = listOf(domainModule, serviceModule, presentationModule, androidNodeModule)
2325

@@ -38,13 +40,31 @@ class MainApplication : Application() {
3840
}
3941

4042
private fun setupBisqCoreStatics() {
41-
FacadeProvider.setLocalhostFacade(AndroidEmulatorLocalhostFacade())
43+
val isEmulator = isEmulator()
44+
val clearNetFacade = if (isEmulator) {
45+
ClearNetAndroidEmulatorLocalAddressFacade()
46+
} else {
47+
ClearNetLANLocalAddressFacade()
48+
}
49+
FacadeProvider.setLocalhostFacade(clearNetFacade)
4250
FacadeProvider.setJdkFacade(AndroidJdkFacade(Process.myPid()))
4351
FacadeProvider.setGuavaFacade(AndroidGuavaFacade())
4452

4553
// Androids default BC version does not support all algorithms we need, thus we remove
4654
// it and add our BC provider
4755
Security.removeProvider("BC")
4856
Security.addProvider(BouncyCastleProvider())
57+
log.d { "Configured bisq2 for Android${if (isEmulator) " emulator" else ""}" }
58+
}
59+
60+
private fun isEmulator(): Boolean {
61+
return android.os.Build.FINGERPRINT.startsWith("generic")
62+
|| android.os.Build.FINGERPRINT.startsWith("unknown")
63+
|| android.os.Build.MODEL.contains("google_sdk")
64+
|| android.os.Build.MODEL.contains("Emulator")
65+
|| android.os.Build.MODEL.contains("Android SDK built for x86")
66+
|| android.os.Build.MANUFACTURER.contains("Genymotion")
67+
|| (android.os.Build.BRAND.startsWith("generic") && android.os.Build.DEVICE.startsWith("generic"))
68+
|| "google_sdk".equals(android.os.Build.PRODUCT);
4969
}
5070
}

androidNode/src/androidMain/kotlin/network/bisq/mobile/android/node/mapping/Mappings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1223,7 +1223,7 @@ class Mappings {
12231223
settingsService.supportedLanguageCodes,
12241224
settingsService.maxTradePriceDeviation.get(),
12251225
settingsService.useAnimations.get(),
1226-
MarketMapping.fromBisq2Model(settingsService.selectedMarket.get()),
1226+
MarketMapping.fromBisq2Model(settingsService.selectedMuSigMarket.get()),
12271227
settingsService.numDaysAfterRedactingTradeData.get()
12281228
)
12291229
}

androidNode/src/androidMain/kotlin/network/bisq/mobile/android/node/service/network/NodeConnectivityService.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,13 @@ class NodeConnectivityService(private val applicationService: AndroidApplication
3131
}
3232

3333
private fun currentConnections(): Int {
34-
return applicationService.networkService.get()
35-
.serviceNodesByTransport.allServiceNodes
36-
.sumOf { it.defaultNode?.numConnections ?: 0 }
34+
try {
35+
return applicationService.networkService.get()
36+
.serviceNodesByTransport.allServiceNodes
37+
.sumOf { it.defaultNode?.numConnections ?: 0 }
38+
} catch (e: Exception) {
39+
log.e(e) { "Failed to check current connections, assuming none: ${e.message}" }
40+
return 0
41+
}
3742
}
3843
}

androidNode/src/androidMain/kotlin/network/bisq/mobile/android/node/service/settings/NodeSettingsServiceFacade.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ class NodeSettingsServiceFacade(applicationService: AndroidApplicationService.Pr
150150

151151
// API
152152
override suspend fun getSettings(): Result<SettingsVO> {
153-
return Result.success(Mappings.SettingsMapping.from(settingsService))
153+
return try {
154+
Result.success(Mappings.SettingsMapping.from(settingsService))
155+
} catch (e: Exception) {
156+
Result.failure(e)
157+
}
154158
}
155159
}

0 commit comments

Comments
 (0)