From 048facb7cafbce8fcf9cc5b7e82c2e1600145899 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Mon, 29 May 2023 10:30:23 +0800 Subject: [PATCH] Fix delete propogation --- .../dataService/HighlightActionHandlers.kt | 31 ++++++++++--------- .../omnivore/dataService/LibrarySync.kt | 4 +++ .../omnivore/networking/HighlightMutations.kt | 4 +-- .../persistence/entities/SavedItem.kt | 3 ++ 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/HighlightActionHandlers.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/HighlightActionHandlers.kt index 3d5fd733c..1362ca9cd 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/HighlightActionHandlers.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/HighlightActionHandlers.kt @@ -51,29 +51,29 @@ suspend fun DataService.createWebHighlight(jsonString: String) { suspend fun DataService.createNoteHighlight(savedItemId: String, note: String) { val shortId = UUID.randomUUID().toString() val createHighlightId = UUID.randomUUID().toString() - val createHighlightParams = CreateHighlightParams( - type = HighlightType.NOTE,, - shortId = shortId, - id = createHighlightId, - quote = null, - patch = null, - articleId = null, - annotation = note, - ) +// val createHighlightParams = CreateHighlightParams( +// type = HighlightType.NOTE,, +// shortId = shortId, +// id = createHighlightId, +// quote = null, +// patch = null, +// articleId = null, +// annotation = note, +// ) withContext(Dispatchers.IO) { val highlight = Highlight( type = "HIGHLIGHT", - highlightId = createHighlightInput.id, - shortId = createHighlightInput.shortId, - quote = createHighlightInput.quote.getOrNull(), + highlightId = createHighlightId, + shortId = shortId, + quote = null, prefix = null, suffix = null, - patch = createHighlightInput.patch.getOrNull(), - annotation = createHighlightInput.annotation.getOrNull(), + patch =null, + annotation = note, createdAt = null, updatedAt = null, - createdByMe = false + createdByMe = true ) highlight.serverSyncStatus = ServerSyncStatus.NEEDS_CREATION.rawValue @@ -87,6 +87,7 @@ suspend fun DataService.createNoteHighlight(savedItemId: String, note: String) { db.savedItemAndHighlightCrossRefDao().insertAll(listOf(crossRef)) val newHighlight = networker.createHighlight(input = CreateHighlightParams( + type = HighlightType.HIGHLIGHT, shortId = shortId, id = createHighlightId, quote = null, diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibrarySync.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibrarySync.kt index 4181471e3..a28a71a9b 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibrarySync.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibrarySync.kt @@ -34,6 +34,10 @@ suspend fun DataService.sync(since: String, cursor: String?, limit: Int = 20): S val syncResult = networker.savedItemUpdates(cursor = cursor, limit = limit, since = since) ?: return SavedItemSyncResult.errorResult + if (syncResult.deletedItemIDs.isNotEmpty()) { + db.savedItemDao().deleteByIds(syncResult.deletedItemIDs) + } + val savedItems = syncResult.items.map { val savedItem = SavedItem( savedItemId = it.id, diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/HighlightMutations.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/HighlightMutations.kt index 3d184d90b..85930d502 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/HighlightMutations.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/HighlightMutations.kt @@ -23,8 +23,8 @@ data class CreateHighlightParams( val `annotation`: String? ) { fun asCreateHighlightInput() = CreateHighlightInput( - type = type, - annotation = Optional.presentIfNotNull(`annotation`), + type = Optional.presentIfNotNull(type), + annotation = Optional.presentIfNotNull(annotation), articleId = articleId ?: "", id = id ?: "", patch = Optional.presentIfNotNull(patch), diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/persistence/entities/SavedItem.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/persistence/entities/SavedItem.kt index 6c18a967a..863ebe7ae 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/persistence/entities/SavedItem.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/persistence/entities/SavedItem.kt @@ -142,6 +142,9 @@ interface SavedItemDao { @Query("DELETE FROM savedItem WHERE savedItemId = :itemID") fun deleteById(itemID: String) + @Query("DELETE FROM savedItem WHERE savedItemId in (:itemIDs)") + fun deleteByIds(itemIDs: List) + @Update fun update(savedItem: SavedItem)