Skip to content

Commit e25a0ae

Browse files
authored
[Improvement] Handling invalid Project Key (#195)
* Updating to nRFCDM 3.3.1 * Logging moved to the Observability manager * Handling invalid Project Key
1 parent ef289c9 commit e25a0ae

4 files changed

Lines changed: 24 additions & 6 deletions

File tree

profile/src/main/java/no/nordicsemi/android/toolbox/profile/view/mds/MDSScreen.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.runtime.getValue
99
import androidx.compose.ui.Modifier
1010
import androidx.compose.ui.res.pluralStringResource
1111
import androidx.compose.ui.res.stringResource
12+
import androidx.compose.ui.text.font.FontWeight
1213
import androidx.compose.ui.tooling.preview.Preview
1314
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
1415
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -42,12 +43,18 @@ private fun ObservabilityView(
4243
modifier: Modifier = Modifier,
4344
) {
4445
val status = when (state.state) {
45-
is ChunksEmitter.State.Disconnected -> stringResource(R.string.mds_disconnected)
46+
is ChunksEmitter.State.Disconnected -> {
47+
when (state.uploadingState) {
48+
is ChunksUploader.State.Unauthorized -> stringResource(R.string.mds_unauthorized)
49+
else -> stringResource(R.string.mds_disconnected)
50+
}
51+
}
4652
is ChunksEmitter.State.Initializing -> stringResource(R.string.mds_connecting)
4753
is ChunksEmitter.State.Ready -> {
4854
when (val u = state.uploadingState) {
4955
is ChunksUploader.State.Idle -> stringResource(R.string.mds_connected)
5056
is ChunksUploader.State.InProgress -> stringResource(R.string.mds_uploading)
57+
is ChunksUploader.State.Unauthorized -> stringResource(R.string.mds_unauthorized)
5158
is ChunksUploader.State.Suspended -> stringResource(R.string.mds_suspended, u.delayInSeconds)
5259
}
5360
}
@@ -59,10 +66,14 @@ private fun ObservabilityView(
5966
SectionTitle(
6067
icon = Icons.Default.DeveloperBoard,
6168
title = stringResource(id = R.string.mds_title),
69+
tint = if (state.uploadingState is ChunksUploader.State.Unauthorized)
70+
MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.primary
6271
)
6372
Text(
6473
text = status,
6574
style = MaterialTheme.typography.bodyLarge,
75+
fontWeight = if (state.uploadingState is ChunksUploader.State.Unauthorized) FontWeight.Bold else FontWeight.Normal,
76+
color = if (state.uploadingState is ChunksUploader.State.Unauthorized) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.onSurface,
6677
)
6778
SectionRow {
6879
KeyValueColumn(

profile/src/main/res/values/mdsStrings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@
1515
<string name="mds_suspended">Suspended for %ds</string>
1616
<string name="mds_connecting">Connecting…</string>
1717
<string name="mds_disconnected">Disconnected</string>
18+
<string name="mds_unauthorized">Unauthorized: Invalid Project Key</string>
1819
</resources>

profile_manager/src/main/java/no/nordicsemi/android/toolbox/profile/manager/MDSManager.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,23 @@ class MDSManager(
2020
private val tag = "MDS ($deviceId)"
2121

2222
val manager: ObservabilityManager = ObservabilityManager.create(context)
23+
.apply {
24+
logger = Log.Sink { _, l, _, t, messageBuilder ->
25+
when (l) {
26+
Log.Level.WARN -> Timber.tag(tag).w(messageBuilder())
27+
Log.Level.ERROR -> Timber.tag(tag).e(messageBuilder())
28+
Log.Level.ASSERT -> Timber.tag(tag).wtf(messageBuilder())
29+
else -> Timber.tag(tag).log(LogContract.Log.Level.APPLICATION, t, messageBuilder())
30+
}
31+
}
32+
}
2333

2434
// MonitoringAndDiagnosticsProfile is a class, so MDSManager can't extend it.
2535
// Instead, let's just all `prepare` and `initialize` protected methods from this profile.
2636
// We must override the class to make them visible from outside.
2737
private val impl = object : MonitoringAndDiagnosticsProfile() {
2838
public override fun prepare(service: RemoteService) = super.prepare(service)
2939
suspend fun run(scope: CoroutineScope) = scope.initialize()
30-
}.apply {
31-
logger = Log.Sink { _, _, _, t, messageBuilder ->
32-
Timber.tag(tag).log(LogContract.Log.Level.APPLICATION, t, messageBuilder())
33-
}
3440
}
3541

3642
override fun prepare(service: RemoteService) {

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ dependencyResolutionManagement {
5656
}
5757
// Fixed versions for Nordic libraries.
5858
create("nordic") {
59-
from("no.nordicsemi.gradle:nordic-version-catalog:2026.07.01")
59+
from("no.nordicsemi.gradle:nordic-version-catalog:2026.07.02")
6060
}
6161
}
6262
}

0 commit comments

Comments
 (0)