diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryFilterBar.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryFilterBar.kt index 1e3dad14a..a9febf7e3 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryFilterBar.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryFilterBar.kt @@ -1,18 +1,24 @@ package app.omnivore.omnivore.ui.library +import androidx.compose.ui.graphics.Color import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowDropDown +import androidx.compose.material.icons.filled.Clear import androidx.compose.material.icons.filled.Close +import androidx.compose.material.icons.filled.Search import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp +import app.omnivore.omnivore.R import app.omnivore.omnivore.persistence.entities.SavedItemLabel import app.omnivore.omnivore.ui.components.LabelChipColors @@ -23,6 +29,7 @@ fun LibraryFilterBar(viewModel: LibraryViewModel) { val activeSavedItemFilter: SavedItemFilter by viewModel.appliedFilterLiveData.observeAsState(SavedItemFilter.INBOX) val activeLabels: List by viewModel.activeLabelsLiveData.observeAsState(listOf()) + val searchText: String by viewModel.searchTextLiveData.observeAsState("") var isSavedItemSortFilterMenuExpanded by remember { mutableStateOf(false) } val activeSavedItemSortFilter: SavedItemSortFilter by viewModel.appliedSortFilterLiveData.observeAsState(SavedItemSortFilter.NEWEST) val listState = rememberLazyListState() @@ -37,6 +44,39 @@ fun LibraryFilterBar(viewModel: LibraryViewModel) { .fillMaxWidth() ) { item { + if (searchText.isNotEmpty()) { + AssistChip( + onClick = { + viewModel.updateSearchText("") + }, + label = { Text(searchText) }, + border = null, + colors = SuggestionChipDefaults.elevatedSuggestionChipColors( + containerColor = colorResource(R.color.gray_898989), + labelColor = Color.White, + iconContentColor = Color.White + ), + leadingIcon = { + Icon( + painter = painterResource(id = R.drawable.funnel_simple), + contentDescription = "Clear current search", + modifier = Modifier.size(17.dp), + tint = Color.White + ) + }, + trailingIcon = { + Icon( + Icons.Default.Clear, + contentDescription = "close icon to remove label", + modifier = Modifier.size(15.dp), + tint = Color.White + ) + + }, + modifier = Modifier + .padding(horizontal = 4.dp) + ) + } AssistChip( onClick = { isSavedItemFilterMenuExpanded = true }, label = { Text(activeSavedItemFilter.displayText) }, 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 2e6812113..13e5e2b4b 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 @@ -110,47 +110,6 @@ class LibraryViewModel @Inject constructor( viewModelScope.launch { itemsLiveData.postValue(listOf()) librarySearchCursor = null - - withContext(Dispatchers.IO) { - val result = dataService.librarySearch(cursor = librarySearchCursor, query = searchQueryString()) - result.cursor?.let { - librarySearchCursor = it - } - CoroutineScope(Dispatchers.Main).launch { - isRefreshing = false - } - - result.savedItems.map { - val isSavedInDB = dataService.isSavedItemContentStoredInDB(it.slug) - - if (!isSavedInDB) { - delay(2000) - contentRequestChannel.send(it.slug) - } - } - - val newItems = result.savedItems.map { - SavedItemCardDataWithLabels( - cardData = SavedItemCardData( - savedItemId = it.savedItemId, - savedAt = it.savedAt, - readingProgress = it.readingProgress, - slug = it.slug, - publisherURLString = it.publisherURLString, - title = it.title, - author = it.author, - imageURLString = it.imageURLString, - isArchived = it.isArchived, - pageURLString = it.pageURLString, - contentReader = it.contentReader, - wordsCount = it.wordsCount - ), - labels = listOf() - ) - } - - itemsLiveData.postValue(newItems) - } } } diff --git a/android/Omnivore/app/src/main/res/drawable/funnel_simple.xml b/android/Omnivore/app/src/main/res/drawable/funnel_simple.xml new file mode 100644 index 000000000..a85f9ec01 --- /dev/null +++ b/android/Omnivore/app/src/main/res/drawable/funnel_simple.xml @@ -0,0 +1,9 @@ + + +