From 353c0bf1ec0c9f556d55a24ed8dc9f45199fb9ba Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Thu, 16 Jan 2025 12:09:30 +0900 Subject: [PATCH] fix(YouTube Music - Disable music video in album): App crashes on Android 5 / 6 devices --- .../patches/misc/requests/PipedRequester.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/extensions/shared/src/main/java/app/revanced/extension/music/patches/misc/requests/PipedRequester.java b/extensions/shared/src/main/java/app/revanced/extension/music/patches/misc/requests/PipedRequester.java index d88623742..a846a67c3 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/music/patches/misc/requests/PipedRequester.java +++ b/extensions/shared/src/main/java/app/revanced/extension/music/patches/misc/requests/PipedRequester.java @@ -13,6 +13,7 @@ import java.net.HttpURLConnection; import java.net.SocketTimeoutException; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -39,11 +40,22 @@ public static void fetchRequestIfNeeded(@NonNull String videoId, @NonNull String synchronized (cache) { final long now = System.currentTimeMillis(); - cache.values().removeIf(request -> { - final boolean expired = request.isExpired(now); - if (expired) Logger.printDebug(() -> "Removing expired stream: " + request.videoId); - return expired; - }); + if (Utils.isSDKAbove(25)) { + cache.values().removeIf(request -> { + final boolean expired = request.isExpired(now); + if (expired) Logger.printDebug(() -> "Removing expired stream: " + request.videoId); + return expired; + }); + } else { + Iterator> itr = cache.entrySet().iterator(); + while (itr.hasNext()) { + Map.Entry entry = itr.next(); + if (entry.getValue().isExpired(now)) { + Logger.printDebug(() -> "Removing expired fetch: " + entry.getValue().videoId); + itr.remove(); + } + } + } if (!cache.containsKey(videoId)) { PipedRequester pipedRequester = new PipedRequester(videoId, playlistId, playlistIndex);