diff --git a/app/src/main/java/com/prodhack/moscow2025/presentation/screens/resumeHistory/ResumeHistoryScreen.kt b/app/src/main/java/com/prodhack/moscow2025/presentation/screens/resumeHistory/ResumeHistoryScreen.kt index 8f7945e..f32ec38 100644 --- a/app/src/main/java/com/prodhack/moscow2025/presentation/screens/resumeHistory/ResumeHistoryScreen.kt +++ b/app/src/main/java/com/prodhack/moscow2025/presentation/screens/resumeHistory/ResumeHistoryScreen.kt @@ -64,7 +64,7 @@ fun ErrorCollectorScope.ResumeHistoryScreen( val colorScheme = MaterialTheme.colorScheme val expandedState = remember { mutableStateMapOf() } val selected = remember { mutableStateMapOf() } - val selectedOrder = remember { mutableListOf() } + val selectedIndices = remember { mutableStateMapOf() } 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,22 +143,26 @@ 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)] - val gson = Gson() - navController.navigate( - AppDestination.ResumeDiff.route, - Bundle().apply { - putString(AppDestination.ResumeDiff.ARG_FIRST, gson.toJson(first)) - putString(AppDestination.ResumeDiff.ARG_SECOND, gson.toJson(second)) - } - ) + 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, + Bundle().apply { + putString(AppDestination.ResumeDiff.ARG_FIRST, gson.toJson(first)) + 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 + ) + }, ) } }