From 7b975ec54dba21ecf45b87ca18bf39d93d164999 Mon Sep 17 00:00:00 2001 From: klaus Date: Mon, 6 Jul 2026 14:00:34 +0900 Subject: [PATCH] =?UTF-8?q?fix(audio):=20=EC=98=A4=EB=94=94=EC=98=A4=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC=20route=20extra=EB=A5=BC=20=EC=A0=84?= =?UTF-8?q?=EB=8B=AC=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../audio_content/AudioContentPlayService.kt | 16 +++++++++-- .../player/AudioContentPlayerService.kt | 6 ++++ ...tPlayServiceNotificationRouteSourceTest.kt | 28 +++++++++++++++++++ ...layerServiceNotificationRouteSourceTest.kt | 27 ++++++++++++++++++ 4 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 app/src/test/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayServiceNotificationRouteSourceTest.kt create mode 100644 app/src/test/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerServiceNotificationRouteSourceTest.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayService.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayService.kt index 7736be05..b0f68d25 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayService.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayService.kt @@ -1,3 +1,5 @@ +@file:Suppress("ktlint:package-name", "ktlint:standard:package-name") + package kr.co.vividnext.sodalive.audio_content import android.app.NotificationChannel @@ -471,9 +473,17 @@ class AudioContentPlayService : } private fun updateNotification() { - val intent = Intent(this, MainV2Activity::class.java) - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) - intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) + val intent = Intent(this, MainV2Activity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) + putExtra( + MainV2Activity.EXTRA_AUDIO_NOTIFICATION_ROUTE, + MainV2Activity.ROUTE_AUDIO_DETAIL + ) + contentId?.let { + putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it) + } + } val pendingIntent = PendingIntent.getActivity( this, 0, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerService.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerService.kt index 58e11185..898f3e51 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerService.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerService.kt @@ -1,3 +1,5 @@ +@file:Suppress("ktlint:package-name", "ktlint:standard:package-name") + package kr.co.vividnext.sodalive.audio_content.player import android.app.PendingIntent @@ -155,6 +157,10 @@ class AudioContentPlayerService : MediaSessionService() { private fun initMediaSession() { val contextIntent = Intent(applicationContext, MainV2Activity::class.java).apply { flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP + putExtra( + MainV2Activity.EXTRA_AUDIO_NOTIFICATION_ROUTE, + MainV2Activity.ROUTE_AUDIO_PLAYER + ) } val pendingIntent = PendingIntent.getActivity( applicationContext, diff --git a/app/src/test/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayServiceNotificationRouteSourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayServiceNotificationRouteSourceTest.kt new file mode 100644 index 00000000..ca1683ce --- /dev/null +++ b/app/src/test/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayServiceNotificationRouteSourceTest.kt @@ -0,0 +1,28 @@ +@file:Suppress("ktlint:package-name", "ktlint:standard:package-name") + +package kr.co.vividnext.sodalive.audio_content + +import org.junit.Assert.assertTrue +import org.junit.Test +import java.io.File + +class AudioContentPlayServiceNotificationRouteSourceTest { + + private val source = projectFile( + "app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentPlayService.kt" + ).readText() + + @Test + fun `기존 오디오 알림은 상세 route와 content id를 전달한다`() { + assertTrue(source.contains("MainV2Activity.EXTRA_AUDIO_NOTIFICATION_ROUTE")) + assertTrue(source.contains("MainV2Activity.ROUTE_AUDIO_DETAIL")) + assertTrue(source.contains("Constants.EXTRA_AUDIO_CONTENT_ID")) + assertTrue(source.contains("PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT")) + } + + private fun projectFile(relativePath: String): File { + val candidates = listOf(File(relativePath), File("../$relativePath")) + return candidates.firstOrNull { it.exists() } + ?: error("Project file not found: $relativePath") + } +} diff --git a/app/src/test/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerServiceNotificationRouteSourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerServiceNotificationRouteSourceTest.kt new file mode 100644 index 00000000..eafbce05 --- /dev/null +++ b/app/src/test/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerServiceNotificationRouteSourceTest.kt @@ -0,0 +1,27 @@ +@file:Suppress("ktlint:package-name", "ktlint:standard:package-name") + +package kr.co.vividnext.sodalive.audio_content.player + +import org.junit.Assert.assertTrue +import org.junit.Test +import java.io.File + +class AudioContentPlayerServiceNotificationRouteSourceTest { + + private val source = projectFile( + "app/src/main/java/kr/co/vividnext/sodalive/audio_content/player/AudioContentPlayerService.kt" + ).readText() + + @Test + fun `MediaSession session activity는 플레이어 route를 전달한다`() { + assertTrue(source.contains("MainV2Activity.EXTRA_AUDIO_NOTIFICATION_ROUTE")) + assertTrue(source.contains("MainV2Activity.ROUTE_AUDIO_PLAYER")) + assertTrue(source.contains("PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE")) + } + + private fun projectFile(relativePath: String): File { + val candidates = listOf(File(relativePath), File("../$relativePath")) + return candidates.firstOrNull { it.exists() } + ?: error("Project file not found: $relativePath") + } +}