Selaa lähdekoodia

Added sorting read books by title and author

Vadik Sirekanyan 5 vuotta sitten
vanhempi
commit
5846b5c2e3

+ 1 - 1
app/src/main/java/com/sirekanyan/knigopis/dependency/app.kt

@@ -39,7 +39,7 @@ fun App.provideAuthRepository(): AuthRepository =
 
 fun App.provideBookRepository(): BookRepository {
     val planned = PlannedBookOrganizerImpl(resourceProvider, config)
-    val finished = FinishedBookOrganizerImpl(resourceProvider)
+    val finished = FinishedBookOrganizerImpl(resourceProvider, config)
     return BookRepositoryImpl(endpoint, cache, planned, finished, networkChecker)
 }
 

+ 23 - 2
app/src/main/java/com/sirekanyan/knigopis/repository/BookOrganizer.kt

@@ -54,11 +54,32 @@ class PlannedBookOrganizerImpl(
 }
 
 class FinishedBookOrganizerImpl(
-    private val resources: ResourceProvider
+    private val resources: ResourceProvider,
+    private val config: Configuration
 ) : BookOrganizer<FinishedBook> {
 
     override fun sort(books: List<FinishedBook>): List<FinishedBook> =
-        books.sortedByDescending(FinishedBook::order)
+        when (config.sorting) {
+            Sorting.BY_TITLE -> {
+                books.sortedWith(
+                    compareByDescending(FinishedBook::readYear)
+                        .then(compareBy(FinishedBook::title))
+                )
+            }
+            Sorting.BY_AUTHOR -> {
+                books.sortedWith(
+                    compareByDescending(FinishedBook::readYear)
+                        .then(compareBy(FinishedBook::author))
+                        .then(compareBy(FinishedBook::title))
+                )
+            }
+            else -> {
+                books.sortedWith(
+                    compareByDescending(FinishedBook::order)
+                        .then(compareBy(FinishedBook::title))
+                )
+            }
+        }
 
     override fun group(books: List<FinishedBook>): List<BookModel> {
         var first = true