You've already forked RekomenciMobile
fixed order on diff screen
This commit is contained in:
+24
-15
@@ -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
|
||||||
|
)
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user