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 5d43370f1..4181471e3 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 @@ -91,70 +91,6 @@ suspend fun DataService.sync(since: String, cursor: String?, limit: Int = 20): S } db.savedItemWithLabelsAndHighlightsDao().insertAll(savedItems) -// -// db.savedItemDao().insertAll(savedItems) -// -// val labels: MutableList = mutableListOf() -// val crossRefs: MutableList = mutableListOf() -// -// // save labels -// for (item in syncResult.items) { -// val itemLabels = (item.labels ?: listOf()).map { -// SavedItemLabel( -// savedItemLabelId = it.labelFields.id, -// name = it.labelFields.name, -// color = it.labelFields.color, -// createdAt = null, -// labelDescription = null -// ) -// } -// -// labels.addAll(itemLabels) -// -// val newCrossRefs = itemLabels.map { -// SavedItemAndSavedItemLabelCrossRef( -// savedItemLabelId = it.savedItemLabelId, -// savedItemId = item.id -// ) -// } -// -// crossRefs.addAll(newCrossRefs) -// } -// -// db.savedItemLabelDao().insertAll(labels) -// db.savedItemAndSavedItemLabelCrossRefDao().insertAll(crossRefs) -// -// // Persist Highlights -// db.highlightDao().insertAll(syncResult.items.flatMap { -// it.highlights ?: listOf() -// }.map { -// Highlight( -// type = it.highlightFields.type.toString(), -// highlightId = it.highlightFields.id, -// annotation = it.highlightFields.annotation, -// createdByMe = it.highlightFields.createdByMe, -// markedForDeletion = false, -// patch = it.highlightFields.patch, -// prefix = it.highlightFields.prefix, -// quote = it.highlightFields.quote, -// serverSyncStatus = ServerSyncStatus.IS_SYNCED.rawValue, -// shortId = it.highlightFields.shortId, -// suffix = it.highlightFields.suffix, -// createdAt = null, -// updatedAt = it.highlightFields.updatedAt as String?, -// ) -// }) -// -// val highlightCrossRefs = syncResult.items.flatMap { -// val savedItem = it -// (savedItem.highlights ?: listOf()).map { -// Pair(it, savedItem.id) -// } -// }.map { -// SavedItemAndHighlightCrossRef(highlightId = it.first.highlightFields.id, savedItemId = it.second) -// } -// -// db.savedItemAndHighlightCrossRefDao().insertAll(highlightCrossRefs) Log.d("sync", "found ${syncResult.items.size} items with sync api. Since: $since") @@ -175,28 +111,16 @@ fun DataService.isSavedItemContentStoredInDB(slug: String): Boolean { suspend fun DataService.fetchSavedItemContent(slug: String) { val syncResult = networker.savedItem(slug) - val isSuccess = syncResult.item != null - val savedItem = syncResult.item ?: return - db.savedItemDao().insert(savedItem) - - // Persist Labels - db.savedItemLabelDao().insertAll(syncResult.labels) - - val labelCrossRefs = syncResult.labels.map { - SavedItemAndSavedItemLabelCrossRef(savedItemLabelId = it.savedItemLabelId, savedItemId = savedItem.savedItemId) + val savedItem = syncResult.item + savedItem?.let { + val item = SavedItemWithLabelsAndHighlights( + savedItem = savedItem, + labels = syncResult.labels, + highlights = syncResult.highlights + ) + db.savedItemWithLabelsAndHighlightsDao().insertAll(listOf(item)) } - - db.savedItemAndSavedItemLabelCrossRefDao().insertAll(labelCrossRefs) - - // Persist Highlights - db.highlightDao().insertAll(syncResult.highlights) - - val highlightCrossRefs = syncResult.highlights.map { - SavedItemAndHighlightCrossRef(highlightId = it.highlightId, savedItemId = savedItem.savedItemId) - } - - db.savedItemAndHighlightCrossRefDao().insertAll(highlightCrossRefs) } 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 d559aff3b..a44e3e32e 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 @@ -138,9 +138,6 @@ interface SavedItemDao { @Query("SELECT * FROM savedItem WHERE slug = :slug") fun getSavedItemWithLabelsAndHighlights(slug: String): SavedItemWithLabelsAndHighlights? - @Insert(onConflict = OnConflictStrategy.REPLACE) - fun insert(item: SavedItem) - @Query("DELETE FROM savedItem WHERE savedItemId = :itemID") fun deleteById(itemID: String) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt index 577526da6..bffdf8923 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt @@ -76,6 +76,8 @@ class LibraryViewModel @Inject constructor( } fun refresh() { + cursor = null + librarySearchCursor = null isRefreshing = true load(true) } @@ -164,8 +166,9 @@ class LibraryViewModel @Inject constructor( } } fun handleFilterChanges() { + librarySearchCursor = null + if (appliedSortFilterLiveData.value != null && appliedFilterLiveData.value != null) { - val applied = appliedFilterLiveData.value val sortKey = when (appliedSortFilterLiveData.value) { SavedItemSortFilter.NEWEST -> "newest" SavedItemSortFilter.OLDEST -> "oldest" diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/SavedItemCard.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/SavedItemCard.kt index 126ac2570..ee3fe78bc 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/SavedItemCard.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/SavedItemCard.kt @@ -1,6 +1,7 @@ package app.omnivore.omnivore.ui.savedItemViews import LabelChip +import android.util.Log import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyRow @@ -34,8 +35,6 @@ import coil.compose.rememberAsyncImagePainter fun SavedItemCard(savedItemViewModel: SavedItemViewModel, savedItem: SavedItemWithLabelsAndHighlights, onClickHandler: () -> Unit, actionHandler: (SavedItemAction) -> Unit) { val listState = rememberLazyListState() - val actionsMenuItem: SavedItemWithLabelsAndHighlights? by savedItemViewModel.actionsMenuItemLiveData.observeAsState(null) - Column( modifier = Modifier .combinedClickable(