fix(main): 콘텐츠와 대화 title bar 이동을 연결한다
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package kr.co.vividnext.sodalive.v2.main.chat
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
@@ -12,6 +13,9 @@ import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.chat.talk.room.ChatRoomActivity
|
||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentV2MainChatBinding
|
||||
import kr.co.vividnext.sodalive.mypage.can.charge.CanChargeActivity
|
||||
import kr.co.vividnext.sodalive.search.SearchActivity
|
||||
import kr.co.vividnext.sodalive.v2.main.ensureMainV2NavigationAllowed
|
||||
import kr.co.vividnext.sodalive.v2.main.chat.dm.DmChatRoomActivity
|
||||
import kr.co.vividnext.sodalive.v2.main.chat.model.ChatRoomFilter
|
||||
import kr.co.vividnext.sodalive.v2.main.chat.model.ChatRoomListUiItem
|
||||
@@ -63,8 +67,11 @@ class ChatMainFragment : BaseFragment<FragmentV2MainChatBinding>(
|
||||
private fun setupTitleBar() {
|
||||
binding.viewChatTitleBar.tvTitleBarTitle.setText(R.string.tab_chat)
|
||||
binding.viewChatTitleBar.ivTitleBarMenu.setImageResource(R.drawable.ic_bar_cash)
|
||||
binding.viewChatTitleBar.llTitleBarActions.addView(
|
||||
ImageView(requireContext()).apply {
|
||||
binding.viewChatTitleBar.ivTitleBarMenu.setOnClickListener {
|
||||
openWithLoginGuard(CanChargeActivity::class.java)
|
||||
}
|
||||
|
||||
val searchAction = ImageView(requireContext()).apply {
|
||||
setImageResource(R.drawable.ic_bar_search)
|
||||
layoutParams = LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
@@ -73,7 +80,16 @@ class ChatMainFragment : BaseFragment<FragmentV2MainChatBinding>(
|
||||
marginStart = resources.getDimensionPixelSize(R.dimen.spacing_14)
|
||||
}
|
||||
}
|
||||
)
|
||||
searchAction.setOnClickListener {
|
||||
openWithLoginGuard(SearchActivity::class.java)
|
||||
}
|
||||
binding.viewChatTitleBar.llTitleBarActions.addView(searchAction)
|
||||
}
|
||||
|
||||
private fun openWithLoginGuard(activityClass: Class<*>) {
|
||||
ensureMainV2NavigationAllowed {
|
||||
startActivity(Intent(requireContext(), activityClass))
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupFilterTabs(initialFilter: ChatRoomFilter) {
|
||||
|
||||
@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.audio_content.box.AudioContentBoxActivity
|
||||
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
||||
import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
@@ -23,6 +24,8 @@ import kr.co.vividnext.sodalive.databinding.FragmentV2MainContentBinding
|
||||
import kr.co.vividnext.sodalive.databinding.ViewSectionTitleBinding
|
||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||
import kr.co.vividnext.sodalive.home.SeriesPublishedDaysOfWeek
|
||||
import kr.co.vividnext.sodalive.mypage.can.charge.CanChargeActivity
|
||||
import kr.co.vividnext.sodalive.search.SearchActivity
|
||||
import kr.co.vividnext.sodalive.v2.common.data.ContentSort
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.model.toLabelResId
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.ui.CreatorChannelSortPopup
|
||||
@@ -113,6 +116,7 @@ class ContentMainFragment : BaseFragment<FragmentV2MainContentBinding>(
|
||||
setUpAllTypeTabs()
|
||||
setUpAllDayFilter()
|
||||
setUpAllSortButton()
|
||||
setupTitleBarActions()
|
||||
showContentTab(CONTENT_TAB_RECOMMENDATION)
|
||||
setUpSectionTitles()
|
||||
setUpAdapters()
|
||||
@@ -129,6 +133,24 @@ class ContentMainFragment : BaseFragment<FragmentV2MainContentBinding>(
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
private fun setupTitleBarActions() {
|
||||
binding.viewContentTitleBar.ivTitleBarCash.setOnClickListener {
|
||||
openWithLoginGuard(CanChargeActivity::class.java)
|
||||
}
|
||||
binding.viewContentTitleBar.ivTitleBarSearch.setOnClickListener {
|
||||
openWithLoginGuard(SearchActivity::class.java)
|
||||
}
|
||||
binding.viewContentTitleBar.ivTitleBarStorage.setOnClickListener {
|
||||
openWithLoginGuard(AudioContentBoxActivity::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
private fun openWithLoginGuard(activityClass: Class<*>) {
|
||||
ensureMainV2NavigationAllowed {
|
||||
startActivity(Intent(requireContext(), activityClass))
|
||||
}
|
||||
}
|
||||
|
||||
fun selectAllTab(type: MainContentAllType, sort: ContentSort = ContentSort.LATEST) {
|
||||
pendingAllTabSelection = ContentAllTabSelection(type, sort)
|
||||
if (view != null) {
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package kr.co.vividnext.sodalive.v2.main.chat
|
||||
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
|
||||
class ChatMainTitleBarActionSourceTest {
|
||||
|
||||
@Test
|
||||
fun `대화 title bar 우측 아이콘은 기존 목적지로 이동한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/ChatMainFragment.kt"
|
||||
).readText()
|
||||
|
||||
assertTrue(source.contains("ivTitleBarMenu.setOnClickListener"))
|
||||
assertTrue(source.contains("searchAction.setOnClickListener"))
|
||||
assertTrue(source.contains("ensureMainV2NavigationAllowed"))
|
||||
assertTrue(source.contains("CanChargeActivity::class.java"))
|
||||
assertTrue(source.contains("SearchActivity::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")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package kr.co.vividnext.sodalive.v2.main.content
|
||||
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
|
||||
class ContentMainTitleBarActionSourceTest {
|
||||
|
||||
@Test
|
||||
fun `콘텐츠 title bar 우측 아이콘은 기존 목적지로 이동한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt"
|
||||
).readText()
|
||||
|
||||
assertTrue(source.contains("viewContentTitleBar.ivTitleBarCash.setOnClickListener"))
|
||||
assertTrue(source.contains("viewContentTitleBar.ivTitleBarSearch.setOnClickListener"))
|
||||
assertTrue(source.contains("viewContentTitleBar.ivTitleBarStorage.setOnClickListener"))
|
||||
assertTrue(source.contains("ensureMainV2NavigationAllowed"))
|
||||
assertTrue(source.contains("CanChargeActivity::class.java"))
|
||||
assertTrue(source.contains("SearchActivity::class.java"))
|
||||
assertTrue(source.contains("AudioContentBoxActivity::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