fix: Search and allow empty query #2096

This commit is contained in:
J-Jamet
2025-07-24 21:29:43 +02:00
parent e273eb6e03
commit e397b92c36
3 changed files with 11 additions and 5 deletions

View File

@@ -892,6 +892,7 @@ open class Database {
return mSearchHelper.createVirtualGroupWithSearchResult(this,
SearchParameters().apply {
searchQuery = searchInfoString
allowEmptyQuery = false
searchInTitles = true
searchInUsernames = false
searchInPasswords = false

View File

@@ -123,11 +123,9 @@ class SearchHelper {
*/
fun searchInEntry(entry: Entry,
searchParameters: SearchParameters): Boolean {
val searchQuery = searchParameters.searchQuery
// Not found if the search string is empty
if (searchQuery.isEmpty())
return false
if (searchParameters.searchQuery.isEmpty())
return searchParameters.allowEmptyQuery
// Exclude entry expired
if (!searchParameters.searchInExpired) {
@@ -206,10 +204,14 @@ class SearchHelper {
regex.matches(stringToCheck)
} else {
searchParameters.searchQuery.split(" ").any { word ->
if (word.isEmpty()) {
false
} else {
specialComparison?.invoke(stringToCheck, word)
?: stringToCheck.contains(word, !searchParameters.caseSensitive)
}
}
}
}
}
}

View File

@@ -27,6 +27,7 @@ import android.os.Parcelable
*/
class SearchParameters() : Parcelable{
var searchQuery: String = ""
var allowEmptyQuery = true
var caseSensitive = false
var isRegex = false
@@ -49,6 +50,7 @@ class SearchParameters() : Parcelable{
constructor(parcel: Parcel) : this() {
searchQuery = parcel.readString() ?: searchQuery
allowEmptyQuery = parcel.readByte() != 0.toByte()
caseSensitive = parcel.readByte() != 0.toByte()
isRegex = parcel.readByte() != 0.toByte()
searchInTitles = parcel.readByte() != 0.toByte()
@@ -69,6 +71,7 @@ class SearchParameters() : Parcelable{
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(searchQuery)
parcel.writeByte(if (allowEmptyQuery) 1 else 0)
parcel.writeByte(if (caseSensitive) 1 else 0)
parcel.writeByte(if (isRegex) 1 else 0)
parcel.writeByte(if (searchInTitles) 1 else 0)