feat(creator): 커뮤니티 상세 작성자 채널 이동을 추가한다

This commit is contained in:
2026-09-17 14:33:18 +09:00
parent 2e67e092a5
commit 1d38912474
3 changed files with 63 additions and 33 deletions
@@ -35,6 +35,7 @@ import kr.co.vividnext.sodalive.explorer.profile.creator_community.modify.Creato
import kr.co.vividnext.sodalive.extensions.loadUrl import kr.co.vividnext.sodalive.extensions.loadUrl
import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.extensions.moneyFormat
import kr.co.vividnext.sodalive.v2.components.modal.V2ModalDialog import kr.co.vividnext.sodalive.v2.components.modal.V2ModalDialog
import kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivity
import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.reply.CreatorChannelCommunityReplyActivity import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.reply.CreatorChannelCommunityReplyActivity
import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.ui.CreatorChannelCommunityCommentAdapter import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.ui.CreatorChannelCommunityCommentAdapter
import kr.co.vividnext.sodalive.v2.widget.feed.calculateFeedCommunityImageHeight import kr.co.vividnext.sodalive.v2.widget.feed.calculateFeedCommunityImageHeight
@@ -174,6 +175,11 @@ class CreatorChannelCommunityDetailActivity : BaseActivity<ActivityCreatorChanne
tvCreatorChannelCommunityDetailNickname.text = post.creatorNickname tvCreatorChannelCommunityDetailNickname.text = post.creatorNickname
tvCreatorChannelCommunityDetailTime.text = tvCreatorChannelCommunityDetailTime.text =
formatUtcRelativeTimeText(tvCreatorChannelCommunityDetailTime.context, post.createdAtUtc) formatUtcRelativeTimeText(tvCreatorChannelCommunityDetailTime.context, post.createdAtUtc)
layoutCreatorChannelCommunityDetailCreator.setOnClickListener {
startActivity(
CreatorChannelActivity.newIntent(this@CreatorChannelCommunityDetailActivity, post.creatorId)
)
}
btnCreatorChannelCommunityDetailMore.isVisible = post.showMore btnCreatorChannelCommunityDetailMore.isVisible = post.showMore
tvCreatorChannelCommunityDetailBody.text = post.content tvCreatorChannelCommunityDetailBody.text = post.content
layoutCreatorChannelCommunityDetailReaction.isVisible = post.showReaction || content.isCommentAvailable layoutCreatorChannelCommunityDetailReaction.isVisible = post.showReaction || content.isCommentAvailable
@@ -53,43 +53,53 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/iv_creator_channel_community_detail_profile" android:id="@+id/layout_creator_channel_community_detail_creator"
android:layout_width="42dp"
android:layout_height="42dp"
android:contentDescription="@string/a11y_feed_profile_image"
android:scaleType="centerCrop"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/bg_placeholder" />
<TextView
android:id="@+id/tv_creator_channel_community_detail_nickname"
style="@style/Typography.Body5"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_8"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/white"
app:layout_constraintEnd_toStartOf="@id/btn_creator_channel_community_detail_more" app:layout_constraintEnd_toStartOf="@id/btn_creator_channel_community_detail_more"
app:layout_constraintStart_toEndOf="@id/iv_creator_channel_community_detail_profile" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_creator_channel_community_detail_profile" app:layout_constraintTop_toTopOf="parent">
tools:text="크리에이터" />
<TextView <ImageView
android:id="@+id/tv_creator_channel_community_detail_time" android:id="@+id/iv_creator_channel_community_detail_profile"
style="@style/Typography.Body6" android:layout_width="42dp"
android:layout_width="0dp" android:layout_height="42dp"
android:layout_height="wrap_content" android:contentDescription="@string/a11y_feed_profile_image"
android:layout_marginTop="2dp" android:scaleType="centerCrop"
android:includeFontPadding="false" app:layout_constraintStart_toStartOf="parent"
android:textColor="@color/gray_500" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="@id/tv_creator_channel_community_detail_nickname" tools:src="@drawable/bg_placeholder" />
app:layout_constraintStart_toStartOf="@id/tv_creator_channel_community_detail_nickname"
app:layout_constraintTop_toBottomOf="@id/tv_creator_channel_community_detail_nickname" <TextView
tools:text="2분 전" /> android:id="@+id/tv_creator_channel_community_detail_nickname"
style="@style/Typography.Body5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_8"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_creator_channel_community_detail_profile"
app:layout_constraintTop_toTopOf="@id/iv_creator_channel_community_detail_profile"
tools:text="크리에이터" />
<TextView
android:id="@+id/tv_creator_channel_community_detail_time"
style="@style/Typography.Body6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:includeFontPadding="false"
android:textColor="@color/gray_500"
app:layout_constraintEnd_toEndOf="@id/tv_creator_channel_community_detail_nickname"
app:layout_constraintStart_toStartOf="@id/tv_creator_channel_community_detail_nickname"
app:layout_constraintTop_toBottomOf="@id/tv_creator_channel_community_detail_nickname"
tools:text="2분 전" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageButton <ImageButton
android:id="@+id/btn_creator_channel_community_detail_more" android:id="@+id/btn_creator_channel_community_detail_more"
@@ -125,6 +125,20 @@ class CreatorChannelCommunityDetailContractTest {
assertEquals(CreatorChannelCommunityRepliesResponse(listOf(reply), 0, 20, false).replies.first(), reply) assertEquals(CreatorChannelCommunityRepliesResponse(listOf(reply), 0, 20, false).replies.first(), reply)
} }
@Test
fun `커뮤니티 상세 작성자 영역은 하나의 클릭으로 크리에이터 채널을 연다`() {
val layout = projectFile("app/src/main/res/layout/activity_creator_channel_community_detail.xml").readText()
val activity = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/detail/" +
"CreatorChannelCommunityDetailActivity.kt"
).readText()
assertTrue(layout.contains("@+id/layout_creator_channel_community_detail_creator"))
assertTrue(activity.contains("layoutCreatorChannelCommunityDetailCreator.setOnClickListener"))
assertTrue(activity.contains("CreatorChannelActivity.newIntent("))
assertTrue(activity.contains("post.creatorId"))
}
private fun projectFile(path: String): File { private fun projectFile(path: String): File {
var current = File(checkNotNull(System.getProperty("user.dir"))).absoluteFile var current = File(checkNotNull(System.getProperty("user.dir"))).absoluteFile
while (current.parentFile != null && !File(current, "settings.gradle").exists()) { while (current.parentFile != null && !File(current, "settings.gradle").exists()) {