Bläddra i källkod

Set book fields when editing

sirekanyan 8 år sedan
förälder
incheckning
816bd4c021

+ 36 - 1
app/src/main/java/me/vadik/knigopis/BookActivity.kt

@@ -20,8 +20,15 @@ import me.vadik.knigopis.model.FinishedBookToSend
 import me.vadik.knigopis.model.PlannedBookToSend
 
 private const val IMAGE_PRELOAD_COUNT = 3
+private const val EXTRA_BOOK_ID = "me.vadik.knigopis.extra_book_id"
+private const val EXTRA_BOOK_FINISHED = "me.vadik.knigopis.extra_book_finished"
 
-fun Context.createBookIntent() = Intent(this, BookActivity::class.java)
+fun Context.createNewBookIntent() = Intent(this, BookActivity::class.java)
+
+fun Context.createEditBookIntent(bookId: String, finished: Boolean): Intent =
+    Intent(this, BookActivity::class.java)
+        .putExtra(EXTRA_BOOK_ID, bookId)
+        .putExtra(EXTRA_BOOK_FINISHED, finished)
 
 class BookActivity : AppCompatActivity() {
 
@@ -115,4 +122,32 @@ class BookActivity : AppCompatActivity() {
       }
     }
   }
+
+  override fun onStart() {
+    super.onStart()
+    val bookId = intent.getStringExtra(EXTRA_BOOK_ID)
+    val finished = intent.getBooleanExtra(EXTRA_BOOK_FINISHED, false)
+    bookId?.let { id ->
+      if (finished) {
+        api.getFinishedBook(id)
+            .io2main()
+            .doOnSuccess { finishedBook ->
+              readCheckbox.isChecked = true
+              yearEditText.text = finishedBook.readYear
+              monthEditText.text = finishedBook.readMonth
+              dayEditText.text = finishedBook.readDay
+            }
+      } else {
+        api.getPlannedBook(id)
+            .io2main()
+            .doOnSuccess { plannedBook ->
+              readCheckbox.isChecked = false
+              notesTextArea.text = plannedBook.notes
+            }
+      }.subscribe({ book ->
+        titleEditText.text = book.title
+        authorEditText.text = book.author
+      }, { logError("cannot get planned book", it) })
+    }
+  }
 }

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

@@ -49,7 +49,7 @@ class MainActivity : AppCompatActivity() {
     initNavigationView(findView(R.id.navigation))
     initToolbar(findView(R.id.toolbar))
     fab.setOnClickListener {
-      startActivity(createBookIntent())
+      startActivity(createNewBookIntent())
     }
   }
 

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

@@ -48,7 +48,7 @@ class BooksAdapter(
         }
         val onDeleteClicked: (DialogInterface, Int) -> Unit = { dialog, index ->
           when (index) {
-            0 -> context.startActivity(context.createBookIntent())
+            0 -> context.startActivity(context.createEditBookIntent(book.id, book is FinishedBook))
             1 -> {
               AlertDialog.Builder(context)
                   .setTitle(R.string.book_delete_confirmation_title)

+ 6 - 0
app/src/main/java/me/vadik/knigopis/api/Endpoint.kt

@@ -13,6 +13,9 @@ interface Endpoint {
   @GET("books")
   fun getFinishedBooks(@Query("access-token") accessToken: String): Single<List<FinishedBook>>
 
+  @GET("books/{id}")
+  fun getFinishedBook(@Path("id") id: String): Single<FinishedBook>
+
   @POST("books")
   fun postFinishedBook(
       @Query("access-token") accessToken: String,
@@ -28,6 +31,9 @@ interface Endpoint {
   @GET("wishes")
   fun getPlannedBooks(@Query("access-token") accessToken: String): Single<List<PlannedBook>>
 
+  @GET("wishes/{id}")
+  fun getPlannedBook(@Path("id") id: String): Single<PlannedBook>
+
   @POST("wishes")
   fun postPlannedBook(
       @Query("access-token") accessToken: String,