Przeglądaj źródła

Added grouping user books by years

Vadik Sirekanyan 7 lat temu
rodzic
commit
f6eda57522

+ 5 - 1
app/src/main/java/me/vadik/knigopis/adapters/books/BooksAdapter.kt

@@ -17,7 +17,11 @@ class BooksAdapter(
 ) : AbstractBooksAdapter(books, R.layout.header, R.layout.user_book) {
 
     override fun bindHeaderViewHolder(holder: BookHeaderViewHolder, header: BookHeader) {
-        holder.setTitle(header.title)
+        if (header.title.isEmpty()) {
+            holder.setTitle(R.string.books_header_done_other)
+        } else {
+            holder.setTitle(header.title)
+        }
     }
 
     override fun bindItemViewHolder(holder: BookItemViewHolder, book: FinishedBook) {

+ 7 - 0
app/src/main/java/me/vadik/knigopis/common/adapter/BookViewHolder.kt

@@ -1,5 +1,6 @@
 package me.vadik.knigopis.common.adapter
 
+import android.support.annotation.StringRes
 import android.support.v7.widget.RecyclerView
 import android.view.View
 import kotlinx.android.synthetic.main.header.view.*
@@ -10,10 +11,16 @@ sealed class BookViewHolder(view: View) : RecyclerView.ViewHolder(view)
 
 class BookHeaderViewHolder(private val view: View) : BookViewHolder(view) {
 
+    private val context = view.context
+
     fun setTitle(title: String) {
         view.book_title.text = title
     }
 
+    fun setTitle(@StringRes titleRes: Int) {
+        view.book_title.text = context.getString(titleRes)
+    }
+
 }
 
 class BookItemViewHolder(private val view: View) : BookViewHolder(view) {

+ 1 - 4
app/src/main/java/me/vadik/knigopis/dependency/modules.kt

@@ -16,8 +16,6 @@ import me.vadik.knigopis.dialog.DialogFactory
 import me.vadik.knigopis.model.ImageThumbnail
 import me.vadik.knigopis.user.UserInteractor
 import me.vadik.knigopis.user.UserInteractorImpl
-import me.vadik.knigopis.user.UserRepository
-import me.vadik.knigopis.user.UserRepositoryImpl
 import okhttp3.OkHttpClient
 import okhttp3.logging.HttpLoggingInterceptor
 import org.koin.dsl.context.Context
@@ -43,8 +41,7 @@ val appModule = applicationContext {
 }
 
 private fun Context.userModule() {
-    bean { UserInteractorImpl(get(), get(), get()) as UserInteractor }
-    bean { UserRepositoryImpl() as UserRepository }
+    bean { UserInteractorImpl(get(), get()) as UserInteractor }
 }
 
 private fun createMainEndpoint() =

+ 11 - 3
app/src/main/java/me/vadik/knigopis/user/UserInteractor.kt

@@ -6,6 +6,7 @@ import me.vadik.knigopis.api.Endpoint
 import me.vadik.knigopis.auth.KAuth
 import me.vadik.knigopis.io2main
 import me.vadik.knigopis.model.Book
+import me.vadik.knigopis.model.BookHeader
 
 interface UserInteractor {
 
@@ -21,8 +22,7 @@ interface UserInteractor {
 
 class UserInteractorImpl(
     private val auth: KAuth,
-    private val api: Endpoint,
-    private val userRepository: UserRepository
+    private val api: Endpoint
 ) : UserInteractor {
 
     override fun subscribe(userId: String) =
@@ -42,7 +42,15 @@ class UserInteractorImpl(
 
     override fun getBooks(userId: String): Single<List<Book>> =
         api.getUserBooks(userId)
-            .map { it as List<Book> }
+            .map { books ->
+                books.groupBy { it.readYear }
+                    .toSortedMap(Comparator { year1, year2 ->
+                        year2.compareTo(year1)
+                    })
+                    .flatMap { (year, books) ->
+                        listOf(BookHeader(year), *books.toTypedArray())
+                    }
+            }
             .io2main()
 
 }

+ 0 - 9
app/src/main/java/me/vadik/knigopis/user/UserRepository.kt

@@ -1,9 +0,0 @@
-package me.vadik.knigopis.user
-
-interface UserRepository {
-
-}
-
-class UserRepositoryImpl : UserRepository {
-
-}