From 119a7570a68ec4a61b2a301219d414bf2b149b4b Mon Sep 17 00:00:00 2001 From: Bnyro Date: Mon, 3 Mar 2025 14:45:33 +0100 Subject: [PATCH] fix: infinitely looping channel tab items when using full local npe --- .../api/NewPipeMediaServiceRepository.kt | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/github/libretube/api/NewPipeMediaServiceRepository.kt b/app/src/main/java/com/github/libretube/api/NewPipeMediaServiceRepository.kt index 2c1e98170..d49121c6a 100644 --- a/app/src/main/java/com/github/libretube/api/NewPipeMediaServiceRepository.kt +++ b/app/src/main/java/com/github/libretube/api/NewPipeMediaServiceRepository.kt @@ -393,12 +393,22 @@ class NewPipeMediaServiceRepository : MediaServiceRepository { override suspend fun getChannelTab(data: String, nextPage: String?): ChannelTabResponse { val linkListHandler = data.toListLinkHandler() - val resp = ChannelTabInfo.getInfo(NewPipeExtractorInstance.extractor, linkListHandler) - val newNextPage = resp.nextPage?.toNextPageString() + val (items, newNextPage) = if (nextPage == null) { + val resp = ChannelTabInfo.getInfo(NewPipeExtractorInstance.extractor, linkListHandler) + resp.relatedItems to resp.nextPage + } else { + val resp = ChannelTabInfo.getMoreItems( + NewPipeExtractorInstance.extractor, + linkListHandler, + nextPage.toPage() + ) + resp.items to resp.nextPage + } - val items = resp.relatedItems - .mapNotNull { it.toContentItem() } - return ChannelTabResponse(items, newNextPage) + return ChannelTabResponse( + content = items.mapNotNull { it.toContentItem() }, + nextpage = newNextPage?.toNextPageString() + ) } override suspend fun getChannelByName(channelName: String): Channel {