From 01767842aadadb6601eca3d056d445900b6da539 Mon Sep 17 00:00:00 2001 From: Andrius Date: Tue, 24 Aug 2021 21:32:40 +0300 Subject: [PATCH] Fix slow library loading with a lot of inclusions or exclusions --- .../simplecity/amp_library/data/SongsRepository.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/simplecity/amp_library/data/SongsRepository.kt b/app/src/main/java/com/simplecity/amp_library/data/SongsRepository.kt index 5320b4665..0d771fb74 100644 --- a/app/src/main/java/com/simplecity/amp_library/data/SongsRepository.kt +++ b/app/src/main/java/com/simplecity/amp_library/data/SongsRepository.kt @@ -28,6 +28,7 @@ import io.reactivex.functions.Function3 import io.reactivex.schedulers.Schedulers import java.util.ArrayList import java.util.Arrays +import java.util.Locale import javax.inject.Inject import javax.inject.Singleton @@ -194,15 +195,21 @@ open class SongsRepository @Inject constructor( // Filter out excluded paths if (!exclItems.isEmpty()) { + val exclSongPaths = exclItems + .map { it.path.toLowerCase(Locale.ROOT) } + .toHashSet() result = songs - .filterNot { song -> exclItems.any { exclItem -> StringUtils.containsIgnoreCase(song.path, exclItem.path) } } + .filterNot { it.path.toLowerCase(Locale.ROOT) in exclSongPaths } .toList() } // Filter out non-included paths if (!inclItems.isEmpty()) { + val inclSongPaths = inclItems + .map { it.path.toLowerCase(Locale.ROOT) } + .toHashSet() result = result - .filter { song -> inclItems.any { inclItem -> StringUtils.containsIgnoreCase(song.path, inclItem.path) } } + .filter { it.path.toLowerCase(Locale.ROOT) in inclSongPaths } .toList() }