Procházet zdrojové kódy

Moved saving book progress from 'notes' to 'priorty' field

sirekanyan před 8 roky
rodič
revize
04902e5195

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

@@ -3,9 +3,7 @@ package me.vadik.knigopis
 import android.app.Application
 import com.google.gson.GsonBuilder
 import me.vadik.knigopis.api.gson.ImageThumbnailDeserializer
-import me.vadik.knigopis.api.gson.NotesTypeAdapter
 import me.vadik.knigopis.model.ImageThumbnail
-import me.vadik.knigopis.model.Notes
 import retrofit2.Retrofit
 import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
 import retrofit2.converter.gson.GsonConverterFactory
@@ -19,14 +17,7 @@ class App : Application() {
         Retrofit.Builder()
             .baseUrl(MAIN_API_URL)
             .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
-            .addConverterFactory(
-                GsonConverterFactory.create(
-                    GsonBuilder().registerTypeAdapter(
-                        Notes::class.java,
-                        NotesTypeAdapter()
-                    ).create()
-                )
-            )
+            .addConverterFactory(GsonConverterFactory.create())
             .build()
     }
 

+ 4 - 6
app/src/main/java/me/vadik/knigopis/BookActivity.kt

@@ -12,7 +12,6 @@ import me.vadik.knigopis.api.Endpoint
 import me.vadik.knigopis.api.ImageEndpoint
 import me.vadik.knigopis.auth.KAuthImpl
 import me.vadik.knigopis.model.FinishedBookToSend
-import me.vadik.knigopis.model.Notes
 import me.vadik.knigopis.model.PlannedBookToSend
 
 private const val IMAGE_PRELOAD_COUNT = 3
@@ -78,10 +77,8 @@ class BookActivity : AppCompatActivity() {
                             bookId, PlannedBookToSend(
                                 titleEditText.text.toString(),
                                 authorEditText.text.toString(),
-                                Notes(
-                                    notesTextArea.text.toString(),
-                                    0 // todo: actual progress
-                                )
+                                notesTextArea.text.toString(),
+                                bookPriority.text.toString().toInt()
                             )
                         )
                     }.io2main()
@@ -151,7 +148,8 @@ class BookActivity : AppCompatActivity() {
                     .io2main()
                     .doOnSuccess { plannedBook ->
                         readCheckbox.isChecked = false
-                        notesTextArea.setText(plannedBook.notes.text)
+                        notesTextArea.setText(plannedBook.notes)
+                        bookPriority.setText(plannedBook.priority.toString())
                     }
             }.subscribe({ book ->
                 titleEditText.setText(book.title)

+ 0 - 26
app/src/main/java/me/vadik/knigopis/api/gson/NotesTypeAdapter.kt

@@ -1,26 +0,0 @@
-package me.vadik.knigopis.api.gson
-
-import com.google.gson.TypeAdapter
-import com.google.gson.stream.JsonReader
-import com.google.gson.stream.JsonWriter
-import me.vadik.knigopis.model.Notes
-
-class NotesTypeAdapter : TypeAdapter<Notes>() {
-
-    private val regex = Regex("(.*)// (\\d+)%")
-
-    override fun write(output: JsonWriter, notes: Notes) {
-        if (notes.progress == 0) {
-            output.value(notes.text)
-        } else {
-            output.value("${notes.text} // ${notes.progress}%".trim())
-        }
-    }
-
-    override fun read(input: JsonReader): Notes {
-        val fullText = input.nextString()
-        return regex.matchEntire(fullText)?.let {
-            Notes(it.groupValues[1].trim(), it.groupValues[2].toInt())
-        } ?: Notes(fullText, 0)
-    }
-}

+ 0 - 3
app/src/main/java/me/vadik/knigopis/model/Notes.kt

@@ -1,3 +0,0 @@
-package me.vadik.knigopis.model
-
-class Notes(val text: String, val progress: Int)

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

@@ -8,5 +8,5 @@ class PlannedBook(
     override val title: String,
     override val author: String,
     val priority: Int,
-    val notes: Notes
+    val notes: String
 ) : Book

+ 2 - 2
app/src/main/java/me/vadik/knigopis/model/PlannedBookToSend.kt

@@ -3,6 +3,6 @@ package me.vadik.knigopis.model
 class PlannedBookToSend(
     val title: String,
     val author: String,
-    val notes: Notes,
-    val priority: Int = 99 // todo: logic for setting priority
+    val notes: String,
+    val priority: Int
 )

+ 11 - 1
app/src/main/res/layout/book_edit.xml

@@ -169,10 +169,20 @@
                 android:inputType="textCapSentences|textMultiLine"
                 android:minLines="2"
                 android:padding="16dp"
-                app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintTop_toBottomOf="@id/readCheckbox"
                 tools:text="Неистово плюсую" />
 
+            <!-- todo: remove -->
+            <EditText
+                android:hint="priority (temp)"
+                android:id="@+id/bookPriority"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_margin="16dp"
+                android:inputType="number"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/notesTextArea" />
+
         </android.support.constraint.ConstraintLayout>
 
     </ScrollView>

+ 0 - 52
app/src/test/java/me/vadik/knigopis/api/gson/NotesTypeAdapterTest.kt

@@ -1,52 +0,0 @@
-package me.vadik.knigopis.api.gson
-
-import com.google.gson.GsonBuilder
-import me.vadik.knigopis.model.Notes
-import org.junit.Assert.assertEquals
-import org.junit.Test
-
-class NotesTypeAdapterTest {
-
-    private val gson = GsonBuilder()
-        .registerTypeAdapter(Notes::class.java, NotesTypeAdapter())
-        .create()
-
-    @Test
-    fun write() {
-        val notes = Notes("text", 25)
-        assertEquals("\"text // 25%\"", gson.toJson(notes))
-    }
-
-    @Test
-    fun writeZeroProgress() {
-        val notes = Notes("text", 0)
-        assertEquals("\"text\"", gson.toJson(notes))
-    }
-
-    @Test
-    fun writeEmptyText() {
-        val notes = Notes("", 30)
-        assertEquals("\"// 30%\"", gson.toJson(notes))
-    }
-
-    @Test
-    fun read() {
-        val notes = gson.fromJson("\"text // text // 25%\"", Notes::class.java)
-        assertEquals("text // text", notes.text)
-        assertEquals(25, notes.progress)
-    }
-
-    @Test
-    fun readZeroProgress() {
-        val notes = gson.fromJson("\"text // text\"", Notes::class.java)
-        assertEquals("text // text", notes.text)
-        assertEquals(0, notes.progress)
-    }
-
-    @Test
-    fun readEmptyText() {
-        val notes = gson.fromJson("\"// 30%\"", Notes::class.java)
-        assertEquals("", notes.text)
-        assertEquals(30, notes.progress)
-    }
-}