From 82ba22cda23fbd1853a9810ce70ec934ac85b743 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sat, 17 Dec 2022 14:24:24 +0800 Subject: [PATCH] Resolve #542 --- .../main/java/com/hippo/ehviewer/client/EhTagDatabase.kt | 9 ++++++++- .../java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhTagDatabase.kt b/app/src/main/java/com/hippo/ehviewer/client/EhTagDatabase.kt index 6d7f6b25c..08937dfcd 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhTagDatabase.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhTagDatabase.kt @@ -80,11 +80,18 @@ class EhTagDatabase(private val name: String, source: BufferedSource) { } /* Construct a cold flow for tag database suggestions */ - fun suggestFlow(keyword: String, translate: Boolean): Flow> = flow { + fun suggestFlow(keyword: String, translate: Boolean, exactly: Boolean = false): Flow> = flow { tagList?.forEach { val tag = it.first val hint = if (translate) it.second else null val index = tag.indexOf(':') + if (tag.substring(index + 1).trim() == keyword) { + if (exactly) + emit(Pair(hint, tag)) + return@forEach + } + if (exactly) + return@forEach val keywordMatches: Boolean = if (index == -1 || index >= tag.length - 1 || keyword.length > 2) { containsIgnoreSpace(tag, keyword) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt index 0cbb3c8cc..e8a5017f6 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt @@ -315,6 +315,10 @@ abstract class SearchBarScene : ToolbarScene() { Settings.getShowTagTranslations() && EhTagDatabase.isTranslatable( requireContext() ) + + suggestFlow(keyword, translate, true).collect { + emit(TagSuggestion(it.first, it.second)) + } suggestFlow(keyword, translate).collect { emit(TagSuggestion(it.first, it.second)) }