mirror of
https://github.com/aljazceru/Android-nRF-Toolbox.git
synced 2025-12-24 01:44:23 +01:00
Add logger icon to AppBar
This commit is contained in:
@@ -10,6 +10,7 @@ import no.nordicsemi.android.ble.ktx.suspend
|
||||
import no.nordicsemi.android.hrs.data.HRSData
|
||||
import no.nordicsemi.android.hrs.data.HRSManager
|
||||
import no.nordicsemi.android.logger.ToolboxLogger
|
||||
import no.nordicsemi.android.logger.ToolboxLoggerFactory
|
||||
import no.nordicsemi.android.service.BleManagerResult
|
||||
import no.nordicsemi.android.service.ConnectingResult
|
||||
import no.nordicsemi.android.service.ServiceManager
|
||||
@@ -20,9 +21,11 @@ import javax.inject.Singleton
|
||||
class HRSRepository @Inject constructor(
|
||||
@ApplicationContext
|
||||
private val context: Context,
|
||||
private val serviceManager: ServiceManager
|
||||
private val serviceManager: ServiceManager,
|
||||
private val toolboxLoggerFactory: ToolboxLoggerFactory
|
||||
) {
|
||||
private var manager: HRSManager? = null
|
||||
private var logger: ToolboxLogger? = null
|
||||
|
||||
private val _data = MutableStateFlow<BleManagerResult<HRSData>>(ConnectingResult())
|
||||
internal val data = _data.asStateFlow()
|
||||
@@ -35,7 +38,10 @@ class HRSRepository @Inject constructor(
|
||||
}
|
||||
|
||||
fun start(device: BluetoothDevice, scope: CoroutineScope) {
|
||||
val manager = HRSManager(context, scope, ToolboxLogger(context, "HRS", device.address))
|
||||
val createdLogger = toolboxLoggerFactory.create("HRS", device.address).also {
|
||||
logger = it
|
||||
}
|
||||
val manager = HRSManager(context, scope, createdLogger)
|
||||
this.manager = manager
|
||||
|
||||
manager.dataHolder.status.onEach {
|
||||
@@ -47,6 +53,10 @@ class HRSRepository @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun openLogger() {
|
||||
logger?.openLogger()
|
||||
}
|
||||
|
||||
private suspend fun HRSManager.start(device: BluetoothDevice) {
|
||||
try {
|
||||
connect(device)
|
||||
@@ -60,6 +70,7 @@ class HRSRepository @Inject constructor(
|
||||
|
||||
fun release() {
|
||||
manager?.disconnect()?.enqueue()
|
||||
logger = null
|
||||
manager = null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import no.nordicsemi.android.hrs.R
|
||||
import no.nordicsemi.android.hrs.viewmodel.HRSViewModel
|
||||
import no.nordicsemi.android.service.*
|
||||
import no.nordicsemi.android.theme.view.BackIconAppBar
|
||||
import no.nordicsemi.android.theme.view.LoggerIconAppBar
|
||||
import no.nordicsemi.ui.scanner.ui.DeviceConnectingView
|
||||
import no.nordicsemi.ui.scanner.ui.NoDeviceView
|
||||
import no.nordicsemi.android.utils.exhaustive
|
||||
@@ -26,7 +27,9 @@ fun HRSScreen() {
|
||||
Column {
|
||||
val navigateUp = { viewModel.onEvent(NavigateUpEvent) }
|
||||
|
||||
BackIconAppBar(stringResource(id = R.string.hrs_title), navigateUp)
|
||||
LoggerIconAppBar(stringResource(id = R.string.hrs_title), navigateUp) {
|
||||
viewModel.onEvent(OpenLoggerEvent)
|
||||
}
|
||||
|
||||
Column(modifier = Modifier.verticalScroll(rememberScrollState())) {
|
||||
when (state) {
|
||||
|
||||
@@ -5,3 +5,5 @@ internal sealed class HRSScreenViewEvent
|
||||
internal object DisconnectEvent : HRSScreenViewEvent()
|
||||
|
||||
internal object NavigateUpEvent : HRSScreenViewEvent()
|
||||
|
||||
internal object OpenLoggerEvent : HRSScreenViewEvent()
|
||||
|
||||
@@ -56,6 +56,7 @@ internal class HRSViewModel @Inject constructor(
|
||||
when (event) {
|
||||
DisconnectEvent -> disconnect()
|
||||
NavigateUpEvent -> navigationManager.navigateUp()
|
||||
OpenLoggerEvent -> repository.openLogger()
|
||||
}.exhaustive
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user