fix(main): 콘텐츠와 대화 title bar 이동을 연결한다
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package kr.co.vividnext.sodalive.v2.main.chat
|
package kr.co.vividnext.sodalive.v2.main.chat
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageView
|
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.chat.talk.room.ChatRoomActivity
|
||||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||||
import kr.co.vividnext.sodalive.databinding.FragmentV2MainChatBinding
|
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.dm.DmChatRoomActivity
|
||||||
import kr.co.vividnext.sodalive.v2.main.chat.model.ChatRoomFilter
|
import kr.co.vividnext.sodalive.v2.main.chat.model.ChatRoomFilter
|
||||||
import kr.co.vividnext.sodalive.v2.main.chat.model.ChatRoomListUiItem
|
import kr.co.vividnext.sodalive.v2.main.chat.model.ChatRoomListUiItem
|
||||||
@@ -63,8 +67,11 @@ class ChatMainFragment : BaseFragment<FragmentV2MainChatBinding>(
|
|||||||
private fun setupTitleBar() {
|
private fun setupTitleBar() {
|
||||||
binding.viewChatTitleBar.tvTitleBarTitle.setText(R.string.tab_chat)
|
binding.viewChatTitleBar.tvTitleBarTitle.setText(R.string.tab_chat)
|
||||||
binding.viewChatTitleBar.ivTitleBarMenu.setImageResource(R.drawable.ic_bar_cash)
|
binding.viewChatTitleBar.ivTitleBarMenu.setImageResource(R.drawable.ic_bar_cash)
|
||||||
binding.viewChatTitleBar.llTitleBarActions.addView(
|
binding.viewChatTitleBar.ivTitleBarMenu.setOnClickListener {
|
||||||
ImageView(requireContext()).apply {
|
openWithLoginGuard(CanChargeActivity::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
val searchAction = ImageView(requireContext()).apply {
|
||||||
setImageResource(R.drawable.ic_bar_search)
|
setImageResource(R.drawable.ic_bar_search)
|
||||||
layoutParams = LinearLayout.LayoutParams(
|
layoutParams = LinearLayout.LayoutParams(
|
||||||
LinearLayout.LayoutParams.WRAP_CONTENT,
|
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||||
@@ -73,7 +80,16 @@ class ChatMainFragment : BaseFragment<FragmentV2MainChatBinding>(
|
|||||||
marginStart = resources.getDimensionPixelSize(R.dimen.spacing_14)
|
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) {
|
private fun setupFilterTabs(initialFilter: ChatRoomFilter) {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.GridLayoutManager
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import kr.co.vividnext.sodalive.R
|
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.detail.AudioContentDetailActivity
|
||||||
import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity
|
import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity
|
||||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
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.databinding.ViewSectionTitleBinding
|
||||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||||
import kr.co.vividnext.sodalive.home.SeriesPublishedDaysOfWeek
|
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.common.data.ContentSort
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.model.toLabelResId
|
import kr.co.vividnext.sodalive.v2.creator.channel.model.toLabelResId
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.ui.CreatorChannelSortPopup
|
import kr.co.vividnext.sodalive.v2.creator.channel.ui.CreatorChannelSortPopup
|
||||||
@@ -113,6 +116,7 @@ class ContentMainFragment : BaseFragment<FragmentV2MainContentBinding>(
|
|||||||
setUpAllTypeTabs()
|
setUpAllTypeTabs()
|
||||||
setUpAllDayFilter()
|
setUpAllDayFilter()
|
||||||
setUpAllSortButton()
|
setUpAllSortButton()
|
||||||
|
setupTitleBarActions()
|
||||||
showContentTab(CONTENT_TAB_RECOMMENDATION)
|
showContentTab(CONTENT_TAB_RECOMMENDATION)
|
||||||
setUpSectionTitles()
|
setUpSectionTitles()
|
||||||
setUpAdapters()
|
setUpAdapters()
|
||||||
@@ -129,6 +133,24 @@ class ContentMainFragment : BaseFragment<FragmentV2MainContentBinding>(
|
|||||||
super.onDestroyView()
|
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) {
|
fun selectAllTab(type: MainContentAllType, sort: ContentSort = ContentSort.LATEST) {
|
||||||
pendingAllTabSelection = ContentAllTabSelection(type, sort)
|
pendingAllTabSelection = ContentAllTabSelection(type, sort)
|
||||||
if (view != null) {
|
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