fix(deeplink): 커뮤니티 댓글 딥링크 postId 라우팅을 정렬한다
This commit is contained in:
@@ -45,6 +45,8 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
|
||||
private lateinit var imm: InputMethodManager
|
||||
|
||||
private var creatorId: Long = 0
|
||||
private var deepLinkTargetPostId: Long = 0
|
||||
private var isDeepLinkCommentHandled = false
|
||||
private var isListMode = false
|
||||
private var listAnchorPosition = 0
|
||||
private var gridAnchorPosition = 0
|
||||
@@ -114,6 +116,10 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
|
||||
}
|
||||
|
||||
creatorId = intent.getLongExtra(Constants.EXTRA_COMMUNITY_CREATOR_ID, 0)
|
||||
deepLinkTargetPostId = intent.getLongExtra(Constants.EXTRA_COMMUNITY_POST_ID, 0)
|
||||
if (deepLinkTargetPostId <= 0) {
|
||||
deepLinkTargetPostId = intent.getStringExtra(Constants.EXTRA_COMMUNITY_POST_ID)?.toLongOrNull() ?: 0
|
||||
}
|
||||
if (creatorId <= 0) {
|
||||
Toast.makeText(
|
||||
applicationContext,
|
||||
@@ -121,6 +127,7 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
finish()
|
||||
return
|
||||
}
|
||||
|
||||
bindData()
|
||||
@@ -178,15 +185,7 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
|
||||
)
|
||||
},
|
||||
showCommentBottomSheetDialog = { postId, existOrdered ->
|
||||
val dialog = CreatorCommunityCommentFragment(
|
||||
creatorId = creatorId,
|
||||
postId = postId,
|
||||
existOrdered = existOrdered
|
||||
)
|
||||
dialog.show(
|
||||
supportFragmentManager,
|
||||
dialog.tag
|
||||
)
|
||||
showCommentBottomSheet(postId = postId, existOrdered = existOrdered)
|
||||
},
|
||||
onClickModify = {
|
||||
modifyResult.launch(
|
||||
@@ -262,6 +261,7 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
|
||||
loadingDialog.show(screenWidth, "")
|
||||
} else {
|
||||
loadingDialog.dismiss()
|
||||
openDeepLinkTargetCommentIfNeeded()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,9 +275,50 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
|
||||
gridAdapter.items.addAll(it)
|
||||
listAdapter.notifyDataSetChanged()
|
||||
gridAdapter.notifyDataSetChanged()
|
||||
openDeepLinkTargetCommentIfNeeded()
|
||||
}
|
||||
}
|
||||
|
||||
private fun openDeepLinkTargetCommentIfNeeded() {
|
||||
if (isDeepLinkCommentHandled || deepLinkTargetPostId <= 0) {
|
||||
return
|
||||
}
|
||||
|
||||
val targetPost = listAdapter.items.firstOrNull { it.postId == deepLinkTargetPostId }
|
||||
if (targetPost != null) {
|
||||
isDeepLinkCommentHandled = true
|
||||
switchToListMode(listAdapter.items.indexOfFirst { it.postId == targetPost.postId }, fromGridItemClick = false)
|
||||
showCommentBottomSheet(postId = targetPost.postId, existOrdered = targetPost.existOrdered)
|
||||
return
|
||||
}
|
||||
|
||||
if (viewModel.isLast) {
|
||||
isDeepLinkCommentHandled = true
|
||||
Toast.makeText(
|
||||
applicationContext,
|
||||
getString(R.string.screen_creator_community_all_error_invalid_request),
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
return
|
||||
}
|
||||
|
||||
if (viewModel.isLoading.value != true) {
|
||||
viewModel.getCommunityPostList()
|
||||
}
|
||||
}
|
||||
|
||||
private fun showCommentBottomSheet(postId: Long, existOrdered: Boolean) {
|
||||
val dialog = CreatorCommunityCommentFragment(
|
||||
creatorId = creatorId,
|
||||
postId = postId,
|
||||
existOrdered = existOrdered
|
||||
)
|
||||
dialog.show(
|
||||
supportFragmentManager,
|
||||
dialog.tag
|
||||
)
|
||||
}
|
||||
|
||||
private fun setupRecyclerViews() {
|
||||
val listRecyclerView = binding.rvCreatorCommunity
|
||||
listRecyclerView.layoutManager = LinearLayoutManager(
|
||||
|
||||
@@ -111,6 +111,15 @@ class DeepLinkActivity : AppCompatActivity() {
|
||||
putQuery("content_id")
|
||||
putQuery("deep_link_value")
|
||||
putQuery("deep_link_sub5")
|
||||
putQuery("postId")
|
||||
putQuery(Constants.EXTRA_COMMUNITY_CREATOR_ID)
|
||||
putQuery(Constants.EXTRA_COMMUNITY_POST_ID)
|
||||
}
|
||||
|
||||
extras.getString("postId")?.takeIf { it.isNotBlank() }?.let {
|
||||
if (!extras.containsKey(Constants.EXTRA_COMMUNITY_POST_ID)) {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_POST_ID, it)
|
||||
}
|
||||
}
|
||||
|
||||
intent.getBundleExtra(Constants.EXTRA_DATA)?.let { source ->
|
||||
@@ -129,6 +138,8 @@ class DeepLinkActivity : AppCompatActivity() {
|
||||
copyString("deep_link")
|
||||
copyString("deep_link_value")
|
||||
copyString("deep_link_sub5")
|
||||
copyString(Constants.EXTRA_COMMUNITY_CREATOR_ID)
|
||||
copyString(Constants.EXTRA_COMMUNITY_POST_ID)
|
||||
|
||||
source.getLong(Constants.EXTRA_ROOM_ID).takeIf { it > 0 }?.let {
|
||||
extras.putString("room_id", it.toString())
|
||||
@@ -145,6 +156,12 @@ class DeepLinkActivity : AppCompatActivity() {
|
||||
source.getLong(Constants.EXTRA_AUDIO_CONTENT_ID).takeIf { it > 0 }?.let {
|
||||
extras.putString("content_id", it.toString())
|
||||
}
|
||||
source.getLong(Constants.EXTRA_COMMUNITY_CREATOR_ID).takeIf { it > 0 }?.let {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_CREATOR_ID, it.toString())
|
||||
}
|
||||
source.getLong(Constants.EXTRA_COMMUNITY_POST_ID).takeIf { it > 0 }?.let {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_POST_ID, it.toString())
|
||||
}
|
||||
}
|
||||
|
||||
intent.getLongExtra(Constants.EXTRA_ROOM_ID, 0).takeIf { it > 0 }?.let {
|
||||
@@ -162,6 +179,12 @@ class DeepLinkActivity : AppCompatActivity() {
|
||||
intent.getLongExtra(Constants.EXTRA_AUDIO_CONTENT_ID, 0).takeIf { it > 0 }?.let {
|
||||
extras.putString("content_id", it.toString())
|
||||
}
|
||||
intent.getLongExtra(Constants.EXTRA_COMMUNITY_CREATOR_ID, 0).takeIf { it > 0 }?.let {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_CREATOR_ID, it.toString())
|
||||
}
|
||||
intent.getLongExtra(Constants.EXTRA_COMMUNITY_POST_ID, 0).takeIf { it > 0 }?.let {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_POST_ID, it.toString())
|
||||
}
|
||||
|
||||
intent.getStringExtra("deep_link")?.takeIf { it.isNotBlank() }?.let {
|
||||
extras.putString("deep_link", it)
|
||||
@@ -171,6 +194,18 @@ class DeepLinkActivity : AppCompatActivity() {
|
||||
extras.putString("deep_link", it)
|
||||
}
|
||||
|
||||
intent.getStringExtra("postId")?.takeIf { it.isNotBlank() }?.let {
|
||||
if (!extras.containsKey(Constants.EXTRA_COMMUNITY_POST_ID)) {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_POST_ID, it)
|
||||
}
|
||||
}
|
||||
|
||||
intent.getStringExtra(Constants.EXTRA_COMMUNITY_CREATOR_ID)?.takeIf { it.isNotBlank() }?.let {
|
||||
if (!extras.containsKey(Constants.EXTRA_COMMUNITY_CREATOR_ID)) {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_CREATOR_ID, it)
|
||||
}
|
||||
}
|
||||
|
||||
if (data != null) {
|
||||
applyPathDeepLink(data = data, putIfAbsent = ::putIfAbsent)
|
||||
}
|
||||
@@ -228,6 +263,8 @@ class DeepLinkActivity : AppCompatActivity() {
|
||||
?: bundle.getLong(Constants.EXTRA_AUDITION_ID).takeIf { it > 0 }
|
||||
val communityCreatorId = bundle.getString(Constants.EXTRA_COMMUNITY_CREATOR_ID)?.toLongOrNull()
|
||||
?: bundle.getLong(Constants.EXTRA_COMMUNITY_CREATOR_ID).takeIf { it > 0 }
|
||||
val communityPostId = bundle.getString(Constants.EXTRA_COMMUNITY_POST_ID)?.toLongOrNull()
|
||||
?: bundle.getLong(Constants.EXTRA_COMMUNITY_POST_ID).takeIf { it > 0 }
|
||||
|
||||
when {
|
||||
roomId != null && roomId > 0 -> {
|
||||
@@ -262,6 +299,9 @@ class DeepLinkActivity : AppCompatActivity() {
|
||||
startActivity(
|
||||
Intent(applicationContext, CreatorCommunityAllActivity::class.java).apply {
|
||||
putExtra(Constants.EXTRA_COMMUNITY_CREATOR_ID, communityCreatorId)
|
||||
if (communityPostId != null && communityPostId > 0) {
|
||||
putExtra(Constants.EXTRA_COMMUNITY_POST_ID, communityPostId)
|
||||
}
|
||||
}
|
||||
)
|
||||
return true
|
||||
|
||||
@@ -336,6 +336,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
||||
?: bundle.getLong(Constants.EXTRA_AUDITION_ID).takeIf { it > 0 }
|
||||
val communityCreatorId = bundle.getString(Constants.EXTRA_COMMUNITY_CREATOR_ID)?.toLongOrNull()
|
||||
?: bundle.getLong(Constants.EXTRA_COMMUNITY_CREATOR_ID).takeIf { it > 0 }
|
||||
val communityPostId = bundle.getString(Constants.EXTRA_COMMUNITY_POST_ID)?.toLongOrNull()
|
||||
?: bundle.getLong(Constants.EXTRA_COMMUNITY_POST_ID).takeIf { it > 0 }
|
||||
when {
|
||||
roomId != null && roomId > 0 -> {
|
||||
viewModel.clickTab(MainViewModel.CurrentTab.LIVE)
|
||||
@@ -371,6 +373,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
||||
communityCreatorId != null && communityCreatorId > 0 -> {
|
||||
val nextIntent = Intent(applicationContext, CreatorCommunityAllActivity::class.java)
|
||||
nextIntent.putExtra(Constants.EXTRA_COMMUNITY_CREATOR_ID, communityCreatorId)
|
||||
if (communityPostId != null && communityPostId > 0) {
|
||||
nextIntent.putExtra(Constants.EXTRA_COMMUNITY_POST_ID, communityPostId)
|
||||
}
|
||||
startActivity(nextIntent)
|
||||
return true
|
||||
}
|
||||
@@ -411,7 +416,15 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
||||
putQuery("content_id")
|
||||
putQuery("deep_link_value")
|
||||
putQuery("deep_link_sub5")
|
||||
putQuery("postId")
|
||||
putQuery(Constants.EXTRA_COMMUNITY_CREATOR_ID)
|
||||
putQuery(Constants.EXTRA_COMMUNITY_POST_ID)
|
||||
|
||||
extras.getString("postId")?.takeIf { it.isNotBlank() }?.let {
|
||||
if (!extras.containsKey(Constants.EXTRA_COMMUNITY_POST_ID)) {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_POST_ID, it)
|
||||
}
|
||||
}
|
||||
|
||||
applyPathDeepLink(data = data) { key, value ->
|
||||
if (!value.isNullOrBlank() && !extras.containsKey(key)) {
|
||||
@@ -419,6 +432,39 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
|
||||
}
|
||||
}
|
||||
|
||||
val deepLinkValue = extras.getString("deep_link_value")
|
||||
val deepLinkValueId = extras.getString("deep_link_sub5")
|
||||
|
||||
if (!deepLinkValue.isNullOrBlank() && !deepLinkValueId.isNullOrBlank()) {
|
||||
when (deepLinkValue.lowercase(Locale.ROOT)) {
|
||||
"live" -> if (!extras.containsKey("room_id")) {
|
||||
extras.putString("room_id", deepLinkValueId)
|
||||
}
|
||||
|
||||
"channel" -> if (!extras.containsKey("channel_id")) {
|
||||
extras.putString("channel_id", deepLinkValueId)
|
||||
}
|
||||
|
||||
"content" -> if (!extras.containsKey("content_id")) {
|
||||
extras.putString("content_id", deepLinkValueId)
|
||||
}
|
||||
|
||||
"audition" -> if (!extras.containsKey("audition_id")) {
|
||||
extras.putString("audition_id", deepLinkValueId)
|
||||
}
|
||||
|
||||
"community" -> if (!extras.containsKey(Constants.EXTRA_COMMUNITY_CREATOR_ID)) {
|
||||
extras.putString(Constants.EXTRA_COMMUNITY_CREATOR_ID, deepLinkValueId)
|
||||
}
|
||||
|
||||
"message" -> if (!extras.containsKey("message_id")) {
|
||||
extras.putString("message_id", deepLinkValueId)
|
||||
}
|
||||
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
return extras
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user