Skip to content

Commit 5c2a6d7

Browse files
committed
Remove non-null assumption in electrum controller
The electrum controller assumes that the app connection daemon is always initialized, which may not be the case and can trigger crashes. Instead the model will just provide a null server if the connection is unavailable which is correct and also prevents crashes.
1 parent 21032fe commit 5c2a6d7

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/controllers/config/ElectrumConfigurationController.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import fr.acinq.phoenix.managers.AppConnectionsDaemon
77
import fr.acinq.phoenix.controllers.AppController
88
import kotlinx.coroutines.flow.collect
99
import kotlinx.coroutines.flow.combine
10+
import kotlinx.coroutines.flow.flow
1011
import kotlinx.coroutines.launch
1112
import org.kodein.log.LoggerFactory
1213

@@ -15,7 +16,7 @@ class AppElectrumConfigurationController(
1516
loggerFactory: LoggerFactory,
1617
private val configurationManager: AppConfigurationManager,
1718
private val electrumClient: ElectrumClient,
18-
private val appConnectionsDaemon: AppConnectionsDaemon
19+
private val appConnectionsDaemon: AppConnectionsDaemon?
1920
) : AppController<ElectrumConfiguration.Model, ElectrumConfiguration.Intent>(
2021
loggerFactory = loggerFactory,
2122
firstModel = ElectrumConfiguration.Model()
@@ -24,14 +25,14 @@ class AppElectrumConfigurationController(
2425
loggerFactory = business.loggerFactory,
2526
configurationManager = business.appConfigurationManager,
2627
electrumClient = business.electrumClient,
27-
appConnectionsDaemon = business.appConnectionsDaemon!!
28+
appConnectionsDaemon = business.appConnectionsDaemon
2829
)
2930

3031
init {
3132
launch {
3233
combine(
3334
configurationManager.electrumConfig,
34-
appConnectionsDaemon.lastElectrumServerAddress,
35+
appConnectionsDaemon?.lastElectrumServerAddress ?: flow { null },
3536
electrumClient.connectionStatus,
3637
configurationManager.electrumMessages,
3738
transform = { configState, currentServer, connectionStatus, message ->

0 commit comments

Comments
 (0)