fix(social): crash when clicking story

This commit is contained in:
aayush262 2024-04-27 17:22:00 +05:30
parent 7ecdbfd42f
commit 90e611dc4f
4 changed files with 79 additions and 52 deletions

View file

@ -13,6 +13,7 @@ import ani.dantotsu.initActivity
import ani.dantotsu.others.getSerialized
import ani.dantotsu.themes.ThemeManager
import ani.dantotsu.home.status.listener.StoriesCallback
import ani.dantotsu.media.Media
import ani.dantotsu.navBarHeight
import ani.dantotsu.profile.User
import ani.dantotsu.settings.saving.PrefManager
@ -32,7 +33,7 @@ class StatusActivity : AppCompatActivity(), StoriesCallback {
initActivity(this)
binding = ActivityStatusBinding.inflate(layoutInflater)
setContentView(binding.root)
activity = intent.getSerialized("user")!!
activity = user
position = intent.getIntExtra("position", -1)
binding.root.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = statusBarHeight
@ -85,5 +86,7 @@ class StatusActivity : AppCompatActivity(), StoriesCallback {
finish()
}
}
companion object {
var user: ArrayList<User> = arrayListOf()
}
}

View file

@ -11,22 +11,21 @@ import ani.dantotsu.profile.ProfileActivity
import ani.dantotsu.profile.User
import ani.dantotsu.setAnimation
import ani.dantotsu.settings.saving.PrefManager
import java.io.Serializable
class UserStatus(private val user: ArrayList<User>) :
RecyclerView.Adapter< UserStatus.UsersViewHolder>() {
RecyclerView.Adapter<UserStatus.UsersViewHolder>() {
inner class UsersViewHolder(val binding: ItemUserStatusBinding) :
RecyclerView.ViewHolder(binding.root) {
init {
itemView.setOnClickListener {
ContextCompat.startActivity(
StatusActivity.user = user
ContextCompat.startActivity(
itemView.context,
Intent(
itemView.context,
StatusActivity::class.java
).putExtra("user", user as Serializable)
.putExtra("position", bindingAdapterPosition),
).putExtra("position", bindingAdapterPosition),
null
)
}
@ -61,7 +60,8 @@ class UserStatus(private val user: ArrayList<User>) :
b.profileUserAvatar.loadImage(user.pfp)
b.profileUserName.text = user.name
val watchedActivityIds = PrefManager.getCustomVal<Set<Int>>("${user.id}_activities", setOf())
val watchedActivityIds =
PrefManager.getCustomVal<Set<Int>>("${user.id}_activities", setOf())
val activityIdToStatusList = user.activity.map { watchedActivityIds.contains(it.id) }
b.profileUserStatusIndicator.setParts(user.activity.size, activityIdToStatusList)

View file

@ -31,6 +31,7 @@ import ani.dantotsu.profile.User
import ani.dantotsu.profile.UsersDialogFragment
import ani.dantotsu.profile.activity.ActivityItemBuilder
import ani.dantotsu.settings.saving.PrefManager
import ani.dantotsu.settings.saving.PrefName
import ani.dantotsu.snackString
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@ -52,6 +53,7 @@ constructor(
private lateinit var rightTouchPanel: FrameLayout
private lateinit var statusUserContainer: LinearLayout
private lateinit var imageContentView: ImageView
private lateinit var imageContentViewKen: ImageView
private lateinit var loadingView: ProgressBar
private lateinit var activityLikeCount: TextView
private lateinit var activityLike: ImageView
@ -84,6 +86,7 @@ constructor(
leftTouchPanel = findViewById(R.id.leftTouchPanel)
rightTouchPanel = findViewById(R.id.rightTouchPanel)
imageContentView = findViewById(R.id.contentImageView)
imageContentViewKen = findViewById(R.id.contentImageViewKen)
statusUserContainer = findViewById(R.id.statusUserContainer)
loadingView = findViewById(R.id.androidStoriesLoadingView)
coverImage = findViewById(R.id.coverImage)
@ -369,7 +372,9 @@ constructor(
private fun loadStory(story: Activity) {
loadingView.visibility = View.GONE
animation.start()
blurImage(imageContentView, story.media?.bannerImage ?: story.media?.coverImage?.extraLarge)
val bannerAnimations: Boolean = PrefManager.getVal(PrefName.BannerAnimations)
blurImage(if (bannerAnimations)imageContentViewKen else imageContentView, story.media?.bannerImage ?: story.media?.coverImage?.extraLarge)
userAvatar.loadImage(story.user?.avatar?.large)
coverImage.loadImage(story.media?.coverImage?.extraLarge)
userName.text = story.user?.name
@ -381,7 +386,12 @@ constructor(
else {
it.toString()
}
}} ${story.progress ?: story.media?.title?.userPreferred}"
}} ${story.progress ?: story.media?.title?.userPreferred} " +
if (story.status?.contains("Completed") != false) {
"of ${story.media?.title?.userPreferred}"
}else {
""
}
infoText.text = text
statusUserContainer.setOnClickListener {