mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
send note updates to server
This commit is contained in:
parent
5b2c58d955
commit
486a682ad3
3 changed files with 40 additions and 2 deletions
|
|
@ -4,8 +4,10 @@ import android.util.Log
|
|||
import app.omnivore.omnivore.graphql.generated.CreateHighlightMutation
|
||||
import app.omnivore.omnivore.graphql.generated.DeleteHighlightMutation
|
||||
import app.omnivore.omnivore.graphql.generated.MergeHighlightMutation
|
||||
import app.omnivore.omnivore.graphql.generated.UpdateHighlightMutation
|
||||
import app.omnivore.omnivore.graphql.generated.type.CreateHighlightInput
|
||||
import app.omnivore.omnivore.graphql.generated.type.MergeHighlightInput
|
||||
import app.omnivore.omnivore.graphql.generated.type.UpdateHighlightInput
|
||||
import app.omnivore.omnivore.models.Highlight
|
||||
import com.apollographql.apollo3.api.Optional
|
||||
import com.google.gson.Gson
|
||||
|
|
@ -29,6 +31,18 @@ data class CreateHighlightParams(
|
|||
)
|
||||
}
|
||||
|
||||
data class UpdateHighlightParams(
|
||||
val highlightId: String?,
|
||||
val `annotation`: String?,
|
||||
val sharedAt: String?,
|
||||
) {
|
||||
fun asUpdateHighlightInput() = UpdateHighlightInput(
|
||||
annotation = Optional.presentIfNotNull(`annotation`),
|
||||
highlightId = highlightId ?: "",
|
||||
sharedAt = Optional.presentIfNotNull(sharedAt)
|
||||
)
|
||||
}
|
||||
|
||||
data class MergeHighlightsParams(
|
||||
val shortId: String?,
|
||||
val id: String?,
|
||||
|
|
@ -74,6 +88,17 @@ suspend fun Networker.deleteHighlights(highlightIDs: List<String>): Boolean {
|
|||
return !hasFailure
|
||||
}
|
||||
|
||||
suspend fun Networker.updateWebHighlight(jsonString: String): Boolean {
|
||||
val input = Gson().fromJson(jsonString, UpdateHighlightParams::class.java).asUpdateHighlightInput()
|
||||
return updateHighlight(input)
|
||||
}
|
||||
|
||||
suspend fun Networker.updateHighlight(input: UpdateHighlightInput): Boolean {
|
||||
val result = authenticatedApolloClient().mutation(UpdateHighlightMutation(input)).execute()
|
||||
Log.d("Network", "update highlight result: $result")
|
||||
return result.data?.updateHighlight?.onUpdateHighlightSuccess?.highlight != null
|
||||
}
|
||||
|
||||
suspend fun Networker.mergeWebHighlights(jsonString: String): Boolean {
|
||||
val input = Gson().fromJson(jsonString, MergeHighlightsParams::class.java).asMergeHighlightInput()
|
||||
return mergeHighlights(input)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import androidx.lifecycle.viewModelScope
|
|||
import app.omnivore.omnivore.DatastoreRepository
|
||||
import app.omnivore.omnivore.graphql.generated.type.CreateHighlightInput
|
||||
import app.omnivore.omnivore.graphql.generated.type.MergeHighlightInput
|
||||
import app.omnivore.omnivore.graphql.generated.type.UpdateHighlightInput
|
||||
import app.omnivore.omnivore.models.LinkedItem
|
||||
import app.omnivore.omnivore.networking.*
|
||||
import com.apollographql.apollo3.api.Optional
|
||||
|
|
@ -152,8 +153,16 @@ class PDFReaderViewModel @Inject constructor(
|
|||
annotation.customData = JSONObject().put("omnivoreHighlight", it)
|
||||
}
|
||||
|
||||
// TODO: Sync update with data service
|
||||
|
||||
// Sync update with data service
|
||||
viewModelScope.launch {
|
||||
val input = UpdateHighlightInput(
|
||||
annotation = Optional.presentIfNotNull(note),
|
||||
highlightId = pluckHighlightID(annotation) ?: "",
|
||||
sharedAt = Optional.Absent
|
||||
)
|
||||
networker.updateHighlight(input)
|
||||
Log.d("network", "updated $annotation")
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteHighlight(annotation: Annotation) {
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@ class WebReaderViewModel @Inject constructor(
|
|||
}
|
||||
"updateHighlight" -> {
|
||||
Log.d("Loggo", "receive update highlight action: $jsonString")
|
||||
viewModelScope.launch {
|
||||
val isHighlightUpdateSynced = networker.updateWebHighlight(jsonString)
|
||||
Log.d("Network", "isHighlightUpdateSynced = $isHighlightUpdateSynced")
|
||||
}
|
||||
}
|
||||
"articleReadingProgress" -> {
|
||||
viewModelScope.launch {
|
||||
|
|
|
|||
Loading…
Reference in a new issue