diff --git a/CHANGELOG.md b/CHANGELOG.md index 05bc44391..c2b7d5f8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co - Add back support for drag-and-drop category reordering ([@cuong-tran](https://github.com/cuong-tran)) ([#1427](https://github.com/mihonapp/mihon/pull/1427)) - Add option to mark duplicate read chapters as read after library update or while reading ([@AntsyLich](https://github.com/AntsyLich)) ([#1785](https://github.com/mihonapp/mihon/pull/1785), [#1791](https://github.com/mihonapp/mihon/pull/1791), [#1870](https://github.com/mihonapp/mihon/pull/1870)) - Display staff information on Anilist tracker search results ([@NarwhalHorns](https://github.com/NarwhalHorns)) ([#1810](https://github.com/mihonapp/mihon/pull/1810)) +- Add `id:` prefix search to library to search by internal DB ID ([@MajorTanya](https://github.com/MajorTanya)) ([#1856](https://github.com/mihonapp/mihon/pull/1856)) ### Changed - Sliders UI diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index 2bed5b784..996e4ff98 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -981,7 +981,7 @@ class LibraryScreenModel( } } - suspend fun filterLibrary(unfiltered: List, query: String?, loggedInTrackServices: Map): List { + private suspend fun filterLibrary(unfiltered: List, query: String?, loggedInTrackServices: Map): List { return if (unfiltered.isNotEmpty() && !query.isNullOrBlank()) { // Prepare filter object val parsedQuery = searchEngine.parseQuery(query) @@ -997,6 +997,10 @@ class LibraryScreenModel( .associateBy { it.id } unfiltered.asFlow().cancellable().filter { item -> val mangaId = item.libraryManga.manga.id + if (query.startsWith("id:", true)) { + val id = query.substringAfter("id:").toLongOrNull() + return@filter mangaId == id + } val sourceId = item.libraryManga.manga.source if (isMetadataSource(sourceId) && mangaWithMetaIds.binarySearch(mangaId) >= 0) { val tags = getSearchTags.await(mangaId)