send note updates to server

This commit is contained in:
Satindar Dhillon 2022-12-07 10:14:03 -08:00
parent 5b2c58d955
commit 486a682ad3
3 changed files with 40 additions and 2 deletions

View file

@ -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)

View file

@ -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) {

View file

@ -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 {