From b4cc17198a46204f64e209cd12f9e570da67f83f Mon Sep 17 00:00:00 2001 From: TobiGr Date: Tue, 26 Dec 2023 16:36:07 +0100 Subject: [PATCH] Fix NPE when ChannelTabLHFactory not implemented for a service Fixes #10698 --- .../fragments/list/channel/ChannelTabFragment.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelTabFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelTabFragment.java index 76849d94d70..95ac42eed08 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelTabFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelTabFragment.java @@ -17,6 +17,7 @@ import org.schabi.newpipe.extractor.channel.tabs.ChannelTabInfo; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler; +import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory; import org.schabi.newpipe.extractor.linkhandler.ReadyChannelTabListLinkHandler; import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.fragments.list.BaseListInfoFragment; @@ -128,10 +129,13 @@ public void handleResult(@NonNull final ChannelTabInfo result) { // once `handleResult` is called, the parsed data was already saved to cache, so // we can discard any raw data in ReadyChannelTabListLinkHandler and create a // link handler with identical properties, but without any raw data - tabHandler = result.getService() - .getChannelTabLHFactory() - .fromQuery(tabHandler.getId(), tabHandler.getContentFilters(), - tabHandler.getSortFilter()); + final ListLinkHandlerFactory channelTabLHFactory = result.getService() + .getChannelTabLHFactory(); + if (channelTabLHFactory != null) { + // some services do not not have a ChannelTabLHFactory + tabHandler = channelTabLHFactory.fromQuery(tabHandler.getId(), + tabHandler.getContentFilters(), tabHandler.getSortFilter()); + } } catch (final ParsingException e) { // silently ignore the error, as the app can continue to function normally Log.w(TAG, "Could not recreate channel tab handler", e);