mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-19 23:12:12 +02:00
Add logging for CHOOSE_USER interaction
This commit is contained in:
@@ -853,6 +853,42 @@ public abstract class BluetoothStandardWeightProfile extends BluetoothCommunicat
|
||||
choiceStrings[userList.size()] = context.getString(R.string.bluetooth_scale_info_create_user_instruction);
|
||||
indexArray[userList.size()] = -1;
|
||||
}
|
||||
|
||||
if (choiceStrings != null && indexArray != null) {
|
||||
StringBuilder logMessage = new StringBuilder("Preparing CHOOSE_USER interaction. ");
|
||||
logMessage.append("choiceStrings (length: ").append(choiceStrings.length).append("): [");
|
||||
for (int i = 0; i < choiceStrings.length; i++) {
|
||||
logMessage.append("'").append(choiceStrings[i]).append("'");
|
||||
if (i < choiceStrings.length - 1) {
|
||||
logMessage.append(", ");
|
||||
}
|
||||
}
|
||||
logMessage.append("]. ");
|
||||
|
||||
logMessage.append("indexArray (length: ").append(indexArray.length).append("): [");
|
||||
for (int i = 0; i < indexArray.length; i++) {
|
||||
logMessage.append(indexArray[i]);
|
||||
if (i < indexArray.length - 1) {
|
||||
logMessage.append(", ");
|
||||
}
|
||||
}
|
||||
logMessage.append("].");
|
||||
LogManager.d(TAG, logMessage.toString());
|
||||
|
||||
// Check for potential issues that might lead to UI errors
|
||||
if (choiceStrings.length != indexArray.length) {
|
||||
LogManager.w(TAG, "CHOOSE_USER: Mismatch in lengths: choiceStrings (" + choiceStrings.length +
|
||||
") vs indexArray (" + indexArray.length + ").", null);
|
||||
}
|
||||
if (choiceStrings.length == 0) {
|
||||
LogManager.w(TAG, "CHOOSE_USER: choiceStrings array is empty. No options will be presented to the user.", null);
|
||||
}
|
||||
|
||||
} else {
|
||||
// This is a critical error state if either array is null
|
||||
LogManager.e(TAG, "CHOOSE_USER: choiceStrings or indexArray is null. Cannot request user interaction.", null);
|
||||
}
|
||||
|
||||
Pair<CharSequence[], int[]> choices = new Pair(choiceStrings, indexArray);
|
||||
requestUserInteraction(UserInteractionType.CHOOSE_USER, choices);
|
||||
}
|
||||
|
@@ -19,6 +19,8 @@ package com.health.openscale.ui.navigation
|
||||
|
||||
import android.app.Application
|
||||
import android.content.res.Resources
|
||||
import android.net.http.SslCertificate.restoreState
|
||||
import android.net.http.SslCertificate.saveState
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@@ -108,6 +110,7 @@ import com.health.openscale.R
|
||||
import com.health.openscale.core.bluetooth.BluetoothEvent.UserInteractionType
|
||||
import com.health.openscale.core.bluetooth.scalesJava.BluetoothCommunication
|
||||
import com.health.openscale.core.data.User
|
||||
import com.health.openscale.core.utils.LogManager
|
||||
import com.health.openscale.ui.navigation.Routes.getIconForRoute
|
||||
import com.health.openscale.ui.screen.SharedViewModel
|
||||
import com.health.openscale.ui.screen.bluetooth.BluetoothViewModel
|
||||
@@ -146,6 +149,7 @@ import kotlinx.coroutines.launch
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun AppNavigation(sharedViewModel: SharedViewModel) {
|
||||
val TAG = "AppNavigation"
|
||||
val context = LocalContext.current
|
||||
val resources = context.resources // Get resources for non-composable string access
|
||||
val application = context.applicationContext as Application
|
||||
@@ -294,13 +298,18 @@ fun AppNavigation(sharedViewModel: SharedViewModel) {
|
||||
when (interactionEvent.interactionType) {
|
||||
UserInteractionType.CHOOSE_USER -> {
|
||||
val choicesData = interactionEvent.data
|
||||
// Wir erwarten Pair<Array<String>, IntArray> oder Pair<Array<CharSequence>, IntArray>
|
||||
LogManager.d(TAG, "CHOOSE_USER interaction received. Data: $choicesData")
|
||||
|
||||
// Expecting Pair<Array<String>, IntArray> or Pair<Array<CharSequence>, IntArray>
|
||||
if (choicesData is Pair<*, *> && choicesData.first is Array<*> && choicesData.second is IntArray) {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val choices = choicesData as Pair<Array<CharSequence>, IntArray>
|
||||
val choiceDisplayNames = choices.first
|
||||
val choiceIndices = choices.second
|
||||
|
||||
LogManager.d(TAG, "CHOOSE_USER: DisplayNames (length ${choiceDisplayNames.size}): ${choiceDisplayNames.joinToString { "'$it'" }}")
|
||||
LogManager.d(TAG, "CHOOSE_USER: Indices (length ${choiceIndices.size}): ${choiceIndices.joinToString()}")
|
||||
|
||||
if (choiceDisplayNames.isNotEmpty() && choiceDisplayNames.size == choiceIndices.size) {
|
||||
LazyColumn(modifier = Modifier.padding(top = 8.dp)) {
|
||||
itemsIndexed(choiceDisplayNames) { itemIndex, choiceName ->
|
||||
@@ -309,7 +318,10 @@ fun AppNavigation(sharedViewModel: SharedViewModel) {
|
||||
.fillMaxWidth()
|
||||
.selectable(
|
||||
selected = (choiceIndices[itemIndex] == selectedUserIndexState),
|
||||
onClick = { selectedUserIndexState = choiceIndices[itemIndex] }
|
||||
onClick = {
|
||||
selectedUserIndexState =
|
||||
choiceIndices[itemIndex]
|
||||
}
|
||||
)
|
||||
.padding(vertical = 8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
|
Reference in New Issue
Block a user