From f81da3dcce9afba883b6a3accdd3bf4ea21cfa81 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Thu, 3 Apr 2025 01:48:54 +0600 Subject: [PATCH] Deduplicate entries when browsing (#1957) --- CHANGELOG.md | 1 + .../ui/browse/source/globalsearch/SearchScreenModel.kt | 4 +++- .../main/java/tachiyomi/data/source/SourcePagingSource.kt | 6 +++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b5c6fbd7..18b91f5c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co ### Improved - Significantly improve browsing speed (near instantaneous) ([@AntsyLich](https://github.com/AntsyLich)) ([#1946](https://github.com/mihonapp/mihon/pull/1946)) +- Deduplicate entries when browsing ([@AntsyLich](https://github.com/AntsyLich)) ([#1957](https://github.com/mihonapp/mihon/pull/1957)) ### Fixes - Fix Bangumi search results including novels ([@MajorTanya](https://github.com/MajorTanya)) ([#1885](https://github.com/mihonapp/mihon/pull/1885)) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt index beb5aba21..a1c1cdfdf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/SearchScreenModel.kt @@ -165,7 +165,9 @@ abstract class SearchScreenModel( source.getSearchManga(1, query, source.getFilterList()) } - val titles = page.mangas.map { it.toDomainManga(source.id) } + val titles = page.mangas + .map { it.toDomainManga(source.id) } + .distinctBy { it.url } .let { networkToLocalManga(it) } if (isActive) { diff --git a/data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt b/data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt index 0f653d537..bd34a91b5 100644 --- a/data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt +++ b/data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt @@ -39,6 +39,8 @@ abstract class BaseSourcePagingSource( private val networkToLocalManga: NetworkToLocalManga = Injekt.get(), ) : SourcePagingSource() { + private val seenManga = hashSetOf() + abstract suspend fun requestNextPage(currentPage: Int): MangasPage override suspend fun load(params: LoadParams): LoadResult { @@ -51,7 +53,9 @@ abstract class BaseSourcePagingSource( ?: throw NoResultsException() } - val manga = mangasPage.mangas.map { it.toDomainManga(source.id) } + val manga = mangasPage.mangas + .map { it.toDomainManga(source.id) } + .filter { seenManga.add(it.url) } .let { networkToLocalManga(it) } LoadResult.Page(