ソースを参照

Added grouping books by read year

sirekanyan 8 年 前
コミット
344a26943c
1 ファイル変更21 行追加1 行削除
  1. 21 1
      app/src/main/java/me/vadik/knigopis/MainActivity.kt

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

@@ -126,9 +126,9 @@ class MainActivity : AppCompatActivity() {
         Single.just(listOf(BookHeader("К прочтению"))),
         api.getPlannedBooks(auth.getAccessToken())
             .map { it.sortedByDescending { it.priority } },
-        Single.just(listOf(BookHeader("Прочитано"))),
         api.getFinishedBooks(auth.getAccessToken())
             .map { it.sortedByDescending(FinishedBook::order) }
+            .map { it.groupFinishedBooks() }
     ).io2main()
         .subscribe({
           allBooks.addAll(it)
@@ -163,4 +163,24 @@ class MainActivity : AppCompatActivity() {
           logError("cannot load planned books", it)
         })
   }
+
+  private fun List<FinishedBook>.groupFinishedBooks(): List<Book> {
+    val groupedBooks = mutableListOf<Book>()
+    var previousReadYear = Int.MAX_VALUE.toString()
+    forEachIndexed { index, book ->
+      val readYear = book.readYear
+      if (previousReadYear != readYear) {
+        groupedBooks.add(BookHeader(
+            when {
+              book.readYear.isEmpty() -> "Прочие года"
+              index == 0 -> "Прочитано в $readYear г."
+              else -> "$readYear г."
+            }
+        ))
+      }
+      groupedBooks.add(book)
+      previousReadYear = book.readYear
+    }
+    return groupedBooks
+  }
 }