Browse Source

Added list with both finished and planned books

sirekanyan 8 years ago
parent
commit
a0248b0d12

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

@@ -8,19 +8,15 @@ import android.support.v7.widget.LinearLayoutManager
 import android.support.v7.widget.RecyclerView
 import android.support.v7.widget.RecyclerView
 import android.support.v7.widget.Toolbar
 import android.support.v7.widget.Toolbar
 import android.view.MenuItem
 import android.view.MenuItem
-import android.view.View
-import me.vadik.knigopis.model.CurrentTab.*
+import io.reactivex.Single
 import me.vadik.knigopis.adapters.BooksAdapter
 import me.vadik.knigopis.adapters.BooksAdapter
-import me.vadik.knigopis.adapters.UsersAdapter
 import me.vadik.knigopis.api.BookCoverSearchImpl
 import me.vadik.knigopis.api.BookCoverSearchImpl
 import me.vadik.knigopis.api.Endpoint
 import me.vadik.knigopis.api.Endpoint
 import me.vadik.knigopis.api.ImageEndpoint
 import me.vadik.knigopis.api.ImageEndpoint
 import me.vadik.knigopis.auth.KAuth
 import me.vadik.knigopis.auth.KAuth
 import me.vadik.knigopis.auth.KAuthImpl
 import me.vadik.knigopis.auth.KAuthImpl
-import me.vadik.knigopis.model.CurrentTab
-import me.vadik.knigopis.model.FinishedBook
-import me.vadik.knigopis.model.PlannedBook
-import me.vadik.knigopis.model.User
+import me.vadik.knigopis.model.*
+import me.vadik.knigopis.model.CurrentTab.*
 
 
 private const val ULOGIN_REQUEST_CODE = 0
 private const val ULOGIN_REQUEST_CODE = 0
 
 
@@ -28,30 +24,26 @@ class MainActivity : AppCompatActivity() {
 
 
   private val api by lazy { app().baseApi.create(Endpoint::class.java) }
   private val api by lazy { app().baseApi.create(Endpoint::class.java) }
   private val auth by lazy { KAuthImpl(applicationContext, api) as KAuth }
   private val auth by lazy { KAuthImpl(applicationContext, api) as KAuth }
-  private val users = mutableListOf<User>()
+  private val allBooks = mutableListOf<Book>()
   private val finishedBooks = mutableListOf<FinishedBook>()
   private val finishedBooks = mutableListOf<FinishedBook>()
   private val plannedBooks = mutableListOf<PlannedBook>()
   private val plannedBooks = mutableListOf<PlannedBook>()
-  private val usersAdapter = UsersAdapter.create(users)
   private val booksAdapter by lazy {
   private val booksAdapter by lazy {
     BooksAdapter(BookCoverSearchImpl(
     BooksAdapter(BookCoverSearchImpl(
         app().imageApi.create(ImageEndpoint::class.java),
         app().imageApi.create(ImageEndpoint::class.java),
         getSharedPreferences("knigopis", MODE_PRIVATE)
         getSharedPreferences("knigopis", MODE_PRIVATE)
     ))
     ))
   }
   }
+  private val allBooksAdapter by lazy { booksAdapter.build(allBooks) }
   private val finishedBooksAdapter by lazy { booksAdapter.build(finishedBooks) }
   private val finishedBooksAdapter by lazy { booksAdapter.build(finishedBooks) }
   private val plannedBooksAdapter by lazy { booksAdapter.build(plannedBooks) }
   private val plannedBooksAdapter by lazy { booksAdapter.build(plannedBooks) }
-  private lateinit var usersView: RecyclerView
-  private lateinit var finishedBooksView: RecyclerView
-  private lateinit var plannedBooksView: RecyclerView
+  private lateinit var booksRecyclerView: RecyclerView
   private lateinit var loginOption: MenuItem
   private lateinit var loginOption: MenuItem
   private lateinit var currentTab: CurrentTab
   private lateinit var currentTab: CurrentTab
 
 
   override fun onCreate(savedInstanceState: Bundle?) {
   override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
     super.onCreate(savedInstanceState)
     setContentView(R.layout.activity_main)
     setContentView(R.layout.activity_main)
-    usersView = initRecyclerView(findView(R.id.users_recycler_view), usersAdapter)
-    finishedBooksView = initRecyclerView(findView(R.id.finished_books_view), finishedBooksAdapter)
-    plannedBooksView = initRecyclerView(findView(R.id.planned_books_view), plannedBooksAdapter)
+    booksRecyclerView = initRecyclerView(findView(R.id.books_recycler_view))
     initNavigationView(findView(R.id.navigation))
     initNavigationView(findView(R.id.navigation))
     initToolbar(findView(R.id.toolbar))
     initToolbar(findView(R.id.toolbar))
   }
   }
@@ -83,8 +75,7 @@ class MainActivity : AppCompatActivity() {
     }
     }
   }
   }
 
 
-  private fun initRecyclerView(recyclerView: RecyclerView, adapter: RecyclerView.Adapter<*>): RecyclerView {
-    recyclerView.adapter = adapter
+  private fun initRecyclerView(recyclerView: RecyclerView): RecyclerView {
     recyclerView.layoutManager = LinearLayoutManager(this)
     recyclerView.layoutManager = LinearLayoutManager(this)
     return recyclerView
     return recyclerView
   }
   }
@@ -129,24 +120,26 @@ class MainActivity : AppCompatActivity() {
   }
   }
 
 
   private fun refreshHomeTab() {
   private fun refreshHomeTab() {
-    usersView.visibility = View.VISIBLE
-    finishedBooksView.visibility = View.GONE
-    plannedBooksView.visibility = View.GONE
-    api.getLatestUsers()
-        .io2main()
-        .subscribe({ latestUsers ->
-          users.clear()
-          users.addAll(latestUsers.values)
-          usersAdapter.notifyDataSetChanged()
+    booksRecyclerView.adapter = allBooksAdapter
+    allBooks.clear()
+    Single.concat(
+        Single.just(listOf(FinishedBook("", "К прочтению", "", "", "", "", "", "", User("", "", 0, "")))),
+        api.getPlannedBooks(auth.getAccessToken())
+            .map { it.sortedByDescending { it.priority } },
+        Single.just(listOf(FinishedBook("", "Прочитано", "", "", "", "", "", "", User("", "", 0, "")))),
+        api.getFinishedBooks(auth.getAccessToken())
+            .map { it.sortedByDescending(FinishedBook::order) }
+    ).io2main()
+        .subscribe({
+          allBooks.addAll(it)
+          allBooksAdapter.notifyDataSetChanged()
         }, {
         }, {
-          logError("cannot load users", it)
+          logError("cannot load finished books", it)
         })
         })
   }
   }
 
 
   private fun refreshDoneTab() {
   private fun refreshDoneTab() {
-    usersView.visibility = View.GONE
-    finishedBooksView.visibility = View.VISIBLE
-    plannedBooksView.visibility = View.GONE
+    booksRecyclerView.adapter = finishedBooksAdapter
     api.getFinishedBooks(auth.getAccessToken())
     api.getFinishedBooks(auth.getAccessToken())
         .io2main()
         .io2main()
         .subscribe({
         .subscribe({
@@ -159,9 +152,7 @@ class MainActivity : AppCompatActivity() {
   }
   }
 
 
   private fun refreshTodoTab() {
   private fun refreshTodoTab() {
-    usersView.visibility = View.GONE
-    finishedBooksView.visibility = View.GONE
-    plannedBooksView.visibility = View.VISIBLE
+    booksRecyclerView.adapter = plannedBooksAdapter
     api.getPlannedBooks(auth.getAccessToken())
     api.getPlannedBooks(auth.getAccessToken())
         .io2main()
         .io2main()
         .subscribe({
         .subscribe({

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

@@ -7,6 +7,7 @@ import android.util.Log
 import android.view.LayoutInflater
 import android.view.LayoutInflater
 import android.view.View
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewGroup
+import io.reactivex.Flowable
 import io.reactivex.Single
 import io.reactivex.Single
 import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.schedulers.Schedulers
 import io.reactivex.schedulers.Schedulers
@@ -25,4 +26,7 @@ fun ViewGroup.inflate(@LayoutRes layout: Int): View =
     LayoutInflater.from(context).inflate(layout, this, false)
     LayoutInflater.from(context).inflate(layout, this, false)
 
 
 fun <T> Single<T>.io2main(): Single<T> =
 fun <T> Single<T>.io2main(): Single<T> =
-    subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+    subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+
+fun <T> Flowable<T>.io2main(): Flowable<T> =
+    subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())

+ 1 - 20
app/src/main/res/layout/activity_main.xml

@@ -23,29 +23,10 @@
     </android.support.design.widget.AppBarLayout>
     </android.support.design.widget.AppBarLayout>
 
 
     <android.support.v7.widget.RecyclerView
     <android.support.v7.widget.RecyclerView
-        android:id="@+id/users_recycler_view"
+        android:id="@+id/books_recycler_view"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_height="0dp"
         android:layout_weight="1"
         android:layout_weight="1"
-        android:visibility="gone"
-        tools:listitem="@layout/user"
-        tools:visibility="visible"/>
-
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/finished_books_view"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:visibility="gone"
-        tools:listitem="@layout/book"
-        tools:visibility="visible"/>
-
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/planned_books_view"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:visibility="gone"
         tools:listitem="@layout/book"/>
         tools:listitem="@layout/book"/>
 
 
     <android.support.design.widget.BottomNavigationView
     <android.support.design.widget.BottomNavigationView