Add Android about screen

This commit is contained in:
2026-04-23 08:54:13 -05:00
parent 62cb604412
commit 2cbd0f2ca3
6 changed files with 61 additions and 9 deletions
+7 -1
View File
@@ -2,10 +2,16 @@
## Versión actual ## Versión actual
- Versión base: `1.0.4` - Versión base: `1.1.0`
## Historial ## Historial
### 1.1.0 - 2026-04-23
- Se agrega pantalla About en Android con versión y texto de uso.
- Se actualiza el encabezado Android a la marca solicitada.
- Se reduce la altura del menú inferior Android sin cambiar el tamaño de los íconos.
### 1.0.4 - 2026-04-23 ### 1.0.4 - 2026-04-23
- Se muestra la versión de LinkedSign en el inicio de sesión web y Android. - Se muestra la versión de LinkedSign en el inicio de sesión web y Android.
+1 -1
View File
@@ -1 +1 @@
1.0.4 1.1.0
+2 -2
View File
@@ -18,8 +18,8 @@ android {
applicationId "net.linkedcorp.linkedsign" applicationId "net.linkedcorp.linkedsign"
minSdk 26 minSdk 26
targetSdk 35 targetSdk 35
versionCode 10004 versionCode 10100
versionName "1.0.4" versionName "1.1.0"
buildConfigField "String", "API_BASE_URL", "\"${apiBaseUrl}\"" buildConfigField "String", "API_BASE_URL", "\"${apiBaseUrl}\""
} }
@@ -54,6 +54,7 @@ import androidx.compose.material.icons.outlined.Draw
import androidx.compose.material.icons.outlined.Delete import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.Fingerprint import androidx.compose.material.icons.outlined.Fingerprint
import androidx.compose.material.icons.outlined.FolderOpen import androidx.compose.material.icons.outlined.FolderOpen
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material.icons.outlined.Lock import androidx.compose.material.icons.outlined.Lock
import androidx.compose.material.icons.outlined.Logout import androidx.compose.material.icons.outlined.Logout
import androidx.compose.material.icons.outlined.PictureAsPdf import androidx.compose.material.icons.outlined.PictureAsPdf
@@ -162,7 +163,7 @@ private val CardGlow = Brush.linearGradient(
private const val SignatureHeight = 60 private const val SignatureHeight = 60
private enum class AuthMode { Login } private enum class AuthMode { Login }
private enum class AppTab(val title: String) { Documents("Documentos"), Sign("Firmar"), Certificates("Certificados") } private enum class AppTab(val title: String) { Documents("Documentos"), Sign("Firmar"), Certificates("Certificados"), About("About") }
private data class PdfPreviewState( private data class PdfPreviewState(
val file: File, val file: File,
@@ -240,7 +241,7 @@ fun LinkedSignApp(viewModel: MainViewModel, appContext: Context, activity: Compo
} }
Column(verticalArrangement = Arrangement.spacedBy(1.dp)) { Column(verticalArrangement = Arrangement.spacedBy(1.dp)) {
Text(selectedTab.title, fontWeight = FontWeight.SemiBold, color = Color.White) Text(selectedTab.title, fontWeight = FontWeight.SemiBold, color = Color.White)
Text("Firma electrónica", fontSize = AppFontSizes.xs, color = Color(0xFF90CAF9)) Text("LinkedSign @by LindedCorp", fontSize = AppFontSizes.xs, color = Color(0xFF90CAF9))
} }
} }
}, },
@@ -267,13 +268,15 @@ fun LinkedSignApp(viewModel: MainViewModel, appContext: Context, activity: Compo
bottomBar = { bottomBar = {
if (state.authenticated) { if (state.authenticated) {
NavigationBar( NavigationBar(
modifier = Modifier.height(44.dp),
containerColor = Color.White, containerColor = Color.White,
tonalElevation = 0.dp tonalElevation = 0.dp
) { ) {
val tabs = listOf( val tabs = listOf(
AppTab.Documents to Icons.Outlined.Description, AppTab.Documents to Icons.Outlined.Description,
AppTab.Sign to Icons.Outlined.Draw, AppTab.Sign to Icons.Outlined.Draw,
AppTab.Certificates to Icons.Outlined.Badge AppTab.Certificates to Icons.Outlined.Badge,
AppTab.About to Icons.Outlined.Info
) )
tabs.forEach { (tab, icon) -> tabs.forEach { (tab, icon) ->
NavigationBarItem( NavigationBarItem(
@@ -648,6 +651,49 @@ private fun AppFlow(
onSign = onSign onSign = onSign
) )
AppTab.Certificates -> CertificatesScreen(state = state, onSync = onSync, onUploadCertificate = onUploadCertificate) AppTab.Certificates -> CertificatesScreen(state = state, onSync = onSync, onUploadCertificate = onUploadCertificate)
AppTab.About -> AboutScreen()
}
}
}
@Composable
private fun AboutScreen() {
LazyColumn(
modifier = Modifier.fillMaxSize(),
contentPadding = PaddingValues(horizontal = 20.dp, vertical = 20.dp),
verticalArrangement = Arrangement.spacedBy(14.dp)
) {
item {
ElevatedCard(
shape = RoundedCornerShape(22.dp),
elevation = CardDefaults.elevatedCardElevation(defaultElevation = 4.dp),
colors = CardDefaults.elevatedCardColors(containerColor = Color.White)
) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(22.dp),
verticalArrangement = Arrangement.spacedBy(14.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Box(
modifier = Modifier
.size(64.dp)
.background(BrandGradient, CircleShape),
contentAlignment = Alignment.Center
) {
Text("LS", color = Color.White, fontSize = AppFontSizes.xl, fontWeight = FontWeight.Bold)
}
Text("LinkedSign", color = BrandDark, fontSize = AppFontSizes.title, fontWeight = FontWeight.Bold)
Text("Versión ${BuildConfig.VERSION_NAME}", color = Brand, fontSize = AppFontSizes.base, fontWeight = FontWeight.SemiBold)
Text(
"LinkedSign permite revisar documentos, sincronizar información, cargar certificados y firmar archivos desde Android usando la misma cuenta de la plataforma web.",
color = TextMuted,
fontSize = AppFontSizes.base,
lineHeight = 20.sp
)
}
}
} }
} }
} }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "linkedsign-backend", "name": "linkedsign-backend",
"version": "1.0.4", "version": "1.1.0",
"private": true, "private": true,
"description": "Initial backend for LinkedSign", "description": "Initial backend for LinkedSign",
"main": "src/server.js", "main": "src/server.js",
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "frontend", "name": "frontend",
"private": true, "private": true,
"version": "1.0.4", "version": "1.1.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",