From 5c5a2a6bd9b78898000b1d59d472c29c879ca293 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 19 Jan 2024 17:01:52 +0100 Subject: [PATCH] feat: button to remove individual entries from search history --- .../vibeyou/backend/database/dao/SearchDao.kt | 3 +++ .../backend/repository/LocalMusicRepository.kt | 1 + .../backend/repository/PipedMusicRepository.kt | 1 + .../backend/viewmodel/LocalSearchViewModel.kt | 6 ++++++ .../ui/screens/search/LocalSearchScreen.kt | 17 ++++++++++++++++- 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/suhasdissa/vibeyou/backend/database/dao/SearchDao.kt b/app/src/main/java/app/suhasdissa/vibeyou/backend/database/dao/SearchDao.kt index 24db8985..70d7a416 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/backend/database/dao/SearchDao.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/backend/database/dao/SearchDao.kt @@ -13,4 +13,7 @@ interface SearchDao { @Query("SELECT * from SearchQuery") fun getSearchHistory(): List + + @Query("DELETE from SearchQuery WHERE `query` = :query") + fun deleteQuery(query: String) } diff --git a/app/src/main/java/app/suhasdissa/vibeyou/backend/repository/LocalMusicRepository.kt b/app/src/main/java/app/suhasdissa/vibeyou/backend/repository/LocalMusicRepository.kt index 336a14e9..77401c9d 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/backend/repository/LocalMusicRepository.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/backend/repository/LocalMusicRepository.kt @@ -270,6 +270,7 @@ class LocalMusicRepository( } fun saveSearchQuery(query: String) = searchDao.addSearchQuery(SearchQuery(id = 0, query)) + fun deleteQuery(query: String) = searchDao.deleteQuery(query) fun getSearchHistory() = searchDao.getSearchHistory() companion object { diff --git a/app/src/main/java/app/suhasdissa/vibeyou/backend/repository/PipedMusicRepository.kt b/app/src/main/java/app/suhasdissa/vibeyou/backend/repository/PipedMusicRepository.kt index 22805349..16349021 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/backend/repository/PipedMusicRepository.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/backend/repository/PipedMusicRepository.kt @@ -112,5 +112,6 @@ class PipedMusicRepository( songsDao.search(query).map { it.asSong } fun saveSearchQuery(query: String) = searchDao.addSearchQuery(SearchQuery(id = 0, query)) + fun deleteQuery(query: String) = searchDao.deleteQuery(query) fun getSearchHistory() = searchDao.getSearchHistory() } diff --git a/app/src/main/java/app/suhasdissa/vibeyou/backend/viewmodel/LocalSearchViewModel.kt b/app/src/main/java/app/suhasdissa/vibeyou/backend/viewmodel/LocalSearchViewModel.kt index 7869438b..b1132418 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/backend/viewmodel/LocalSearchViewModel.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/backend/viewmodel/LocalSearchViewModel.kt @@ -126,6 +126,12 @@ class LocalSearchViewModel(private val musicRepository: LocalMusicRepository) : } } + fun deleteFromHistory(query: String) { + musicRepository.deleteQuery(query) + + history = history.minus(query) + } + companion object { val Factory: ViewModelProvider.Factory = viewModelFactory { initializer { diff --git a/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/search/LocalSearchScreen.kt b/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/search/LocalSearchScreen.kt index 0a664a63..c4e49d8a 100644 --- a/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/search/LocalSearchScreen.kt +++ b/app/src/main/java/app/suhasdissa/vibeyou/ui/screens/search/LocalSearchScreen.kt @@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState @@ -14,6 +15,7 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.ArrowBack import androidx.compose.material.icons.rounded.Clear +import androidx.compose.material.icons.rounded.Close import androidx.compose.material.icons.rounded.History import androidx.compose.material.icons.rounded.Search import androidx.compose.material3.ExperimentalMaterial3Api @@ -29,6 +31,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource @@ -131,7 +134,6 @@ fun LocalSearchScreen( Column( Modifier .verticalScroll(scroll) - .padding(horizontal = 8.dp) ) { if (localSearchViewModel.songSearchSuggestion.isNotEmpty()) { Text( @@ -164,6 +166,19 @@ fun LocalSearchScreen( imageVector = Icons.Rounded.History, contentDescription = null ) + }, + trailingContent = { + IconButton( + modifier = Modifier.offset(x = 16.dp), + onClick = { + localSearchViewModel.deleteFromHistory(it) + } + ) { + Icon( + imageVector = Icons.Rounded.Close, + contentDescription = null + ) + } } ) }