feat(main): 레거시 직접 진입을 V2 메인으로 전환한다
This commit is contained in:
@@ -177,8 +177,8 @@
|
||||
<activity android:name=".settings.notification.NotificationSettingsActivity" />
|
||||
<activity android:name=".settings.notification.NotificationReceiveSettingsActivity" />
|
||||
<activity android:name=".settings.ContentSettingsActivity" />
|
||||
<activity android:name=".live.reservation_status.LiveReservationStatusActivity" />
|
||||
<activity android:name=".live.reservation_status.LiveReservationCancelActivity" />
|
||||
<activity android:name=".live.reservation.status.LiveReservationStatusActivity" />
|
||||
<activity android:name=".live.reservation.status.LiveReservationCancelActivity" />
|
||||
<activity android:name=".audio_content.AudioContentActivity" />
|
||||
<activity android:name=".audio_content.detail.AudioContentDetailActivity" />
|
||||
<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.recommend.LiveRecommendApi
|
||||
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.create.LiveRoomCreateViewModel
|
||||
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.live.reservation.MakeLiveReservationRequest
|
||||
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.GetLiveReservationResponse
|
||||
import kr.co.vividnext.sodalive.live.reservation.status.CancelLiveReservationRequest
|
||||
import kr.co.vividnext.sodalive.live.reservation.status.GetLiveReservationResponse
|
||||
import kr.co.vividnext.sodalive.live.room.CancelLiveRequest
|
||||
import kr.co.vividnext.sodalive.live.room.EnterOrQuitLiveRoomRequest
|
||||
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 kr.co.vividnext.sodalive.common.ApiResponse
|
||||
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.EnterOrQuitLiveRoomRequest
|
||||
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 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 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.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.extensions.convertDateFormat
|
||||
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.settings.language.LanguageManager
|
||||
import kr.co.vividnext.sodalive.settings.language.LocaleHelper
|
||||
import kr.co.vividnext.sodalive.v2.main.MainV2Activity
|
||||
import org.koin.android.ext.android.inject
|
||||
import java.util.Locale
|
||||
import java.util.TimeZone
|
||||
@@ -117,7 +117,7 @@ class LiveReservationCancelActivity : BaseActivity<ActivityLiveReservationCancel
|
||||
|
||||
binding.tvOtherSudaReservation.setOnClickListener {
|
||||
finishAffinity()
|
||||
startActivity(Intent(applicationContext, MainActivity::class.java))
|
||||
startActivity(Intent(applicationContext, MainV2Activity::class.java))
|
||||
}
|
||||
|
||||
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.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.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.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.config.RouletteConfigActivity
|
||||
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.ReportType
|
||||
import kr.co.vividnext.sodalive.report.UserReportDialog
|
||||
import kr.co.vividnext.sodalive.settings.ContentSettingsActivity
|
||||
import kr.co.vividnext.sodalive.settings.language.LanguageManager
|
||||
import kr.co.vividnext.sodalive.settings.notification.MemberRole
|
||||
import kr.co.vividnext.sodalive.v2.main.MainV2Activity
|
||||
import org.json.JSONObject
|
||||
import org.koin.android.ext.android.inject
|
||||
import java.util.concurrent.TimeUnit
|
||||
@@ -379,7 +379,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
|
||||
val bundle = intent?.getBundleExtra(Constants.EXTRA_DATA) ?: return
|
||||
|
||||
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)
|
||||
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