This commit is contained in:
rebelonion 2024-03-08 22:05:17 -06:00
commit a9b03c45c6
15 changed files with 129 additions and 75 deletions

View file

@ -32,6 +32,7 @@ import ani.dantotsu.media.Media
import ani.dantotsu.media.MediaAdaptor
import ani.dantotsu.media.user.ListActivity
import ani.dantotsu.navBarHeight
import ani.dantotsu.profile.ProfileActivity
import ani.dantotsu.setSafeOnClickListener
import ani.dantotsu.setSlideIn
import ani.dantotsu.setSlideUp
@ -120,6 +121,13 @@ class HomeFragment : Fragment() {
"dialog"
)
}
binding.homeUserAvatarContainer.setOnLongClickListener {
ContextCompat.startActivity(
requireContext(), Intent(requireContext(), ProfileActivity::class.java)
.putExtra("userId", Anilist.userid), null
)
false
}
binding.homeContainer.updateLayoutParams<ViewGroup.MarginLayoutParams> {
bottomMargin = navBarHeight

View file

@ -2,6 +2,7 @@ package ani.dantotsu.profile
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.ViewGroup.MarginLayoutParams
import android.widget.ImageButton
import androidx.appcompat.app.AppCompatActivity
@ -47,7 +48,7 @@ class FollowActivity : AppCompatActivity(){
false
)
binding.listRecyclerView.adapter = adapter
binding.listProgressBar.visibility = View.VISIBLE
binding.listBack.setOnClickListener { finish() }
val title = intent.getStringExtra("title")
@ -63,6 +64,7 @@ class FollowActivity : AppCompatActivity(){
users = respond
withContext(Dispatchers.Main) {
fillList()
binding.listProgressBar.visibility = View.GONE
}
}
binding.followerList.setOnClickListener {
@ -86,7 +88,7 @@ class FollowActivity : AppCompatActivity(){
}
users?.forEach { user ->
if (getLayoutType(selected) == 0) {
adapter.add(FollowerItem(user.id, user.name ?: "Unknown", user.avatar?.medium, user.bannerImage) { onUserClick(it) })
adapter.add(FollowerItem(user.id, user.name ?: "Unknown", user.avatar?.medium, user.bannerImage ?: user.avatar?.medium ) { onUserClick(it) })
} else {
adapter.add(GridFollowerItem(user.id, user.name ?: "Unknown", user.avatar?.medium) { onUserClick(it) })
}

View file

@ -33,7 +33,7 @@ class FollowerItem(
Glide.with(context as Context)
.load(GlideUrl(banner))
.diskCacheStrategy(DiskCacheStrategy.ALL).override(400)
.apply(RequestOptions.bitmapTransform(BlurTransformation(2, 6)))
.apply(RequestOptions.bitmapTransform(BlurTransformation(2, 2)))
.into(binding.profileBannerImage)
} else {
binding.profileBannerImage.setImageResource(R.drawable.linear_gradient_bg)

View file

@ -22,6 +22,7 @@ import ani.dantotsu.initActivity
import ani.dantotsu.loadImage
import ani.dantotsu.navBarHeight
import ani.dantotsu.others.ImageViewDialog
import ani.dantotsu.profile.activity.ActivityActivity
import ani.dantotsu.settings.saving.PrefManager
import ani.dantotsu.settings.saving.PrefName
import ani.dantotsu.snackString

View file

@ -1,4 +1,4 @@
package ani.dantotsu.profile
package ani.dantotsu.profile.activity
import android.annotation.SuppressLint
import android.os.Bundle
@ -11,11 +11,12 @@ import ani.dantotsu.connections.anilist.Anilist
import ani.dantotsu.connections.anilist.api.Activity
import ani.dantotsu.databinding.ActivityFollowBinding
import ani.dantotsu.initActivity
import ani.dantotsu.profile.activity.ActivityItem
import ani.dantotsu.statusBarHeight
import ani.dantotsu.themes.ThemeManager
import com.xwray.groupie.GroupieAdapter
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class ActivityActivity : AppCompatActivity() {
private lateinit var binding: ActivityFollowBinding
@ -39,16 +40,20 @@ class ActivityActivity : AppCompatActivity() {
binding.listBack.setOnClickListener {
onBackPressed()
}
binding.listProgressBar.visibility = ViewGroup.VISIBLE
var userId: Int? = intent.getIntExtra("userId", -1)
if (userId == -1) userId = null
val global = intent.getBooleanExtra("global", false)
lifecycleScope.launch {
lifecycleScope.launch(Dispatchers.IO) {
val res = Anilist.query.getFeed(userId, global)
res?.data?.page?.activities?.let { activities ->
activityList = activities
adapter.update(activityList.map { ActivityItem(it){} })
withContext(Dispatchers.Main){
res?.data?.page?.activities?.let { activities ->
activityList = activities
adapter.update(activityList.map { ActivityItem(it){} })
}
binding.listProgressBar.visibility = ViewGroup.GONE
}
}
}

View file

@ -1,5 +1,6 @@
package ani.dantotsu.profile.activity
import android.annotation.SuppressLint
import android.content.Context
import android.view.View
import androidx.core.content.ContextCompat
@ -20,6 +21,7 @@ class ActivityItem(
val clickCallback: (Int) -> Unit
): BindableItem<ItemActivityBinding>() {
private lateinit var binding: ItemActivityBinding
@SuppressLint("SetTextI18n")
override fun bind(viewBinding: ItemActivityBinding, position: Int) {
binding = viewBinding
@ -45,12 +47,13 @@ class ActivityItem(
binding.activityCover.loadImage(activity.media.coverImage?.medium)
val banner = activity.media.bannerImage
if (banner != null) {
if (!(context as android.app.Activity).isDestroyed)
Glide.with(context as Context)
.load(GlideUrl(banner))
.diskCacheStrategy(DiskCacheStrategy.ALL).override(400)
.apply(RequestOptions.bitmapTransform(BlurTransformation(2, 2)))
.into(binding.activityBannerImage)
if (!(context as android.app.Activity).isDestroyed) {
Glide.with(context as Context)
.load(GlideUrl(banner))
.diskCacheStrategy(DiskCacheStrategy.ALL).override(400)
.apply(RequestOptions.bitmapTransform(BlurTransformation(2, 2)))
.into(binding.activityBannerImage)
}
} else {
binding.activityBannerImage.setImageResource(R.drawable.linear_gradient_bg)
}

View file

@ -18,7 +18,9 @@ import ani.dantotsu.profile.ProfileActivity
import ani.dantotsu.statusBarHeight
import ani.dantotsu.themes.ThemeManager
import com.xwray.groupie.GroupieAdapter
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class NotificationActivity : AppCompatActivity() {
private lateinit var binding: ActivityFollowBinding
@ -41,13 +43,16 @@ class NotificationActivity : AppCompatActivity() {
binding.listBack.setOnClickListener {
onBackPressed()
}
binding.listProgressBar.visibility = ViewGroup.VISIBLE
lifecycleScope.launch {
val res = Anilist.query.getNotifications(Anilist.userid?:0)
res?.data?.page?.notifications?.let { notifications ->
notificationList = notifications
adapter.update(notificationList.map { NotificationItem(it, ::onNotificationClick) })
}
withContext(Dispatchers.Main){
binding.listProgressBar.visibility = ViewGroup.GONE
}
}
}

View file

@ -38,7 +38,7 @@ class NotificationItem(
private fun image(user: Boolean = false) {
val context = binding.notificationBannerImage.context
val cover = if (user) notification.user?.bannerImage else notification.media?.bannerImage
val cover = if (user) notification.user?.bannerImage ?: notification.user?.avatar?.medium else notification.media?.bannerImage ?: notification.media?.coverImage?.large
if (cover != null) {
if (!(context as Activity).isDestroyed)
Glide.with(context as Context)
@ -50,7 +50,7 @@ class NotificationItem(
binding.notificationBannerImage.setImageResource(R.drawable.linear_gradient_bg)
}
val defaultHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 170f, context.resources.displayMetrics).toInt()
val userHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80f, context.resources.displayMetrics).toInt()
val userHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 90f, context.resources.displayMetrics).toInt()
if (user) {
binding.notificationCover.visibility = View.GONE
@ -58,14 +58,12 @@ class NotificationItem(
binding.notificationCoverUserContainer.visibility = View.VISIBLE
binding.notificationCoverUser.loadImage(notification.user?.avatar?.large)
binding.notificationBannerImage.layoutParams.height = userHeight
binding.notificationBannerGradient.layoutParams.height = userHeight
} else{
binding.notificationCover.visibility = View.VISIBLE
binding.notificationCoverUser.visibility = View.VISIBLE
binding.notificationCoverUserContainer.visibility = View.GONE
binding.notificationCover.loadImage(notification.media?.coverImage?.large)
binding.notificationBannerImage.layoutParams.height = defaultHeight
binding.notificationBannerGradient.layoutParams.height = defaultHeight
}
}

View file

@ -59,6 +59,12 @@ class SettingsDialogFragment : BottomSheetDialogFragment() {
val theme = requireContext().theme
theme.resolveAttribute(com.google.android.material.R.attr.colorSurface, typedValue, true)
window?.navigationBarColor = typedValue.data
val notificationIcon = if (Anilist.unreadNotificationCount > 0) {
R.drawable.ic_round_notifications_active_24
} else {
R.drawable.ic_round_notifications_none_24
}
binding.settingsNotification.setImageResource(notificationIcon)
if (Anilist.token != null) {
binding.settingsLogin.setText(R.string.logout)