Add logger icon to AppBar

This commit is contained in:
Sylwester Zieliński
2022-04-04 13:35:00 +02:00
parent 6ffbd9b07b
commit 39adf9149a
45 changed files with 311 additions and 39 deletions

View File

@@ -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
}
}

View File

@@ -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) {

View File

@@ -5,3 +5,5 @@ internal sealed class HRSScreenViewEvent
internal object DisconnectEvent : HRSScreenViewEvent()
internal object NavigateUpEvent : HRSScreenViewEvent()
internal object OpenLoggerEvent : HRSScreenViewEvent()

View File

@@ -56,6 +56,7 @@ internal class HRSViewModel @Inject constructor(
when (event) {
DisconnectEvent -> disconnect()
NavigateUpEvent -> navigationManager.navigateUp()
OpenLoggerEvent -> repository.openLogger()
}.exhaustive
}