fixed order on diff screen

This commit is contained in:
MaximOksiuta
2025-11-23 15:11:19 +03:00
parent 0bb5aee6ef
commit 28285be9da
@@ -64,7 +64,7 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
val colorScheme = MaterialTheme.colorScheme
val expandedState = remember { mutableStateMapOf<Int, Boolean>() }
val selected = remember { mutableStateMapOf<String, ResumeModel>() }
val selectedOrder = remember { mutableListOf<String>() }
val selectedIndices = remember { mutableStateMapOf<String, Int>() }
Box(
modifier = Modifier.fillMaxSize()
@@ -131,10 +131,10 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
onSelectToggle = {
if (isSelected) {
selected.remove(version.id)
selectedOrder.remove(version.id)
selectedIndices.remove(version.id)
} else if (selected.size < 2) {
selected[version.id] = version
selectedOrder.add(version.id)
selectedIndices[version.id] = index
}
}
)
@@ -143,14 +143,17 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
}
}
if (selected.size == 2) {
if (selected.size > 0) {
ExtendedFloatingActionButton(
modifier = Modifier
.align(Alignment.BottomCenter)
.padding(bottom = Paddings.large),
onClick = {
val first = selected[selectedOrder.getOrNull(0)]
val second = selected[selectedOrder.getOrNull(1)]
if (selected.size == 2) {
val ordered = selected.toList()
.sortedByDescending { (id, _) -> selectedIndices[id] ?: Int.MIN_VALUE }
val first = ordered.getOrNull(0)?.second
val second = ordered.getOrNull(1)?.second
val gson = Gson()
navController.navigate(
AppDestination.ResumeDiff.route,
@@ -159,6 +162,7 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
putString(AppDestination.ResumeDiff.ARG_SECOND, gson.toJson(second))
}
)
}
},
icon = {
Icon(
@@ -166,7 +170,12 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
contentDescription = "compare"
)
},
text = { Text(text = "Сравнить") },
text = {
Text(
text = if (selected.size == 2) "Сравнить" else "Выберите ещё 1",
style = typography.titleMedium
)
},
)
}
}