优化
This commit is contained in:
@@ -45,7 +45,9 @@ import kotlinx.coroutines.*
|
|||||||
import kotlinx.coroutines.flow.catch
|
import kotlinx.coroutines.flow.catch
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.flow
|
import kotlinx.coroutines.flow.flow
|
||||||
|
import kotlinx.coroutines.flow.mapLatest
|
||||||
|
|
||||||
|
@ExperimentalCoroutinesApi
|
||||||
class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceViewModel>(),
|
class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceViewModel>(),
|
||||||
PopupMenu.OnMenuItemClickListener,
|
PopupMenu.OnMenuItemClickListener,
|
||||||
BookSourceAdapter.CallBack,
|
BookSourceAdapter.CallBack,
|
||||||
@@ -207,6 +209,7 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
|
|||||||
searchView.setOnQueryTextListener(this)
|
searchView.setOnQueryTextListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun upBookSource(searchKey: String? = null) {
|
private fun upBookSource(searchKey: String? = null) {
|
||||||
sourceFlowJob?.cancel()
|
sourceFlowJob?.cancel()
|
||||||
sourceFlowJob = launch {
|
sourceFlowJob = launch {
|
||||||
@@ -232,43 +235,43 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
|
|||||||
}
|
}
|
||||||
}.catch {
|
}.catch {
|
||||||
AppLog.put("书源界面更新书源出错", it)
|
AppLog.put("书源界面更新书源出错", it)
|
||||||
|
}.mapLatest { data ->
|
||||||
|
if (sortAscending) when (sort) {
|
||||||
|
Sort.Weight -> data.sortedBy { it.weight }
|
||||||
|
Sort.Name -> data.sortedWith { o1, o2 ->
|
||||||
|
o1.bookSourceName.cnCompare(o2.bookSourceName)
|
||||||
|
}
|
||||||
|
Sort.Url -> data.sortedBy { it.bookSourceUrl }
|
||||||
|
Sort.Update -> data.sortedByDescending { it.lastUpdateTime }
|
||||||
|
Sort.Respond -> data.sortedBy { it.respondTime }
|
||||||
|
Sort.Enable -> data.sortedWith { o1, o2 ->
|
||||||
|
var sort = -o1.enabled.compareTo(o2.enabled)
|
||||||
|
if (sort == 0) {
|
||||||
|
sort = o1.bookSourceName.cnCompare(o2.bookSourceName)
|
||||||
|
}
|
||||||
|
sort
|
||||||
|
}
|
||||||
|
else -> data
|
||||||
|
}
|
||||||
|
else when (sort) {
|
||||||
|
Sort.Weight -> data.sortedByDescending { it.weight }
|
||||||
|
Sort.Name -> data.sortedWith { o1, o2 ->
|
||||||
|
o2.bookSourceName.cnCompare(o1.bookSourceName)
|
||||||
|
}
|
||||||
|
Sort.Url -> data.sortedByDescending { it.bookSourceUrl }
|
||||||
|
Sort.Update -> data.sortedBy { it.lastUpdateTime }
|
||||||
|
Sort.Respond -> data.sortedByDescending { it.respondTime }
|
||||||
|
Sort.Enable -> data.sortedWith { o1, o2 ->
|
||||||
|
var sort = o1.enabled.compareTo(o2.enabled)
|
||||||
|
if (sort == 0) {
|
||||||
|
sort = o1.bookSourceName.cnCompare(o2.bookSourceName)
|
||||||
|
}
|
||||||
|
sort
|
||||||
|
}
|
||||||
|
else -> data.reversed()
|
||||||
|
}
|
||||||
}.collectLatest { data ->
|
}.collectLatest { data ->
|
||||||
val sourceList =
|
adapter.setItems(data, adapter.diffItemCallback)
|
||||||
if (sortAscending) when (sort) {
|
|
||||||
Sort.Weight -> data.sortedBy { it.weight }
|
|
||||||
Sort.Name -> data.sortedWith { o1, o2 ->
|
|
||||||
o1.bookSourceName.cnCompare(o2.bookSourceName)
|
|
||||||
}
|
|
||||||
Sort.Url -> data.sortedBy { it.bookSourceUrl }
|
|
||||||
Sort.Update -> data.sortedByDescending { it.lastUpdateTime }
|
|
||||||
Sort.Respond -> data.sortedBy { it.respondTime }
|
|
||||||
Sort.Enable -> data.sortedWith { o1, o2 ->
|
|
||||||
var sort = -o1.enabled.compareTo(o2.enabled)
|
|
||||||
if (sort == 0) {
|
|
||||||
sort = o1.bookSourceName.cnCompare(o2.bookSourceName)
|
|
||||||
}
|
|
||||||
sort
|
|
||||||
}
|
|
||||||
else -> data
|
|
||||||
}
|
|
||||||
else when (sort) {
|
|
||||||
Sort.Weight -> data.sortedByDescending { it.weight }
|
|
||||||
Sort.Name -> data.sortedWith { o1, o2 ->
|
|
||||||
o2.bookSourceName.cnCompare(o1.bookSourceName)
|
|
||||||
}
|
|
||||||
Sort.Url -> data.sortedByDescending { it.bookSourceUrl }
|
|
||||||
Sort.Update -> data.sortedBy { it.lastUpdateTime }
|
|
||||||
Sort.Respond -> data.sortedByDescending { it.respondTime }
|
|
||||||
Sort.Enable -> data.sortedWith { o1, o2 ->
|
|
||||||
var sort = o1.enabled.compareTo(o2.enabled)
|
|
||||||
if (sort == 0) {
|
|
||||||
sort = o1.bookSourceName.cnCompare(o2.bookSourceName)
|
|
||||||
}
|
|
||||||
sort
|
|
||||||
}
|
|
||||||
else -> data.reversed()
|
|
||||||
}
|
|
||||||
adapter.setItems(sourceList, adapter.diffItemCallback)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user