Эх сурвалжийг харах

Added sorting books by update date

Vadik Sirekanyan 7 жил өмнө
parent
commit
6d349eb609

+ 6 - 3
app/src/main/java/me/vadik/knigopis/BookRepository.kt

@@ -7,10 +7,11 @@ import me.vadik.knigopis.api.Endpoint
 import me.vadik.knigopis.auth.KAuth
 import me.vadik.knigopis.common.ResourceProvider
 import me.vadik.knigopis.model.*
+import java.util.*
 
 interface BookRepository {
 
-    fun loadBooks(): Single<List<Pair<Book, BookHeader>>>
+    fun <T : Comparable<T>> loadBooks(sortSelector: (PlannedBook) -> T): Single<List<Pair<Book, BookHeader>>>
 
     fun saveBook(bookId: String?, book: FinishedBookToSend, done: Boolean?): Completable
 
@@ -24,10 +25,12 @@ class BookRepositoryImpl(
     private val resources: ResourceProvider
 ) : BookRepository {
 
-    override fun loadBooks(): Single<List<Pair<Book, BookHeader>>> =
+    override fun <T : Comparable<T>> loadBooks(
+        sortSelector: (PlannedBook) -> T
+    ): Single<List<Pair<Book, BookHeader>>> =
         Singles.zip(
             api.getPlannedBooks(auth.getAccessToken())
-                .map { it.sortedByDescending(PlannedBook::priority) }
+                .map { it.sortedByDescending(sortSelector) }
                 .map { groupPlannedBooks(it) },
             api.getFinishedBooks(auth.getAccessToken())
                 .map { it.sortedByDescending(FinishedBook::order) }

+ 1 - 1
app/src/main/java/me/vadik/knigopis/MainActivity.kt

@@ -384,7 +384,7 @@ class MainActivity : AppCompatActivity(), Router {
     }
 
     private fun refreshHomeTab() {
-        bookRepository.loadBooks()
+        bookRepository.loadBooks(PlannedBook::updatedAt)
             .io2main()
             .showProgressBar()
             .subscribe({ books ->

+ 4 - 2
app/src/main/java/me/vadik/knigopis/model/PlannedBook.kt

@@ -1,10 +1,12 @@
 package me.vadik.knigopis.model
 
+import java.util.*
+
 class PlannedBook(
     override val id: String,
     val userId: String,
-    val createdAt: String,
-    val updatedAt: String,
+    val createdAt: Date,
+    val updatedAt: Date,
     override val title: String,
     override val author: String,
     val priority: Int,