From 5fae4601dee539588eb36bb40ba1c7e49c4183b6 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Fri, 13 Dec 2024 10:54:14 -0700 Subject: [PATCH] music: fix broken location updates --- .../org/oxycblt/auxio/music/MusicSettings.kt | 8 +++--- .../org/oxycblt/auxio/settings/Settings.kt | 26 +++++++++++-------- .../org/oxycblt/musikr/fs/MusicLocation.kt | 14 +++------- 3 files changed, 23 insertions(+), 25 deletions(-) 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 9f73896a7..fccc0e1bb 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt @@ -58,9 +58,11 @@ class MusicSettingsImpl @Inject constructor(@ApplicationContext private val cont 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)) } + sharedPreferences.getStringSet(getString(R.string.set_key_music_locations), null) ?: + emptySet() + return dirs.mapNotNull { + MusicLocation.existing(context, Uri.parse(it)) + } } set(value) { sharedPreferences.edit { diff --git a/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt b/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt index ebf93bca3..9f77a3c8f 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt @@ -31,7 +31,7 @@ import timber.log.Timber as L * * @author Alexander Capehart (OxygenCobalt) */ -interface Settings { +interface Settings { /** * Migrate any settings fields from older versions into their new counterparts. * @@ -46,41 +46,45 @@ interface Settings { * * @param listener The listener to add. */ - fun registerListener(listener: L) + fun registerListener(listener: Listener) /** * Unregister a listener, preventing any further settings updates from being sent to it. * * @param listener The listener to unregister, must be the same as the current listener. */ - fun unregisterListener(listener: L) + fun unregisterListener(listener: Listener) /** * A framework-backed [Settings] implementation. * * @param context [Context] required. */ - abstract class Impl(private val context: Context) : - Settings, SharedPreferences.OnSharedPreferenceChangeListener { + abstract class Impl(private val context: Context) : + Settings, SharedPreferences.OnSharedPreferenceChangeListener { + init { + L.d(this::class.simpleName) + } + protected val sharedPreferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.applicationContext) /** @see [Context.getString] */ protected fun getString(@StringRes stringRes: Int) = context.getString(stringRes) - private var listener: L? = null + private var listener: Listener? = null - override fun registerListener(listener: L) { + override fun registerListener(listener: Listener) { if (this.listener == null) { // Registering a listener when it was null prior, attach the callback. - L.d("Registering shared preference listener") + L.d("Registering shared preference listener for ${this::class.simpleName}") sharedPreferences.registerOnSharedPreferenceChangeListener(this) } - L.d("Registering listener $listener") + L.d("Registering listener $listener for ${this::class.simpleName}") this.listener = listener } - override fun unregisterListener(listener: L) { + override fun unregisterListener(listener: Listener) { if (this.listener !== listener) { L.w("Given listener was not the current listener.") return @@ -106,6 +110,6 @@ interface Settings { * @param key The key of the changed setting. * @param listener The implementation's listener that updates should be applied to. */ - protected open fun onSettingChanged(key: String, listener: L) {} + protected open fun onSettingChanged(key: String, listener: Listener) {} } } 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 80cdcb814..73be221d7 100644 --- a/app/src/main/java/org/oxycblt/musikr/fs/MusicLocation.kt +++ b/app/src/main/java/org/oxycblt/musikr/fs/MusicLocation.kt @@ -26,19 +26,11 @@ import org.oxycblt.musikr.fs.path.DocumentPathFactory import org.oxycblt.musikr.fs.query.contentResolverSafe class MusicLocation internal constructor(val uri: Uri, val path: Path) { - override fun equals(other: Any?) = - other is MusicLocation && uri == other.uri && path == other.path + override fun equals(other: Any?) = other is MusicLocation && uri == other.uri - override fun hashCode() = 31 * uri.hashCode() + path.hashCode() + override fun hashCode() = 31 * uri.hashCode() - override fun toString(): String { - val volumeId = - when (path.volume) { - is Volume.Internal -> VOLUME_INTERNAL - is Volume.External -> path.volume.id - } - return "$uri=${volumeId}:${path.components.unixString}" - } + override fun toString(): String = uri.toString() companion object { fun new(context: Context, uri: Uri): MusicLocation? {