feat(main): 레거시 직접 진입을 V2 메인으로 전환한다
This commit is contained in:
@@ -177,8 +177,8 @@
|
|||||||
<activity android:name=".settings.notification.NotificationSettingsActivity" />
|
<activity android:name=".settings.notification.NotificationSettingsActivity" />
|
||||||
<activity android:name=".settings.notification.NotificationReceiveSettingsActivity" />
|
<activity android:name=".settings.notification.NotificationReceiveSettingsActivity" />
|
||||||
<activity android:name=".settings.ContentSettingsActivity" />
|
<activity android:name=".settings.ContentSettingsActivity" />
|
||||||
<activity android:name=".live.reservation_status.LiveReservationStatusActivity" />
|
<activity android:name=".live.reservation.status.LiveReservationStatusActivity" />
|
||||||
<activity android:name=".live.reservation_status.LiveReservationCancelActivity" />
|
<activity android:name=".live.reservation.status.LiveReservationCancelActivity" />
|
||||||
<activity android:name=".audio_content.AudioContentActivity" />
|
<activity android:name=".audio_content.AudioContentActivity" />
|
||||||
<activity android:name=".audio_content.detail.AudioContentDetailActivity" />
|
<activity android:name=".audio_content.detail.AudioContentDetailActivity" />
|
||||||
<activity android:name=".audio_content.modify.AudioContentModifyActivity" />
|
<activity android:name=".audio_content.modify.AudioContentModifyActivity" />
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ import kr.co.vividnext.sodalive.live.LiveRepository
|
|||||||
import kr.co.vividnext.sodalive.live.LiveViewModel
|
import kr.co.vividnext.sodalive.live.LiveViewModel
|
||||||
import kr.co.vividnext.sodalive.live.recommend.LiveRecommendApi
|
import kr.co.vividnext.sodalive.live.recommend.LiveRecommendApi
|
||||||
import kr.co.vividnext.sodalive.live.recommend.LiveRecommendRepository
|
import kr.co.vividnext.sodalive.live.recommend.LiveRecommendRepository
|
||||||
import kr.co.vividnext.sodalive.live.reservation_status.LiveReservationStatusViewModel
|
import kr.co.vividnext.sodalive.live.reservation.status.LiveReservationStatusViewModel
|
||||||
import kr.co.vividnext.sodalive.live.room.LiveRoomViewModel
|
import kr.co.vividnext.sodalive.live.room.LiveRoomViewModel
|
||||||
import kr.co.vividnext.sodalive.live.room.create.LiveRoomCreateViewModel
|
import kr.co.vividnext.sodalive.live.room.create.LiveRoomCreateViewModel
|
||||||
import kr.co.vividnext.sodalive.live.room.detail.LiveRoomDetailViewModel
|
import kr.co.vividnext.sodalive.live.room.detail.LiveRoomDetailViewModel
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import io.reactivex.rxjava3.core.Single
|
|||||||
import kr.co.vividnext.sodalive.common.ApiResponse
|
import kr.co.vividnext.sodalive.common.ApiResponse
|
||||||
import kr.co.vividnext.sodalive.live.reservation.MakeLiveReservationRequest
|
import kr.co.vividnext.sodalive.live.reservation.MakeLiveReservationRequest
|
||||||
import kr.co.vividnext.sodalive.live.reservation.MakeLiveReservationResponse
|
import kr.co.vividnext.sodalive.live.reservation.MakeLiveReservationResponse
|
||||||
import kr.co.vividnext.sodalive.live.reservation_status.CancelLiveReservationRequest
|
import kr.co.vividnext.sodalive.live.reservation.status.CancelLiveReservationRequest
|
||||||
import kr.co.vividnext.sodalive.live.reservation_status.GetLiveReservationResponse
|
import kr.co.vividnext.sodalive.live.reservation.status.GetLiveReservationResponse
|
||||||
import kr.co.vividnext.sodalive.live.room.CancelLiveRequest
|
import kr.co.vividnext.sodalive.live.room.CancelLiveRequest
|
||||||
import kr.co.vividnext.sodalive.live.room.EnterOrQuitLiveRoomRequest
|
import kr.co.vividnext.sodalive.live.room.EnterOrQuitLiveRoomRequest
|
||||||
import kr.co.vividnext.sodalive.live.room.LiveRoomStatus
|
import kr.co.vividnext.sodalive.live.room.LiveRoomStatus
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import io.reactivex.rxjava3.core.Flowable
|
|||||||
import io.reactivex.rxjava3.core.Single
|
import io.reactivex.rxjava3.core.Single
|
||||||
import kr.co.vividnext.sodalive.common.ApiResponse
|
import kr.co.vividnext.sodalive.common.ApiResponse
|
||||||
import kr.co.vividnext.sodalive.live.reservation.MakeLiveReservationRequest
|
import kr.co.vividnext.sodalive.live.reservation.MakeLiveReservationRequest
|
||||||
import kr.co.vividnext.sodalive.live.reservation_status.CancelLiveReservationRequest
|
import kr.co.vividnext.sodalive.live.reservation.status.CancelLiveReservationRequest
|
||||||
import kr.co.vividnext.sodalive.live.room.CancelLiveRequest
|
import kr.co.vividnext.sodalive.live.room.CancelLiveRequest
|
||||||
import kr.co.vividnext.sodalive.live.room.EnterOrQuitLiveRoomRequest
|
import kr.co.vividnext.sodalive.live.room.EnterOrQuitLiveRoomRequest
|
||||||
import kr.co.vividnext.sodalive.live.room.LiveRoomStatus
|
import kr.co.vividnext.sodalive.live.room.LiveRoomStatus
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package kr.co.vividnext.sodalive.live.reservation_status
|
package kr.co.vividnext.sodalive.live.reservation.status
|
||||||
|
|
||||||
import androidx.annotation.Keep
|
import androidx.annotation.Keep
|
||||||
import com.google.gson.annotations.SerializedName
|
import com.google.gson.annotations.SerializedName
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package kr.co.vividnext.sodalive.live.reservation_status
|
package kr.co.vividnext.sodalive.live.reservation.status
|
||||||
|
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import androidx.annotation.Keep
|
import androidx.annotation.Keep
|
||||||
+3
-3
@@ -1,4 +1,4 @@
|
|||||||
package kr.co.vividnext.sodalive.live.reservation_status
|
package kr.co.vividnext.sodalive.live.reservation.status
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@@ -18,10 +18,10 @@ import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
|
|||||||
import kr.co.vividnext.sodalive.databinding.ActivityLiveReservationCancelBinding
|
import kr.co.vividnext.sodalive.databinding.ActivityLiveReservationCancelBinding
|
||||||
import kr.co.vividnext.sodalive.extensions.convertDateFormat
|
import kr.co.vividnext.sodalive.extensions.convertDateFormat
|
||||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||||
import kr.co.vividnext.sodalive.main.MainActivity
|
|
||||||
import kr.co.vividnext.sodalive.mypage.can.status.CanStatusActivity
|
import kr.co.vividnext.sodalive.mypage.can.status.CanStatusActivity
|
||||||
import kr.co.vividnext.sodalive.settings.language.LanguageManager
|
import kr.co.vividnext.sodalive.settings.language.LanguageManager
|
||||||
import kr.co.vividnext.sodalive.settings.language.LocaleHelper
|
import kr.co.vividnext.sodalive.settings.language.LocaleHelper
|
||||||
|
import kr.co.vividnext.sodalive.v2.main.MainV2Activity
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import java.util.TimeZone
|
import java.util.TimeZone
|
||||||
@@ -117,7 +117,7 @@ class LiveReservationCancelActivity : BaseActivity<ActivityLiveReservationCancel
|
|||||||
|
|
||||||
binding.tvOtherSudaReservation.setOnClickListener {
|
binding.tvOtherSudaReservation.setOnClickListener {
|
||||||
finishAffinity()
|
finishAffinity()
|
||||||
startActivity(Intent(applicationContext, MainActivity::class.java))
|
startActivity(Intent(applicationContext, MainV2Activity::class.java))
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.tvCheckCanStatus.setOnClickListener {
|
binding.tvCheckCanStatus.setOnClickListener {
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package kr.co.vividnext.sodalive.live.reservation_status
|
package kr.co.vividnext.sodalive.live.reservation.status
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package kr.co.vividnext.sodalive.live.reservation_status
|
package kr.co.vividnext.sodalive.live.reservation.status
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package kr.co.vividnext.sodalive.live.reservation_status
|
package kr.co.vividnext.sodalive.live.reservation.status
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
@@ -120,13 +120,13 @@ import kr.co.vividnext.sodalive.live.roulette.RoulettePreviewDialog
|
|||||||
import kr.co.vividnext.sodalive.live.roulette.RouletteSpinDialog
|
import kr.co.vividnext.sodalive.live.roulette.RouletteSpinDialog
|
||||||
import kr.co.vividnext.sodalive.live.roulette.config.RouletteConfigActivity
|
import kr.co.vividnext.sodalive.live.roulette.config.RouletteConfigActivity
|
||||||
import kr.co.vividnext.sodalive.main.DeepLinkActivity
|
import kr.co.vividnext.sodalive.main.DeepLinkActivity
|
||||||
import kr.co.vividnext.sodalive.main.MainActivity
|
|
||||||
import kr.co.vividnext.sodalive.report.ProfileReportDialog
|
import kr.co.vividnext.sodalive.report.ProfileReportDialog
|
||||||
import kr.co.vividnext.sodalive.report.ReportType
|
import kr.co.vividnext.sodalive.report.ReportType
|
||||||
import kr.co.vividnext.sodalive.report.UserReportDialog
|
import kr.co.vividnext.sodalive.report.UserReportDialog
|
||||||
import kr.co.vividnext.sodalive.settings.ContentSettingsActivity
|
import kr.co.vividnext.sodalive.settings.ContentSettingsActivity
|
||||||
import kr.co.vividnext.sodalive.settings.language.LanguageManager
|
import kr.co.vividnext.sodalive.settings.language.LanguageManager
|
||||||
import kr.co.vividnext.sodalive.settings.notification.MemberRole
|
import kr.co.vividnext.sodalive.settings.notification.MemberRole
|
||||||
|
import kr.co.vividnext.sodalive.v2.main.MainV2Activity
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
@@ -379,7 +379,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
|
|||||||
val bundle = intent?.getBundleExtra(Constants.EXTRA_DATA) ?: return
|
val bundle = intent?.getBundleExtra(Constants.EXTRA_DATA) ?: return
|
||||||
|
|
||||||
showDeepLinkNavigationDialog {
|
showDeepLinkNavigationDialog {
|
||||||
val nextIntent = Intent(applicationContext, MainActivity::class.java).apply {
|
val nextIntent = Intent(applicationContext, MainV2Activity::class.java).apply {
|
||||||
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
|
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
|
||||||
putExtra(Constants.EXTRA_DATA, bundle)
|
putExtra(Constants.EXTRA_DATA, bundle)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package kr.co.vividnext.sodalive.live
|
||||||
|
|
||||||
|
import org.junit.Assert.assertFalse
|
||||||
|
import org.junit.Assert.assertTrue
|
||||||
|
import org.junit.Test
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
class LiveReservationPackageSourceTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `라이브 예약 현황 소스 경로는 패키지 구조와 일치한다`() {
|
||||||
|
val expectedDirectory = projectPath(
|
||||||
|
"app/src/main/java/kr/co/vividnext/sodalive/live/reservation/status"
|
||||||
|
)
|
||||||
|
val legacyDirectory = projectPath(
|
||||||
|
"app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status"
|
||||||
|
)
|
||||||
|
|
||||||
|
assertTrue("Package directory not found: $expectedDirectory", expectedDirectory.isDirectory)
|
||||||
|
assertFalse("Legacy package directory remains: $legacyDirectory", legacyDirectory.exists())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `라이브 예약 현황 패키지는 underscore를 사용하지 않는다`() {
|
||||||
|
val sourceFiles = listOf(
|
||||||
|
"CancelLiveReservationRequest.kt",
|
||||||
|
"GetLiveReservationResponse.kt",
|
||||||
|
"LiveReservationCancelActivity.kt",
|
||||||
|
"LiveReservationStatusActivity.kt",
|
||||||
|
"LiveReservationStatusAdapter.kt",
|
||||||
|
"LiveReservationStatusViewModel.kt"
|
||||||
|
).map { fileName ->
|
||||||
|
projectFile("app/src/main/java/kr/co/vividnext/sodalive/live/reservation/status/$fileName")
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceFiles.forEach { file ->
|
||||||
|
val source = file.readText()
|
||||||
|
assertTrue(source.contains("package kr.co.vividnext.sodalive.live.reservation.status"))
|
||||||
|
assertFalse(source.contains("package kr.co.vividnext.sodalive.live.reservation_status"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `라이브 예약 현황 참조는 underscore 없는 패키지를 사용한다`() {
|
||||||
|
val checkedSources = listOf(
|
||||||
|
projectFile("app/src/main/AndroidManifest.xml"),
|
||||||
|
projectFile("app/src/main/java/kr/co/vividnext/sodalive/di/AppDI.kt"),
|
||||||
|
projectFile("app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt"),
|
||||||
|
projectFile("app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt")
|
||||||
|
)
|
||||||
|
|
||||||
|
checkedSources.forEach { file ->
|
||||||
|
val source = file.readText()
|
||||||
|
assertFalse(source.contains("kr.co.vividnext.sodalive.live.reservation_status"))
|
||||||
|
assertFalse(source.contains(".live.reservation_status."))
|
||||||
|
}
|
||||||
|
|
||||||
|
val manifest = checkedSources.first().readText()
|
||||||
|
assertTrue(manifest.contains(".live.reservation.status.LiveReservationStatusActivity"))
|
||||||
|
assertTrue(manifest.contains(".live.reservation.status.LiveReservationCancelActivity"))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun projectFile(relativePath: String): File {
|
||||||
|
val candidates = listOf(File(relativePath), File("../$relativePath"))
|
||||||
|
return candidates.firstOrNull { it.exists() }
|
||||||
|
?: error("Project file not found: $relativePath")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun projectPath(relativePath: String): File {
|
||||||
|
val projectRoot = listOf(File("."), File("..")).first { File(it, "app").isDirectory }
|
||||||
|
return File(projectRoot, relativePath)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package kr.co.vividnext.sodalive.v2.main
|
||||||
|
|
||||||
|
import org.junit.Assert.assertFalse
|
||||||
|
import org.junit.Assert.assertTrue
|
||||||
|
import org.junit.Test
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
class MainV2DirectEntrySourceTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `라이브룸 딥링크 confirm은 MainV2Activity로 이동한다`() {
|
||||||
|
val source = projectFile(
|
||||||
|
"app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt"
|
||||||
|
).readText()
|
||||||
|
val receiverSource = source.substringAfter("private val deepLinkConfirmReceiver")
|
||||||
|
.substringBefore("// region lifecycle")
|
||||||
|
|
||||||
|
assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.main.MainV2Activity"))
|
||||||
|
assertTrue(receiverSource.contains("MainV2Activity::class.java"))
|
||||||
|
assertTrue(receiverSource.contains("Intent.FLAG_ACTIVITY_CLEAR_TOP"))
|
||||||
|
assertTrue(receiverSource.contains("Intent.FLAG_ACTIVITY_SINGLE_TOP"))
|
||||||
|
assertTrue(receiverSource.contains("putExtra(Constants.EXTRA_DATA, bundle)"))
|
||||||
|
assertFalse(source.contains("import kr.co.vividnext.sodalive.main.MainActivity"))
|
||||||
|
assertFalse(receiverSource.contains("MainActivity::class.java"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `예약 취소의 다른 수다 예약은 MainV2Activity로 이동한다`() {
|
||||||
|
val source = projectFile(
|
||||||
|
"app/src/main/java/kr/co/vividnext/sodalive/live/reservation/status/LiveReservationCancelActivity.kt"
|
||||||
|
).readText()
|
||||||
|
val clickSource = source.substringAfter("binding.tvOtherSudaReservation.setOnClickListener")
|
||||||
|
.substringBefore("binding.tvCheckCanStatus.setOnClickListener")
|
||||||
|
|
||||||
|
assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.main.MainV2Activity"))
|
||||||
|
assertTrue(clickSource.contains("finishAffinity()"))
|
||||||
|
assertTrue(clickSource.contains("MainV2Activity::class.java"))
|
||||||
|
assertFalse(source.contains("import kr.co.vividnext.sodalive.main.MainActivity"))
|
||||||
|
assertFalse(clickSource.contains("MainActivity::class.java"))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun projectFile(relativePath: String): File {
|
||||||
|
val candidates = listOf(File(relativePath), File("../$relativePath"))
|
||||||
|
return candidates.firstOrNull { it.exists() }
|
||||||
|
?: error("Project file not found: $relativePath")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user