Ver código fonte

Splitted books by read-later and reading-now groups

Vadik Sirekanyan 7 anos atrás
pai
commit
99ac3236db

+ 22 - 7
app/src/main/java/me/vadik/knigopis/BookRepository.kt

@@ -27,18 +27,14 @@ class BookRepositoryImpl(
     override fun loadBooks(): Single<List<Pair<Book, BookHeader>>> =
         Singles.zip(
             api.getPlannedBooks(auth.getAccessToken())
-                .map { it.sortedByDescending(PlannedBook::priority) },
+                .map { it.sortedByDescending(PlannedBook::priority) }
+                .map { groupPlannedBooks(it) },
             api.getFinishedBooks(auth.getAccessToken())
                 .map { it.sortedByDescending(FinishedBook::order) }
                 .map { groupFinishedBooks(it) }
         ).map { (planned, finished) ->
             mutableListOf<Pair<Book, BookHeader>>().apply {
-                if (planned.isNotEmpty()) {
-                    val todoHeaderTitle = resources.getString(R.string.books_header_todo)
-                    val todoHeader = BookHeader(todoHeaderTitle, planned.size)
-                    add(todoHeader to todoHeader)
-                    addAll(planned.map { it to todoHeader })
-                }
+                addAll(planned)
                 addAll(finished)
             }
         }
@@ -65,6 +61,25 @@ class BookRepositoryImpl(
             }
         }
 
+    private fun groupPlannedBooks(books: List<PlannedBook>): List<Pair<Book, BookHeader>> {
+        val result = mutableListOf<Pair<Book, BookHeader>>()
+        val doingBooks = books.filterNot { it.priority == 0 }
+        if (doingBooks.isNotEmpty()) {
+            val todoHeaderTitle = resources.getString(R.string.books_header_doing)
+            val doingHeader = BookHeader(todoHeaderTitle, doingBooks.size)
+            result.add(doingHeader to doingHeader)
+            result.addAll(doingBooks.map { it to doingHeader })
+        }
+        val todoBooks = books.filter { it.priority == 0 }
+        if (todoBooks.isNotEmpty()) {
+            val todoHeaderTitle = resources.getString(R.string.books_header_todo)
+            val todoHeader = BookHeader(todoHeaderTitle, todoBooks.size)
+            result.add(todoHeader to todoHeader)
+            result.addAll(todoBooks.map { it to todoHeader })
+        }
+        return result
+    }
+
     private fun groupFinishedBooks(books: List<FinishedBook>): List<Pair<Book, BookHeader>> {
         var first = true
         return books.groupBy { it.readYear }

+ 1 - 1
app/src/main/res/layout/books_page.xml

@@ -11,7 +11,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:clipToPadding="false"
-        android:paddingTop="0.5dp"
+        android:paddingTop="0.1dp"
         tools:listitem="@layout/book" />
 
     <TextView

+ 2 - 1
app/src/main/res/values-ru/strings.xml

@@ -45,7 +45,8 @@
 
     <!-- 🏠 books tab -->
     <string name="books.error.empty">У вас пока нет книг</string>
-    <string name="books.header.todo">К прочтению</string>
+    <string name="books.header.todo">Собираюсь читать</string>
+    <string name="books.header.doing">Читаю сейчас</string>
     <string name="books.header.done_first">Прочитано в %s г.</string>
     <string name="books.header.done">%s г.</string>
     <string name="books.header.done_other">Прочие года</string>

+ 4 - 3
app/src/main/res/values/strings.xml

@@ -7,7 +7,7 @@
     <string name="common.info.dev">We Present A SPECIAL PRESENTATION</string>
     <plurals name="common.header.books">
         <item quantity="one">%d book</item>
-        <item quantity="many">%d books</item>
+        <item quantity="other">%d books</item>
     </plurals>
 
     <!-- main screen -->
@@ -30,7 +30,7 @@
     <string name="profile.hint.nickname">nickname</string>
     <string name="profile.hint.homepage">homepage</string>
     <string name="profile.text.todo">%d\ntodo</string>
-    <string name="profile.text.doing">%d\ndoing</string>
+    <string name="profile.text.doing">%d\nreading</string>
     <string name="profile.text.done">%d\ndone</string>
     <string name="profile.text.random">%s — %d%%</string>
 
@@ -44,7 +44,8 @@
 
     <!-- 🏠 books tab -->
     <string name="books.error.empty">You don\'t have any books</string>
-    <string name="books.header.todo">Todo</string>
+    <string name="books.header.todo">Read later</string>
+    <string name="books.header.doing">Reading now</string>
     <string name="books.header.done_first">Done in %s</string>
     <string name="books.header.done">%s</string>
     <string name="books.header.done_other">Other years</string>