diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt index fccc0e1bb..7c7a66742 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt @@ -19,7 +19,6 @@ package org.oxycblt.auxio.music import android.content.Context -import android.net.Uri import androidx.core.content.edit import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject @@ -55,21 +54,19 @@ interface MusicSettings : Settings { class MusicSettingsImpl @Inject constructor(@ApplicationContext private val context: Context) : Settings.Impl(context), MusicSettings { + override var musicLocations: List get() { - val dirs = - sharedPreferences.getStringSet(getString(R.string.set_key_music_locations), null) ?: - emptySet() - return dirs.mapNotNull { - MusicLocation.existing(context, Uri.parse(it)) - } + val locations = + sharedPreferences.getString(getString(R.string.set_key_music_locations), null) + ?: return emptyList() + return MusicLocation.existing(context, locations) } set(value) { sharedPreferences.edit { - putStringSet( - getString(R.string.set_key_music_locations), - value.map { it.toString() }.toSet()) - apply() + putString( + getString(R.string.set_key_music_locations), MusicLocation.toString(value)) + this@edit.apply() } } diff --git a/app/src/main/java/org/oxycblt/auxio/music/locations/MusicSourcesDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/locations/MusicSourcesDialog.kt index afc951c1e..74d3ec0ed 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/locations/MusicSourcesDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/locations/MusicSourcesDialog.kt @@ -59,10 +59,7 @@ class MusicSourcesDialog : .setNegativeButton(R.string.lbl_cancel, null) .setPositiveButton(R.string.lbl_save) { _, _ -> val newDirs = locationAdapter.locations - if (musicSettings.musicLocations != newDirs) { - L.d("Committing changes") - musicSettings.musicLocations = newDirs - } + musicSettings.musicLocations = newDirs } } 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 73be221d7..78cb17d2c 100644 --- a/app/src/main/java/org/oxycblt/musikr/fs/MusicLocation.kt +++ b/app/src/main/java/org/oxycblt/musikr/fs/MusicLocation.kt @@ -60,7 +60,12 @@ class MusicLocation internal constructor(val uri: Uri, val path: Path) { val path = documentPathFactory.unpackDocumentTreeUri(uri) ?: return null return MusicLocation(uri, path) } + + fun toString(list: List) = + list.joinToString(";") { it.uri.toString().replace(";", "\\;") } + + fun existing(context: Context, string: String): List { + return string.splitEscaped { it == ';' }.mapNotNull { existing(context, Uri.parse(it)) } + } } } - -private const val VOLUME_INTERNAL = "internal"