fix(mobile): stabilize finding creation and narrow-screen actions
Android CI / RC / Android · lint, tests, debug APK, release compile (push) Successful in 3m3s
DH V2 CI / API · typecheck, tests, build (push) Successful in 34s
DH V2 CI / WEB · typecheck, build (push) Successful in 18s
Production dependency audit / API · production dependencies (push) Successful in 9s
Production dependency audit / WEB · production dependencies (push) Successful in 9s
DH V2 CI / Docker / scripts contract (push) Successful in 1m3s

This commit is contained in:
DH V2
2026-09-15 00:10:18 -03:00
parent 9eef156197
commit a2ec846721
12 changed files with 100 additions and 31 deletions
+2 -2
View File
@@ -12,8 +12,8 @@ android {
applicationId = "com.korexlabs.dhinspeccion"
minSdk = 26
targetSdk = 36
versionCode = 35
versionName = "0.19.7"
versionCode = 36
versionName = "0.19.8"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@@ -238,13 +238,18 @@ fun FieldFindingScreen(model: MainViewModel) {
style = MaterialTheme.typography.bodySmall,
)
}
val photoCount = evidence.count { it.kind == "PHOTO" }
Button(
onClick = { requestPhoto(finding.id) },
enabled = !model.busy,
modifier = Modifier.fillMaxWidth(),
) {
Text("Tomar foto con GPS")
Text(if (photoCount == 0) "Agregar foto con GPS" else "Agregar otra foto con GPS")
}
Text(
if (photoCount == 0) "Podés adjuntar una o varias fotos." else "$photoCount foto${if (photoCount == 1) "" else "s"} adjunta${if (photoCount == 1) "" else "s"}. Podés seguir agregando.",
style = MaterialTheme.typography.bodySmall,
)
}
}
}
@@ -365,7 +370,8 @@ fun FieldFindingScreen(model: MainViewModel) {
label = { Text("Qué observaste *") },
placeholder = { Text("Describí brevemente el problema") },
modifier = Modifier.fillMaxWidth(),
singleLine = true,
minLines = 3,
maxLines = 6,
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(onNext = { focusManager.moveFocus(FocusDirection.Down) }),
)
@@ -405,13 +411,19 @@ fun FieldFindingScreen(model: MainViewModel) {
Column(Modifier.padding(12.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) {
Text("Hallazgo registrado", fontWeight = FontWeight.Bold)
Text("${finding.code} · ${finding.title}")
val createdEvidence = model.fieldFindingEvidence[finding.id].orEmpty()
val createdPhotoCount = createdEvidence.count { it.kind == "PHOTO" }
Button(
onClick = { requestPhoto(finding.id) },
enabled = !model.busy,
modifier = Modifier.fillMaxWidth(),
) {
Text("Tomar foto con GPS")
Text(if (createdPhotoCount == 0) "Agregar foto con GPS" else "Agregar otra foto con GPS")
}
Text(
if (createdPhotoCount == 0) "Podés adjuntar todas las fotos que necesites." else "Fotos adjuntas: $createdPhotoCount. Podés seguir agregando.",
style = MaterialTheme.typography.bodySmall,
)
Text("También podés registrar otro Hallazgo sobre el mismo Inventario.", style = MaterialTheme.typography.bodySmall)
}
}
@@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
@@ -86,21 +85,33 @@ fun MobileHomeScreen(model: MainViewModel) {
}
Column(Modifier.fillMaxSize().padding(top = 28.dp)) {
Row(
Column(
Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 10.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
Column {
Text("Mis inspecciones", style = MaterialTheme.typography.headlineSmall, fontWeight = FontWeight.Bold)
Text(session.displayName, style = MaterialTheme.typography.bodySmall)
}
Row {
OutlinedButton(onClick = { model.loadVisits() }, enabled = !model.busy && !opening) {
Text("Actualizar")
Row(
Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
OutlinedButton(
onClick = { model.loadVisits() },
enabled = !model.busy && !opening,
modifier = Modifier.weight(1f),
) {
Text("Actualizar", maxLines = 1)
}
OutlinedButton(
onClick = { model.logout() },
enabled = !opening,
modifier = Modifier.weight(1f),
) {
Text("Salir", maxLines = 1)
}
Spacer(Modifier.width(8.dp))
OutlinedButton(onClick = { model.logout() }, enabled = !opening) { Text("Salir") }
}
}
@@ -8,8 +8,8 @@ class ReleaseMetadataTest {
@Test
fun debugBuildKeepsSeparateApplicationIdentity() {
assertEquals("com.korexlabs.dhinspeccion.debug", BuildConfig.APPLICATION_ID)
assertEquals(35, BuildConfig.VERSION_CODE)
assertEquals("0.19.7-debug", BuildConfig.VERSION_NAME)
assertEquals(36, BuildConfig.VERSION_CODE)
assertEquals("0.19.8-debug", BuildConfig.VERSION_NAME)
}
@Test