Skip to content
Snippets Groups Projects
Commit 0655ce54 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Storage: override refresh function to filter items

Fix #897

(cherry picked from commit 082fb7ee)
parent cafc745d
No related branches found
No related tags found
No related merge requests found
Pipeline #7566 passed with stage
in 3 minutes and 50 seconds
......@@ -57,7 +57,7 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me
protected var mediabrowser: MediaBrowser? = null
private val foldersContentMap = SimpleArrayMap<MediaLibraryItem, MutableList<MediaLibraryItem>>()
private lateinit var browserChannel : Channel<Media>
protected lateinit var browserChannel : Channel<Media>
protected var job : Job? = null
private val showAll = Settings.getInstance(context).getBoolean("browser_show_all_files", true)
......@@ -125,7 +125,7 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me
if (!browserActor.isClosedForSend) browserActor.offer(ParseSubDirectories)
}
open fun refreshImpl() {
open suspend fun refreshImpl() {
browserChannel = Channel(Channel.UNLIMITED)
requestBrowsing(url)
job = launch {
......@@ -228,7 +228,7 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me
return flags
}
private fun requestBrowsing(url: String?) = launch(Dispatchers.IO) {
protected fun requestBrowsing(url: String?) = launch(Dispatchers.IO) {
mutex.withLock {
initBrowser()
mediabrowser?.let {
......
......@@ -23,6 +23,10 @@ package org.videolan.vlc.providers
import android.content.Context
import android.net.Uri
import android.text.TextUtils
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.filter
import kotlinx.coroutines.channels.mapTo
import org.videolan.libvlc.Media
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.medialibrary.media.Storage
......@@ -66,4 +70,15 @@ class StorageProvider(context: Context, dataset: LiveDataset<MediaLibraryItem>,
} else if (media.itemType != MediaLibraryItem.TYPE_STORAGE) return
super.addMedia(media)
}
}
\ No newline at end of file
override suspend fun refreshImpl() {
browserChannel = Channel(Channel.UNLIMITED)
requestBrowsing(url)
val value: MutableList<MediaLibraryItem> = browserChannel.filter { it.isStorage() }.mapTo(mutableListOf()) { Storage(it.uri)}
dataset.postValue(value)
parseSubDirectories()
loading.postValue(false)
}
}
private fun Media.isStorage() = type == Media.Type.Directory
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment