diff --git a/app/src/main/java/org/oxycblt/auxio/music/service/SystemContentObserver.kt b/app/src/main/java/org/oxycblt/auxio/music/service/SystemContentObserver.kt
index 426172cb3..66c351f86 100644
--- a/app/src/main/java/org/oxycblt/auxio/music/service/SystemContentObserver.kt
+++ b/app/src/main/java/org/oxycblt/auxio/music/service/SystemContentObserver.kt
@@ -27,7 +27,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import org.oxycblt.auxio.music.MusicRepository
import org.oxycblt.auxio.music.MusicSettings
-import org.oxycblt.musikr.fs.util.contentResolverSafe
+import org.oxycblt.musikr.fs.query.contentResolverSafe
import timber.log.Timber as L
/**
diff --git a/app/src/main/java/org/oxycblt/musikr/Music.kt b/app/src/main/java/org/oxycblt/musikr/Music.kt
index 18219547e..291655f2e 100644
--- a/app/src/main/java/org/oxycblt/musikr/Music.kt
+++ b/app/src/main/java/org/oxycblt/musikr/Music.kt
@@ -33,6 +33,7 @@ import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.concatLocalized
import org.oxycblt.auxio.util.toUuidOrNull
import org.oxycblt.musikr.cover.Cover
+import org.oxycblt.musikr.fs.MimeType
import org.oxycblt.musikr.fs.Path
import org.oxycblt.musikr.tag.Date
import org.oxycblt.musikr.tag.Disc
diff --git a/app/src/main/java/org/oxycblt/musikr/fs/FsModule.kt b/app/src/main/java/org/oxycblt/musikr/fs/FsModule.kt
index 74b4bc55b..ffcc7e7b0 100644
--- a/app/src/main/java/org/oxycblt/musikr/fs/FsModule.kt
+++ b/app/src/main/java/org/oxycblt/musikr/fs/FsModule.kt
@@ -26,21 +26,13 @@ import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
-import org.oxycblt.musikr.fs.util.contentResolverSafe
+import org.oxycblt.musikr.fs.query.DeviceFiles
+import org.oxycblt.musikr.fs.query.DeviceFilesImpl
+import org.oxycblt.musikr.fs.query.contentResolverSafe
@Module
@InstallIn(SingletonComponent::class)
-class FsProvidesModule {
- @Provides
- fun contentResolver(@ApplicationContext context: Context): ContentResolver =
- context.contentResolverSafe
-}
-
-@Module
-@InstallIn(SingletonComponent::class)
-interface FsBindsModule {
- @Binds fun deviceFiles(deviceFilesImpl: DeviceFilesImpl): DeviceFiles
-
+interface FsModule {
@Binds
fun musicLocationFactory(
musicLocationFactoryImpl: MusicLocationFactoryImpl
diff --git a/app/src/main/java/org/oxycblt/musikr/MimeType.kt b/app/src/main/java/org/oxycblt/musikr/fs/MimeType.kt
similarity index 99%
rename from app/src/main/java/org/oxycblt/musikr/MimeType.kt
rename to app/src/main/java/org/oxycblt/musikr/fs/MimeType.kt
index e618efbb4..563f692ca 100644
--- a/app/src/main/java/org/oxycblt/musikr/MimeType.kt
+++ b/app/src/main/java/org/oxycblt/musikr/fs/MimeType.kt
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package org.oxycblt.musikr
+package org.oxycblt.musikr.fs
import android.content.Context
import android.media.MediaFormat
diff --git a/app/src/main/java/org/oxycblt/musikr/fs/MusicLocation.kt b/app/src/main/java/org/oxycblt/musikr/fs/MusicLocation.kt
index 2438626b7..a93925343 100644
--- a/app/src/main/java/org/oxycblt/musikr/fs/MusicLocation.kt
+++ b/app/src/main/java/org/oxycblt/musikr/fs/MusicLocation.kt
@@ -25,7 +25,7 @@ import android.provider.DocumentsContract
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import org.oxycblt.musikr.fs.path.DocumentPathFactory
-import org.oxycblt.musikr.fs.util.contentResolverSafe
+import org.oxycblt.musikr.fs.query.contentResolverSafe
class MusicLocation internal constructor(val uri: Uri, val path: Path) {
override fun equals(other: Any?) =
diff --git a/app/src/main/java/org/oxycblt/musikr/fs/path/DocumentPathFactory.kt b/app/src/main/java/org/oxycblt/musikr/fs/path/DocumentPathFactory.kt
index a17b869eb..035e98ecf 100644
--- a/app/src/main/java/org/oxycblt/musikr/fs/path/DocumentPathFactory.kt
+++ b/app/src/main/java/org/oxycblt/musikr/fs/path/DocumentPathFactory.kt
@@ -28,8 +28,8 @@ import javax.inject.Inject
import org.oxycblt.musikr.fs.Components
import org.oxycblt.musikr.fs.Path
import org.oxycblt.musikr.fs.Volume
-import org.oxycblt.musikr.fs.util.contentResolverSafe
-import org.oxycblt.musikr.fs.util.useQuery
+import org.oxycblt.musikr.fs.query.contentResolverSafe
+import org.oxycblt.musikr.fs.query.useQuery
/**
* A factory for parsing the reverse-engineered format of the URIs obtained from document picker.
diff --git a/app/src/main/java/org/oxycblt/musikr/fs/DeviceFiles.kt b/app/src/main/java/org/oxycblt/musikr/fs/query/DeviceFiles.kt
similarity index 95%
rename from app/src/main/java/org/oxycblt/musikr/fs/DeviceFiles.kt
rename to app/src/main/java/org/oxycblt/musikr/fs/query/DeviceFiles.kt
index 024e55281..e9231614d 100644
--- a/app/src/main/java/org/oxycblt/musikr/fs/DeviceFiles.kt
+++ b/app/src/main/java/org/oxycblt/musikr/fs/query/DeviceFiles.kt
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package org.oxycblt.musikr.fs
+package org.oxycblt.musikr.fs.query
import android.content.ContentResolver
import android.content.Context
@@ -31,8 +31,8 @@ import kotlinx.coroutines.flow.emitAll
import kotlinx.coroutines.flow.flatMapMerge
import kotlinx.coroutines.flow.flattenMerge
import kotlinx.coroutines.flow.flow
-import org.oxycblt.musikr.fs.util.contentResolverSafe
-import org.oxycblt.musikr.fs.util.useQuery
+import org.oxycblt.musikr.fs.MusicLocation
+import org.oxycblt.musikr.fs.Path
interface DeviceFiles {
fun explore(locations: Flow): Flow
@@ -68,7 +68,8 @@ class DeviceFilesImpl @Inject constructor(@ApplicationContext private val contex
): Flow = flow {
contentResolver.useQuery(
DocumentsContract.buildChildDocumentsUriUsingTree(rootUri, treeDocumentId),
- PROJECTION) { cursor ->
+ PROJECTION
+ ) { cursor ->
val childUriIndex =
cursor.getColumnIndexOrThrow(DocumentsContract.Document.COLUMN_DOCUMENT_ID)
val displayNameIndex =
@@ -100,7 +101,8 @@ class DeviceFilesImpl @Inject constructor(@ApplicationContext private val contex
mimeType,
newPath,
size,
- lastModified))
+ lastModified)
+ )
}
}
emitAll(recursive.asFlow().flattenMerge())
diff --git a/app/src/main/java/org/oxycblt/musikr/fs/query/QueryModule.kt b/app/src/main/java/org/oxycblt/musikr/fs/query/QueryModule.kt
new file mode 100644
index 000000000..8874a01a0
--- /dev/null
+++ b/app/src/main/java/org/oxycblt/musikr/fs/query/QueryModule.kt
@@ -0,0 +1,27 @@
+package org.oxycblt.musikr.fs.query
+
+import android.content.ContentResolver
+import android.content.Context
+import dagger.Binds
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.android.qualifiers.ApplicationContext
+import dagger.hilt.components.SingletonComponent
+import org.oxycblt.musikr.fs.MusicLocation
+import org.oxycblt.musikr.fs.MusicLocationFactoryImpl
+
+@Module
+@InstallIn(SingletonComponent::class)
+class QueryProvidesModule {
+ @Provides
+ fun contentResolver(@ApplicationContext context: Context): ContentResolver =
+ context.contentResolverSafe
+}
+
+@Module
+@InstallIn(SingletonComponent::class)
+interface QueryBindsModule {
+ @Binds
+ fun deviceFiles(deviceFilesImpl: DeviceFilesImpl): DeviceFiles
+}
diff --git a/app/src/main/java/org/oxycblt/musikr/fs/util/QueryUtil.kt b/app/src/main/java/org/oxycblt/musikr/fs/query/QueryUtil.kt
similarity index 98%
rename from app/src/main/java/org/oxycblt/musikr/fs/util/QueryUtil.kt
rename to app/src/main/java/org/oxycblt/musikr/fs/query/QueryUtil.kt
index 9f1732745..15b139506 100644
--- a/app/src/main/java/org/oxycblt/musikr/fs/util/QueryUtil.kt
+++ b/app/src/main/java/org/oxycblt/musikr/fs/query/QueryUtil.kt
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package org.oxycblt.musikr.fs.util
+package org.oxycblt.musikr.fs.query
import android.content.ContentResolver
import android.content.Context
diff --git a/app/src/main/java/org/oxycblt/musikr/metadata/AudioProperties.kt b/app/src/main/java/org/oxycblt/musikr/metadata/AudioProperties.kt
index a5733057d..15753cc0a 100644
--- a/app/src/main/java/org/oxycblt/musikr/metadata/AudioProperties.kt
+++ b/app/src/main/java/org/oxycblt/musikr/metadata/AudioProperties.kt
@@ -23,7 +23,7 @@ import android.media.MediaExtractor
import android.media.MediaFormat
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
-import org.oxycblt.musikr.MimeType
+import org.oxycblt.musikr.fs.MimeType
import org.oxycblt.musikr.Song
import timber.log.Timber as L
@@ -119,6 +119,7 @@ constructor(@ApplicationContext private val context: Context) : AudioProperties.
return AudioProperties(
bitrate,
sampleRate,
- MimeType(fromExtension = song.mimeType.fromExtension, fromFormat = formatMimeType))
+ MimeType(fromExtension = song.mimeType.fromExtension, fromFormat = formatMimeType)
+ )
}
}
diff --git a/app/src/main/java/org/oxycblt/musikr/metadata/MetadataExtractor.kt b/app/src/main/java/org/oxycblt/musikr/metadata/MetadataExtractor.kt
index b1a756d04..a5fe97f71 100644
--- a/app/src/main/java/org/oxycblt/musikr/metadata/MetadataExtractor.kt
+++ b/app/src/main/java/org/oxycblt/musikr/metadata/MetadataExtractor.kt
@@ -28,7 +28,7 @@ import javax.inject.Inject
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.guava.await
import kotlinx.coroutines.withContext
-import org.oxycblt.musikr.fs.DeviceFile
+import org.oxycblt.musikr.fs.query.DeviceFile
interface MetadataExtractor {
suspend fun extract(file: DeviceFile): AudioMetadata
diff --git a/app/src/main/java/org/oxycblt/musikr/pipeline/ExploreStep.kt b/app/src/main/java/org/oxycblt/musikr/pipeline/ExploreStep.kt
index 7631a5ff9..b5d826a3c 100644
--- a/app/src/main/java/org/oxycblt/musikr/pipeline/ExploreStep.kt
+++ b/app/src/main/java/org/oxycblt/musikr/pipeline/ExploreStep.kt
@@ -24,8 +24,8 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.asFlow
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.mapNotNull
-import org.oxycblt.musikr.fs.DeviceFile
-import org.oxycblt.musikr.fs.DeviceFiles
+import org.oxycblt.musikr.fs.query.DeviceFile
+import org.oxycblt.musikr.fs.query.DeviceFiles
import org.oxycblt.musikr.fs.MusicLocation
import org.oxycblt.musikr.playlist.m3u.M3U
diff --git a/app/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt b/app/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt
index 8ffa84e32..79f37c231 100644
--- a/app/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt
+++ b/app/src/main/java/org/oxycblt/musikr/pipeline/ExtractStep.kt
@@ -27,7 +27,7 @@ import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
-import org.oxycblt.musikr.fs.DeviceFile
+import org.oxycblt.musikr.fs.query.DeviceFile
import org.oxycblt.musikr.metadata.MetadataExtractor
import org.oxycblt.musikr.tag.cache.TagCache
import org.oxycblt.musikr.tag.parse.ParsedTags
diff --git a/app/src/main/java/org/oxycblt/musikr/playlist/ExternalPlaylistManager.kt b/app/src/main/java/org/oxycblt/musikr/playlist/ExternalPlaylistManager.kt
index 8b1dd2eca..86a477438 100644
--- a/app/src/main/java/org/oxycblt/musikr/playlist/ExternalPlaylistManager.kt
+++ b/app/src/main/java/org/oxycblt/musikr/playlist/ExternalPlaylistManager.kt
@@ -26,7 +26,7 @@ import org.oxycblt.musikr.Playlist
import org.oxycblt.musikr.fs.Components
import org.oxycblt.musikr.fs.Path
import org.oxycblt.musikr.fs.path.DocumentPathFactory
-import org.oxycblt.musikr.fs.util.contentResolverSafe
+import org.oxycblt.musikr.fs.query.contentResolverSafe
import org.oxycblt.musikr.playlist.m3u.M3U
import timber.log.Timber as L
diff --git a/app/src/main/java/org/oxycblt/musikr/tag/cache/TagCache.kt b/app/src/main/java/org/oxycblt/musikr/tag/cache/TagCache.kt
index 600430f6c..fba4b7733 100644
--- a/app/src/main/java/org/oxycblt/musikr/tag/cache/TagCache.kt
+++ b/app/src/main/java/org/oxycblt/musikr/tag/cache/TagCache.kt
@@ -19,7 +19,7 @@
package org.oxycblt.musikr.tag.cache
import javax.inject.Inject
-import org.oxycblt.musikr.fs.DeviceFile
+import org.oxycblt.musikr.fs.query.DeviceFile
import org.oxycblt.musikr.tag.parse.ParsedTags
interface TagCache {
diff --git a/app/src/main/java/org/oxycblt/musikr/tag/cache/TagDatabase.kt b/app/src/main/java/org/oxycblt/musikr/tag/cache/TagDatabase.kt
index d6a359c56..627345a64 100644
--- a/app/src/main/java/org/oxycblt/musikr/tag/cache/TagDatabase.kt
+++ b/app/src/main/java/org/oxycblt/musikr/tag/cache/TagDatabase.kt
@@ -28,7 +28,7 @@ import androidx.room.Query
import androidx.room.RoomDatabase
import androidx.room.TypeConverter
import androidx.room.TypeConverters
-import org.oxycblt.musikr.fs.DeviceFile
+import org.oxycblt.musikr.fs.query.DeviceFile
import org.oxycblt.musikr.tag.Date
import org.oxycblt.musikr.tag.parse.ParsedTags
import org.oxycblt.musikr.tag.util.correctWhitespace
diff --git a/app/src/main/java/org/oxycblt/musikr/tag/interpret/PreMusic.kt b/app/src/main/java/org/oxycblt/musikr/tag/interpret/PreMusic.kt
index 5f0c486e6..e0798dc45 100644
--- a/app/src/main/java/org/oxycblt/musikr/tag/interpret/PreMusic.kt
+++ b/app/src/main/java/org/oxycblt/musikr/tag/interpret/PreMusic.kt
@@ -23,7 +23,7 @@ import java.util.UUID
import org.oxycblt.auxio.music.MusicType
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.update
-import org.oxycblt.musikr.MimeType
+import org.oxycblt.musikr.fs.MimeType
import org.oxycblt.musikr.Music
import org.oxycblt.musikr.fs.Path
import org.oxycblt.musikr.playlist.PlaylistHandle
diff --git a/app/src/main/java/org/oxycblt/musikr/tag/interpret/TagInterpreter.kt b/app/src/main/java/org/oxycblt/musikr/tag/interpret/TagInterpreter.kt
index d280f75bb..834d77d31 100644
--- a/app/src/main/java/org/oxycblt/musikr/tag/interpret/TagInterpreter.kt
+++ b/app/src/main/java/org/oxycblt/musikr/tag/interpret/TagInterpreter.kt
@@ -22,8 +22,8 @@ import javax.inject.Inject
import org.oxycblt.auxio.R
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.toUuidOrNull
-import org.oxycblt.musikr.MimeType
-import org.oxycblt.musikr.fs.DeviceFile
+import org.oxycblt.musikr.fs.MimeType
+import org.oxycblt.musikr.fs.query.DeviceFile
import org.oxycblt.musikr.tag.Disc
import org.oxycblt.musikr.tag.Interpretation
import org.oxycblt.musikr.tag.Name
diff --git a/app/src/main/java/org/oxycblt/musikr/tag/parse/TagParser.kt b/app/src/main/java/org/oxycblt/musikr/tag/parse/TagParser.kt
index 3f06833ca..bf1071c42 100644
--- a/app/src/main/java/org/oxycblt/musikr/tag/parse/TagParser.kt
+++ b/app/src/main/java/org/oxycblt/musikr/tag/parse/TagParser.kt
@@ -19,7 +19,7 @@
package org.oxycblt.musikr.tag.parse
import javax.inject.Inject
-import org.oxycblt.musikr.fs.DeviceFile
+import org.oxycblt.musikr.fs.query.DeviceFile
import org.oxycblt.musikr.metadata.AudioMetadata
interface TagParser {