feat: text activity

This commit is contained in:
rebelonion 2024-03-08 22:04:25 -06:00
parent 49175a962a
commit 3af7926d20
3 changed files with 80 additions and 13 deletions

View file

@ -4,6 +4,7 @@ import android.content.Context
import android.view.View import android.view.View
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import ani.dantotsu.R import ani.dantotsu.R
import ani.dantotsu.buildMarkwon
import ani.dantotsu.connections.anilist.api.Activity import ani.dantotsu.connections.anilist.api.Activity
import ani.dantotsu.databinding.ItemActivityBinding import ani.dantotsu.databinding.ItemActivityBinding
import ani.dantotsu.loadImage import ani.dantotsu.loadImage
@ -21,21 +22,27 @@ class ActivityItem(
private lateinit var binding: ItemActivityBinding private lateinit var binding: ItemActivityBinding
override fun bind(viewBinding: ItemActivityBinding, position: Int) { override fun bind(viewBinding: ItemActivityBinding, position: Int) {
binding = viewBinding binding = viewBinding
binding.activityUserName.text = activity.user?.name
binding.activityUserAvatar.loadImage(activity.user?.avatar?.medium)
binding.activityTime.text = ActivityItemBuilder.getDateTime(activity.createdAt)
val color = if (activity.isLiked == true)
ContextCompat.getColor(binding.root.context, R.color.yt_red)
else
ContextCompat.getColor(binding.root.context, R.color.bg_opp)
binding.activityFavorite.setColorFilter(color)
binding.commentRepliesContainer.visibility = if (activity.replyCount > 0) View.VISIBLE else View.GONE
val context = binding.root.context
when (activity.typename) { when (activity.typename) {
"ListActivity" ->{ "ListActivity" ->{
binding.activityUserName.text = activity.user?.name binding.activityContent.visibility = View.GONE
binding.activityUserAvatar.loadImage(activity.user?.avatar?.medium) binding.activityBannerContainer.visibility = View.VISIBLE
binding.activityTime.text = ActivityItemBuilder.getDateTime(activity.createdAt)
val color = if (activity.isLiked == true)
ContextCompat.getColor(binding.root.context, R.color.yt_red)
else
ContextCompat.getColor(binding.root.context, R.color.bg_opp)
binding.activityFavorite.setColorFilter(color)
binding.activityMediaName.text = activity.media?.title?.userPreferred binding.activityMediaName.text = activity.media?.title?.userPreferred
binding.activityText.text = "${activity.user!!.name} ${activity.status} ${activity.media!!.title!!.userPreferred}" binding.activityText.text = "${activity.user!!.name} ${activity.status} ${activity.media!!.title!!.userPreferred}"
binding.activityCover.loadImage(activity.media.coverImage?.medium) binding.activityCover.loadImage(activity.media.coverImage?.medium)
val context = binding.root.context
val banner = activity.media.bannerImage val banner = activity.media.bannerImage
if (banner != null) { if (banner != null) {
if (!(context as android.app.Activity).isDestroyed) if (!(context as android.app.Activity).isDestroyed)
@ -48,6 +55,14 @@ class ActivityItem(
binding.activityBannerImage.setImageResource(R.drawable.linear_gradient_bg) binding.activityBannerImage.setImageResource(R.drawable.linear_gradient_bg)
} }
} }
"TextActivity" -> {
binding.activityBannerContainer.visibility = View.GONE
binding.activityContent.visibility = View.VISIBLE
if (!(context as android.app.Activity).isDestroyed) {
val markwon = buildMarkwon(context, false)
markwon.setMarkdown(binding.activityContent, activity.text ?: "")
}
}
} }
} }

View file

@ -5,6 +5,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:background="?attr/colorSurface"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
@ -71,9 +72,22 @@
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/activityContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:fontFamily="@font/poppins_semi_bold"
android:text="@string/lorem_ipsum"
android:textAlignment="center"
android:textSize="14sp" />
<FrameLayout <FrameLayout
android:id="@+id/activityBannerContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="180dp" android:layout_height="wrap_content"
android:layout_marginTop="8dp"> android:layout_marginTop="8dp">
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
@ -88,8 +102,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="153dp" android:layout_height="153dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
tools:srcCompat="@tools:sample/backgrounds/scenic" tools:ignore="ContentDescription"
tools:ignore="ContentDescription" /> tools:srcCompat="@tools:sample/backgrounds/scenic" />
<ImageView <ImageView
android:id="@+id/imageView" android:id="@+id/imageView"
@ -154,4 +168,34 @@
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
</FrameLayout> </FrameLayout>
<LinearLayout
android:id="@+id/commentRepliesContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center_vertical"
android:layout_marginStart="16dp"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<View
android:id="@+id/commentRepliesDivider"
android:layout_width="32dp"
android:layout_height="3dp"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
android:background="@color/nav_tab" />
<TextView
android:id="@+id/commentTotalReplies"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:alpha="0.8"
android:fontFamily="@font/poppins_semi_bold"
android:text="View replies"
android:textSize="12sp"
tools:ignore="HardcodedText" />
</LinearLayout>
</LinearLayout> </LinearLayout>

View file

@ -684,5 +684,13 @@
<string name="manga_mean_score">Manga Mean Score</string> <string name="manga_mean_score">Manga Mean Score</string>
<string name="about_me">About me</string> <string name="about_me">About me</string>
<string name="follow">Follow</string> <string name="follow">Follow</string>
<string name="lorem_ipsum">
Lorem ipsum dolor sit amet. Est consectetur sint qui internos optio nam Quis excepturi qui voluptatem animi. Qui labore quasi vel suscipit deleniti et doloremque omnis in velit suscipit et quasi eaque. Et doloribus recusandae id laudantium Quis qui natus velit in voluptatem voluptatem!
Et magni quasi vel nemo omnis et voluptate quisquam vel corporis fuga ut consequatur voluptas At quis veniam. At assumenda illum id minus veritatis id consequatur ipsum est quod corrupti quo adipisci sint. Quo explicabo doloribus et excepturi internos est reiciendis laboriosam ut explicabo veniam ut culpa mollitia in ducimus sint aut autem voluptatem! In consectetur laudantium non omnis saepe nam sint fuga.
Non quae tempore quo provident laudantium qui illo dolor vel quia dolor et exercitationem adipisci quo nemo aliquam ea numquam beatae. Eum Quis dolore aut quia accusantium sed vero autem vel quaerat eaque et beatae dicta non delectus galisum non ullam nulla.
</string>
</resources> </resources>