Send highlight positions on Android

This commit is contained in:
Jackson Harper
2023-10-12 15:11:07 +08:00
parent 324a6c2203
commit 5aff626c84
10 changed files with 46 additions and 30 deletions

View File

@ -17,8 +17,8 @@ android {
applicationId "app.omnivore.omnivore"
minSdk 26
targetSdk 33
versionCode 102
versionName "0.0.102"
versionCode 110
versionName "0.0.110"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {

View File

@ -57,6 +57,8 @@ fragment HighlightFields on Highlight {
updatedAt
sharedAt
color
highlightPositionPercent
highlightPositionAnchorIndex
}
fragment LabelFields on Label {

View File

@ -1,12 +1,10 @@
package app.omnivore.omnivore.dataService
import app.omnivore.omnivore.graphql.generated.type.CreateHighlightInput
import app.omnivore.omnivore.graphql.generated.type.HighlightType
import app.omnivore.omnivore.models.ServerSyncStatus
import app.omnivore.omnivore.networking.*
import app.omnivore.omnivore.persistence.entities.Highlight
import app.omnivore.omnivore.persistence.entities.SavedItemAndHighlightCrossRef
import com.apollographql.apollo3.api.Optional
import com.google.gson.Gson
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@ -29,6 +27,8 @@ suspend fun DataService.createWebHighlight(jsonString: String, colorName: String
updatedAt = null,
createdByMe = false,
color = colorName ?: createHighlightInput.color.getOrNull(),
highlightPositionPercent = createHighlightInput.highlightPositionPercent.getOrNull() ?: 0.0,
highlightPositionAnchorIndex = createHighlightInput.highlightPositionAnchorIndex.getOrNull() ?: 0
)
highlight.serverSyncStatus = ServerSyncStatus.NEEDS_CREATION.rawValue
@ -66,7 +66,9 @@ suspend fun DataService.createNoteHighlight(savedItemId: String, note: String):
createdAt = null,
updatedAt = null,
createdByMe = true,
color = null
color = null,
highlightPositionAnchorIndex = 0,
highlightPositionPercent = 0.0
)
highlight.serverSyncStatus = ServerSyncStatus.NEEDS_CREATION.rawValue
@ -87,6 +89,8 @@ suspend fun DataService.createNoteHighlight(savedItemId: String, note: String):
quote = null,
patch = null,
annotation = note,
highlightPositionAnchorIndex = 0,
highlightPositionPercent = 0.0
).asCreateHighlightInput())
newHighlight?.let {

View File

@ -1,7 +1,6 @@
package app.omnivore.omnivore.dataService
import android.util.Log
import androidx.room.PrimaryKey
import app.omnivore.omnivore.models.ServerSyncStatus
import app.omnivore.omnivore.networking.*
import app.omnivore.omnivore.persistence.entities.*
@ -85,7 +84,9 @@ suspend fun DataService.sync(since: String, cursor: String?, limit: Int = 20): S
suffix = highlight.highlightFields.suffix,
createdAt = null,
updatedAt = highlight.highlightFields.updatedAt as String?,
color = highlight.highlightFields.color
color = highlight.highlightFields.color,
highlightPositionPercent = highlight.highlightFields.highlightPositionPercent,
highlightPositionAnchorIndex = highlight.highlightFields.highlightPositionAnchorIndex,
)
} ?: listOf()
SavedItemWithLabelsAndHighlights(

View File

@ -20,7 +20,9 @@ data class CreateHighlightParams(
val quote: String?,
val patch: String?,
val articleId: String?,
val `annotation`: String?
val `annotation`: String?,
val highlightPositionAnchorIndex: Int,
val highlightPositionPercent: Double
) {
fun asCreateHighlightInput() = CreateHighlightInput(
type = Optional.presentIfNotNull(type),
@ -29,7 +31,9 @@ data class CreateHighlightParams(
id = id ?: "",
patch = Optional.presentIfNotNull(patch),
quote = Optional.presentIfNotNull(quote),
shortId = shortId ?: ""
shortId = shortId ?: "",
highlightPositionAnchorIndex = Optional.presentIfNotNull(highlightPositionAnchorIndex),
highlightPositionPercent = Optional.presentIfNotNull(highlightPositionPercent)
)
}
@ -151,8 +155,10 @@ suspend fun Networker.createHighlight(input: CreateHighlightInput): Highlight? {
createdAt = createdHighlight.highlightFields.createdAt.toString(),
updatedAt = createdHighlight.highlightFields.updatedAt.toString(),
createdByMe = createdHighlight.highlightFields.createdByMe,
color = createdHighlight.highlightFields.color
)
color = createdHighlight.highlightFields.color,
highlightPositionPercent = createdHighlight.highlightFields.highlightPositionPercent,
highlightPositionAnchorIndex = createdHighlight.highlightFields.highlightPositionAnchorIndex
)
} else {
return null
}

View File

@ -54,7 +54,9 @@ suspend fun Networker.savedItem(slug: String): SavedItemQueryResponse {
createdAt = it.highlightFields.createdAt as String?,
updatedAt = it.highlightFields.updatedAt as String?,
createdByMe = it.highlightFields.createdByMe,
color = it.highlightFields.color
color = it.highlightFields.color,
highlightPositionPercent = it.highlightFields.highlightPositionPercent,
highlightPositionAnchorIndex = it.highlightFields.highlightPositionAnchorIndex
)
}

View File

@ -1,8 +1,6 @@
package app.omnivore.omnivore.networking
import androidx.room.PrimaryKey
import app.omnivore.omnivore.graphql.generated.SearchQuery
import app.omnivore.omnivore.graphql.generated.TypeaheadSearchQuery
import app.omnivore.omnivore.models.ServerSyncStatus
import app.omnivore.omnivore.persistence.entities.*
import com.apollographql.apollo3.api.Optional
@ -82,7 +80,9 @@ suspend fun Networker.search(
suffix = highlight.highlightFields.suffix,
updatedAt = highlight.highlightFields.updatedAt as String?,
createdAt = highlight.highlightFields.createdAt as String?,
color = highlight.highlightFields.color
color = highlight.highlightFields.color,
highlightPositionPercent = highlight.highlightFields.highlightPositionPercent,
highlightPositionAnchorIndex = highlight.highlightFields.highlightPositionAnchorIndex
)
}
)

View File

@ -13,7 +13,7 @@ import app.omnivore.omnivore.persistence.entities.*
SavedItemAndSavedItemLabelCrossRef::class,
SavedItemAndHighlightCrossRef::class
],
version = 9
version = 11
)
abstract class AppDatabase : RoomDatabase() {
abstract fun viewerDao(): ViewerDao

View File

@ -1,6 +1,5 @@
package app.omnivore.omnivore.persistence.entities
import androidx.lifecycle.LiveData
import androidx.room.*
import app.omnivore.omnivore.models.ServerSyncStatus
import com.google.gson.annotations.SerializedName
@ -22,7 +21,9 @@ data class Highlight(
var shortId: String,
val suffix: String?,
val updatedAt: String?,
val color: String?
val color: String?,
val highlightPositionPercent: Double?,
val highlightPositionAnchorIndex: Int?
)
@Entity(

View File

@ -152,18 +152,18 @@ fun WebReader(
webReaderViewModel.resetJavascriptDispatchQueue()
}
})
if (showHighlightColorPalette.value == true) {
HighlightColorPalette(
mode = if (isDarkMode) HighlightColorPaletteMode.Dark else HighlightColorPaletteMode.Light,
selectedColorName = highlightColor.value?.name ?: "yellow",
onColorSelected = {
webReaderViewModel.setHighlightColor(it)
},
modifier = Modifier
.align(Alignment.BottomCenter)
.padding(12.dp, 12.dp, 12.dp, 36.dp)
)
}
// if (showHighlightColorPalette.value == true) {
// HighlightColorPalette(
// mode = if (isDarkMode) HighlightColorPaletteMode.Dark else HighlightColorPaletteMode.Light,
// selectedColorName = highlightColor.value?.name ?: "yellow",
// onColorSelected = {
// webReaderViewModel.setHighlightColor(it)
// },
// modifier = Modifier
// .align(Alignment.BottomCenter)
// .padding(12.dp, 12.dp, 12.dp, 36.dp)
// )
// }
}
}