fix: add @Singleton annotation to RadioInterfaceService

- ensure only one RadioInterfaceService instance is created and used throughout the app
- fix multiple startInterface() calls when Bluetooth is enabled
master
andrekir 2023-03-03 11:03:43 -03:00
rodzic af287c2e6f
commit 054d2330a4
1 zmienionych plików z 4 dodań i 2 usunięć

Wyświetl plik

@ -22,6 +22,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.asStateFlow
import javax.inject.Inject
import javax.inject.Singleton
/**
@ -33,6 +34,7 @@ import javax.inject.Inject
* Note - this class intentionally dumb. It doesn't understand protobuf framing etc...
* It is designed to be simple so it can be stubbed out with a simulated version as needed.
*/
@Singleton
class RadioInterfaceService @Inject constructor(
private val context: Application,
private val dispatchers: CoroutineDispatchers,
@ -72,8 +74,8 @@ class RadioInterfaceService @Inject constructor(
init {
processLifecycle.coroutineScope.launch {
bluetoothRepository.state.collect { state ->
if (state.enabled) {
// startInterface() FIXME no longer safe to call here, crashing SafeBluetooth.asyncConnect
if (state.enabled && !isStarted) {
startInterface()
} else if (radioIf is BluetoothInterface) {
stopInterface()
}