diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibraryLiveData.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibraryLiveData.kt deleted file mode 100644 index b9cd3967f..000000000 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/LibraryLiveData.kt +++ /dev/null @@ -1,126 +0,0 @@ -package app.omnivore.omnivore.dataService - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MediatorLiveData -import app.omnivore.omnivore.persistence.entities.SavedItemCardDataWithLabels -import app.omnivore.omnivore.persistence.entities.SavedItemLabel -import app.omnivore.omnivore.ui.library.SavedItemFilter -import app.omnivore.omnivore.ui.library.SavedItemSortFilter - -fun DataService.libraryLiveData( - primaryFilter: SavedItemFilter, - sortFilter: SavedItemSortFilter, - labels: List -): LiveData> { - val mediatorLiveData = MediatorLiveData>() - val queryParams = LibraryLiveDataQueryParams.make(primaryFilter) - - val libraryLiveData = when (sortFilter) { - SavedItemSortFilter.NEWEST -> db.savedItemDao().getLibraryLiveData( - archiveFilter = queryParams.archiveFilter - ) - SavedItemSortFilter.OLDEST -> db.savedItemDao().getLibraryLiveDataSortedByOldest( - archiveFilter = queryParams.archiveFilter - ) - SavedItemSortFilter.RECENTLY_READ -> db.savedItemDao().getLibraryLiveDataSortedByRecentlyRead( - archiveFilter = queryParams.archiveFilter - ) - SavedItemSortFilter.RECENTLY_PUBLISHED -> db.savedItemDao().getLibraryLiveDataSortedByRecentlyPublished( - archiveFilter = queryParams.archiveFilter - ) - } - - mediatorLiveData.addSource(libraryLiveData) { result -> - when (primaryFilter) { - SavedItemFilter.INBOX -> { - mediatorLiveData.value = result - } - SavedItemFilter.READ_LATER -> { - mediatorLiveData.value = result.filter { item -> - !item.labels.any { it.name.lowercase() == "newsletter" } - } - } - SavedItemFilter.NEWSLETTERS -> { - mediatorLiveData.value = result.filter { item -> - item.labels.any { it.name.lowercase() == "newsletter" } - } - } - SavedItemFilter.RECOMMENDED -> { - mediatorLiveData.value = result // TODO: "recommendations.@count > 0" - } - SavedItemFilter.ALL -> { - mediatorLiveData.value = result - } - SavedItemFilter.ARCHIVED -> { - mediatorLiveData.value = result - } - SavedItemFilter.HAS_HIGHLIGHTS -> { - mediatorLiveData.value = result // TODO: "highlights.@count > 0" - } - SavedItemFilter.FILES -> { - mediatorLiveData.value = result.filter { item -> - item.cardData.contentReader == "PDF" - } - } - } - - if (labels.isNotEmpty()) { - mediatorLiveData.value = (mediatorLiveData.value ?: listOf()).filter { - it.labels.intersect(labels.toSet()).any() - } - } - } - - return mediatorLiveData -} - -private data class LibraryLiveDataQueryParams( - val archiveFilter: Int -) { - companion object { - fun make(savedItemFilter: SavedItemFilter): LibraryLiveDataQueryParams { - return when (savedItemFilter) { - SavedItemFilter.INBOX -> { - LibraryLiveDataQueryParams( - archiveFilter = 1, // Filter out items marked as archive - ) - } - SavedItemFilter.READ_LATER -> { - LibraryLiveDataQueryParams( - archiveFilter = 1, // Filter out items marked as archive - ) - } - SavedItemFilter.NEWSLETTERS -> { - LibraryLiveDataQueryParams( - archiveFilter = 1, // Filter out items marked as archive - ) - } - SavedItemFilter.RECOMMENDED -> { - LibraryLiveDataQueryParams( - archiveFilter = 1, // Filter out items marked as archive - ) - } - SavedItemFilter.ALL -> { - LibraryLiveDataQueryParams( - archiveFilter = 2, // Don't filter anything out (2 will not match anything) - ) - } - SavedItemFilter.ARCHIVED -> { - LibraryLiveDataQueryParams( - archiveFilter = 0, // Filter out items not marked as archived - ) - } - SavedItemFilter.HAS_HIGHLIGHTS -> { - LibraryLiveDataQueryParams( - archiveFilter = 1, // Filter out items marked as archive - ) - } - SavedItemFilter.FILES -> { - LibraryLiveDataQueryParams( - archiveFilter = 1, // Filter out items marked as archive - ) - } - } - } - } -} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/TypeaheadSearch.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/TypeaheadSearch.kt index 48a61bafd..1091c2889 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/TypeaheadSearch.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/TypeaheadSearch.kt @@ -1,12 +1,7 @@ package app.omnivore.omnivore.networking -import app.omnivore.omnivore.graphql.generated.SearchQuery import app.omnivore.omnivore.graphql.generated.TypeaheadSearchQuery -import app.omnivore.omnivore.persistence.entities.SavedItem -import app.omnivore.omnivore.persistence.entities.SavedItemCardData -import app.omnivore.omnivore.persistence.entities.SavedItemLabel import app.omnivore.omnivore.persistence.entities.TypeaheadCardData -import com.apollographql.apollo3.api.Optional data class SearchQueryResponse( val cursor: String?, 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 68f4b40f5..535ee1899 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 @@ -2,12 +2,7 @@ package app.omnivore.omnivore.persistence.entities import androidx.core.net.toUri import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import androidx.room.* -import app.omnivore.omnivore.BuildConfig -import app.omnivore.omnivore.graphql.generated.SearchQuery -import app.omnivore.omnivore.models.ServerSyncStatus -import app.omnivore.omnivore.ui.library.SavedItemSortFilter import java.util.* @Entity @@ -69,30 +64,6 @@ data class SavedItem( } } -data class SavedItemCardData( - val savedItemId: String, - val slug: String, - val publisherURLString: String?, - val title: String, - val author: String?, - val imageURLString: String?, - val isArchived: Boolean, - val pageURLString: String, - val contentReader: String?, - val savedAt: String, - val readingProgress: Double, - val wordsCount: Int? -) { - fun publisherDisplayName(): String? { - return publisherURLString?.toUri()?.host - } - - fun isPDF(): Boolean { - val hasPDFSuffix = pageURLString.endsWith("pdf") - return contentReader == "PDF" || hasPDFSuffix - } -} - data class TypeaheadCardData( val savedItemId: String, val slug: String, @@ -126,42 +97,6 @@ interface SavedItemDao { @Update fun update(savedItem: SavedItem) - @Transaction - @Query( - "SELECT ${SavedItemQueryConstants.columns} " + - "FROM SavedItem " + - "WHERE serverSyncStatus != 2 AND isArchived != :archiveFilter " + - "ORDER BY savedAt DESC" - ) - fun getLibraryLiveData(archiveFilter: Int): LiveData> - - @Transaction - @Query( - "SELECT ${SavedItemQueryConstants.columns} " + - "FROM SavedItem " + - "WHERE serverSyncStatus != 2 AND isArchived != :archiveFilter " + - "ORDER BY savedAt ASC" - ) - fun getLibraryLiveDataSortedByOldest(archiveFilter: Int): LiveData> - - @Transaction - @Query( - "SELECT ${SavedItemQueryConstants.columns} " + - "FROM SavedItem " + - "WHERE serverSyncStatus != 2 AND isArchived != :archiveFilter " + - "ORDER BY readAt DESC, savedAt DESC" - ) - fun getLibraryLiveDataSortedByRecentlyRead(archiveFilter: Int): LiveData> - - @Transaction - @Query( - "SELECT ${SavedItemQueryConstants.columns} " + - "FROM SavedItem " + - "WHERE serverSyncStatus != 2 AND isArchived != :archiveFilter " + - "ORDER BY publishDate DESC" - ) - fun getLibraryLiveDataSortedByRecentlyPublished(archiveFilter: Int): LiveData> - @Transaction @Query( "SELECT ${SavedItemQueryConstants.libraryColumns} " + diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/persistence/entities/SavedItemLabel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/persistence/entities/SavedItemLabel.kt index 1809ddf91..dea2200ac 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/persistence/entities/SavedItemLabel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/persistence/entities/SavedItemLabel.kt @@ -44,25 +44,6 @@ data class SavedItemAndSavedItemLabelCrossRef( val savedItemId: String ) -data class SavedItemWithLabels( - @Embedded val savedItem: SavedItem, - @Relation( - parentColumn = "savedItemId", - entityColumn = "savedItemLabelId", - associateBy = Junction(SavedItemAndSavedItemLabelCrossRef::class) - ) - val labels: List -) - -data class SavedItemCardDataWithLabels( - @Embedded val cardData: SavedItemCardData, - @Relation( - parentColumn = "savedItemId", - entityColumn = "savedItemLabelId", - associateBy = Junction(SavedItemAndSavedItemLabelCrossRef::class) - ) - val labels: List -) @Dao interface SavedItemAndSavedItemLabelCrossRefDao { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryNavigationBar.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryNavigationBar.kt index afd43845b..19e2a6bb8 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryNavigationBar.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryNavigationBar.kt @@ -3,13 +3,11 @@ package app.omnivore.omnivore.ui.library import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut -import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.* -import androidx.compose.material.icons.outlined.Close import androidx.compose.material.icons.outlined.Delete import androidx.compose.material3.* import androidx.compose.runtime.* @@ -19,14 +17,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.onFocusChanged -import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.input.ImeAction -import androidx.lifecycle.MutableLiveData import androidx.navigation.NavHostController import app.omnivore.omnivore.R -import app.omnivore.omnivore.persistence.entities.SavedItemCardData -import app.omnivore.omnivore.persistence.entities.SavedItemCardDataWithLabels import app.omnivore.omnivore.persistence.entities.SavedItemWithLabelsAndHighlights @OptIn(ExperimentalMaterial3Api::class) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt index 3d9596578..1e9b49dd4 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryView.kt @@ -33,8 +33,6 @@ import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import app.omnivore.omnivore.R import app.omnivore.omnivore.Routes -import app.omnivore.omnivore.persistence.entities.SavedItemCardData -import app.omnivore.omnivore.persistence.entities.SavedItemCardDataWithLabels import app.omnivore.omnivore.persistence.entities.SavedItemWithLabelsAndHighlights import app.omnivore.omnivore.ui.components.LabelsSelectionSheet import app.omnivore.omnivore.ui.savedItemViews.SavedItemCard diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SavedItemViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SavedItemViewModel.kt index 1d2728d8a..199c668ce 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SavedItemViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SavedItemViewModel.kt @@ -1,7 +1,6 @@ package app.omnivore.omnivore.ui.library import androidx.lifecycle.MutableLiveData -import app.omnivore.omnivore.persistence.entities.SavedItemCardData import app.omnivore.omnivore.persistence.entities.SavedItemWithLabelsAndHighlights interface SavedItemViewModel { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchView.kt index f2aaa71d6..15d47dcf7 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SearchView.kt @@ -22,8 +22,6 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import app.omnivore.omnivore.R -import app.omnivore.omnivore.persistence.entities.SavedItemCardData -import app.omnivore.omnivore.persistence.entities.SavedItemCardDataWithLabels import app.omnivore.omnivore.persistence.entities.SavedItemWithLabelsAndHighlights import app.omnivore.omnivore.ui.reader.WebReaderLoadingContainerActivity import app.omnivore.omnivore.persistence.entities.TypeaheadCardData 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 1144ced03..126ac2570 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 @@ -21,8 +21,6 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.* import app.omnivore.omnivore.R -import app.omnivore.omnivore.persistence.entities.SavedItemCardData -import app.omnivore.omnivore.persistence.entities.SavedItemLabel import app.omnivore.omnivore.persistence.entities.SavedItemWithLabelsAndHighlights import app.omnivore.omnivore.ui.components.LabelChipColors import app.omnivore.omnivore.ui.library.LibraryViewModel diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/TypeaheadSearchCard.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/TypeaheadSearchCard.kt index 337b8afae..f74cceef8 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/TypeaheadSearchCard.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/savedItemViews/TypeaheadSearchCard.kt @@ -17,8 +17,6 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.* -import app.omnivore.omnivore.persistence.entities.SavedItemCardData -import app.omnivore.omnivore.persistence.entities.SavedItemLabel import app.omnivore.omnivore.persistence.entities.TypeaheadCardData import app.omnivore.omnivore.ui.components.LabelChipColors import app.omnivore.omnivore.ui.library.SavedItemAction