From 0741ba31b3559eafca43674d718d9b58c643d8a5 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Fri, 29 May 2026 14:39:31 -0400 Subject: [PATCH] refactor(android): add shared albumCoverPath cover-URL builder --- .../com/fabledsword/minstrel/models/CoverUrls.kt | 11 +++++++++++ .../fabledsword/minstrel/models/CoverUrlsTest.kt | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 android/app/src/main/java/com/fabledsword/minstrel/models/CoverUrls.kt create mode 100644 android/app/src/test/java/com/fabledsword/minstrel/models/CoverUrlsTest.kt diff --git a/android/app/src/main/java/com/fabledsword/minstrel/models/CoverUrls.kt b/android/app/src/main/java/com/fabledsword/minstrel/models/CoverUrls.kt new file mode 100644 index 00000000..432dcff8 --- /dev/null +++ b/android/app/src/main/java/com/fabledsword/minstrel/models/CoverUrls.kt @@ -0,0 +1,11 @@ +package com.fabledsword.minstrel.models + +/** + * Absolute cover URL for an album, or "" when [albumId] is blank. Uses + * the placeholder host that `BaseUrlInterceptor` rewrites to the live + * server (carrying the auth cookie); `ServerImage` passes it through, + * and the raw-AsyncImage cover surfaces still load it. The single + * album-cover URL builder for the whole client. + */ +fun albumCoverPath(albumId: String): String = + if (albumId.isEmpty()) "" else "http://placeholder.invalid/api/albums/$albumId/cover" diff --git a/android/app/src/test/java/com/fabledsword/minstrel/models/CoverUrlsTest.kt b/android/app/src/test/java/com/fabledsword/minstrel/models/CoverUrlsTest.kt new file mode 100644 index 00000000..ecbf67f7 --- /dev/null +++ b/android/app/src/test/java/com/fabledsword/minstrel/models/CoverUrlsTest.kt @@ -0,0 +1,16 @@ +package com.fabledsword.minstrel.models + +import org.junit.jupiter.api.Test +import kotlin.test.assertEquals + +class CoverUrlsTest { + @Test + fun `albumCoverPath builds the placeholder cover URL`() { + assertEquals("http://placeholder.invalid/api/albums/a1/cover", albumCoverPath("a1")) + } + + @Test + fun `albumCoverPath is empty for a blank id`() { + assertEquals("", albumCoverPath("")) + } +}