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 colorScheme = MaterialTheme.colorScheme
val expandedState = remember { mutableStateMapOf<Int, Boolean>() } val expandedState = remember { mutableStateMapOf<Int, Boolean>() }
val selected = remember { mutableStateMapOf<String, ResumeModel>() } val selected = remember { mutableStateMapOf<String, ResumeModel>() }
val selectedOrder = remember { mutableListOf<String>() } val selectedIndices = remember { mutableStateMapOf<String, Int>() }
Box( Box(
modifier = Modifier.fillMaxSize() modifier = Modifier.fillMaxSize()
@@ -131,10 +131,10 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
onSelectToggle = { onSelectToggle = {
if (isSelected) { if (isSelected) {
selected.remove(version.id) selected.remove(version.id)
selectedOrder.remove(version.id) selectedIndices.remove(version.id)
} else if (selected.size < 2) { } else if (selected.size < 2) {
selected[version.id] = version selected[version.id] = version
selectedOrder.add(version.id) selectedIndices[version.id] = index
} }
} }
) )
@@ -143,22 +143,26 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
} }
} }
if (selected.size == 2) { if (selected.size > 0) {
ExtendedFloatingActionButton( ExtendedFloatingActionButton(
modifier = Modifier modifier = Modifier
.align(Alignment.BottomCenter) .align(Alignment.BottomCenter)
.padding(bottom = Paddings.large), .padding(bottom = Paddings.large),
onClick = { onClick = {
val first = selected[selectedOrder.getOrNull(0)] if (selected.size == 2) {
val second = selected[selectedOrder.getOrNull(1)] val ordered = selected.toList()
val gson = Gson() .sortedByDescending { (id, _) -> selectedIndices[id] ?: Int.MIN_VALUE }
navController.navigate( val first = ordered.getOrNull(0)?.second
AppDestination.ResumeDiff.route, val second = ordered.getOrNull(1)?.second
Bundle().apply { val gson = Gson()
putString(AppDestination.ResumeDiff.ARG_FIRST, gson.toJson(first)) navController.navigate(
putString(AppDestination.ResumeDiff.ARG_SECOND, gson.toJson(second)) AppDestination.ResumeDiff.route,
} Bundle().apply {
) putString(AppDestination.ResumeDiff.ARG_FIRST, gson.toJson(first))
putString(AppDestination.ResumeDiff.ARG_SECOND, gson.toJson(second))
}
)
}
}, },
icon = { icon = {
Icon( Icon(
@@ -166,7 +170,12 @@ fun ErrorCollectorScope.ResumeHistoryScreen(
contentDescription = "compare" contentDescription = "compare"
) )
}, },
text = { Text(text = "Сравнить") }, text = {
Text(
text = if (selected.size == 2) "Сравнить" else "Выберите ещё 1",
style = typography.titleMedium
)
},
) )
} }
} }