diff --git a/CHANGELOG.md b/CHANGELOG.md index a8cc477c1..5173006d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ #### What's New - Added ability to rewind/skip tracks by swiping back/forward +- Added support for demo release type ## 3.2.1 diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt index 648424458..3613d96c6 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt @@ -607,6 +607,7 @@ constructor( is ReleaseType.Soundtrack -> AlbumGrouping.SOUNDTRACKS is ReleaseType.Mix -> AlbumGrouping.DJMIXES is ReleaseType.Mixtape -> AlbumGrouping.MIXTAPES + is ReleaseType.Demo -> AlbumGrouping.DEMOS } } } @@ -709,6 +710,7 @@ constructor( SOUNDTRACKS(R.string.lbl_soundtracks), DJMIXES(R.string.lbl_mixes), MIXTAPES(R.string.lbl_mixtapes), + DEMOS(R.string.lbl_demos), APPEARANCES(R.string.lbl_appears_on), LIVE(R.string.lbl_live_group), REMIXES(R.string.lbl_remix_group), diff --git a/app/src/main/java/org/oxycblt/auxio/music/info/ReleaseType.kt b/app/src/main/java/org/oxycblt/auxio/music/info/ReleaseType.kt index 24260912b..3fe45b202 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/info/ReleaseType.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/info/ReleaseType.kt @@ -143,6 +143,18 @@ sealed interface ReleaseType { get() = R.string.lbl_mixtape } + /** + * A demo. These are usually [EP]-sized releases of music made to promote an Artist or a future + * release. + */ + data object Demo : ReleaseType { + override val refinement: Refinement? + get() = null + + override val stringRes: Int + get() = R.string.lbl_demo + } + /** A specification of what kind of performance a particular release is. */ enum class Refinement { /** A release consisting of a live performance */ @@ -220,6 +232,7 @@ sealed interface ReleaseType { type.equals("dj-mix", true) -> Mix type.equals("live", true) -> convertRefinement(Refinement.LIVE) type.equals("remix", true) -> convertRefinement(Refinement.REMIX) + type.equals("demo", true) -> Demo else -> convertRefinement(null) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 31700900b..5f8eed478 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -63,6 +63,10 @@ Mixtapes Mixtape + + Demo + + Demos DJ Mixes diff --git a/app/src/test/java/org/oxycblt/auxio/music/info/ReleaseTypeTest.kt b/app/src/test/java/org/oxycblt/auxio/music/info/ReleaseTypeTest.kt index 9ca019a40..1294e3daf 100644 --- a/app/src/test/java/org/oxycblt/auxio/music/info/ReleaseTypeTest.kt +++ b/app/src/test/java/org/oxycblt/auxio/music/info/ReleaseTypeTest.kt @@ -36,6 +36,7 @@ class ReleaseTypeTest { assertEquals(ReleaseType.Soundtrack, ReleaseType.parse(listOf("album", "soundtrack"))) assertEquals(ReleaseType.Mix, ReleaseType.parse(listOf("album", "dj-mix"))) assertEquals(ReleaseType.Mixtape, ReleaseType.parse(listOf("album", "mixtape/street"))) + assertEquals(ReleaseType.Demo, ReleaseType.parse(listOf("album", "demo"))) } @Test