diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8408d9ff..8590ff4d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -115,7 +115,7 @@ android:windowSoftInputMode="adjustResize|stateHidden" android:parentActivityName=".MainActivity" /> diff --git a/app/src/main/java/ani/dantotsu/home/HomeFragment.kt b/app/src/main/java/ani/dantotsu/home/HomeFragment.kt index e0a2dc14..9652c43b 100644 --- a/app/src/main/java/ani/dantotsu/home/HomeFragment.kt +++ b/app/src/main/java/ani/dantotsu/home/HomeFragment.kt @@ -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 { bottomMargin = navBarHeight diff --git a/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt b/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt index 9cb1b612..fa30f6a3 100644 --- a/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt @@ -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) }) } diff --git a/app/src/main/java/ani/dantotsu/profile/FollowerItem.kt b/app/src/main/java/ani/dantotsu/profile/FollowerItem.kt index 378a1b82..f09c2435 100644 --- a/app/src/main/java/ani/dantotsu/profile/FollowerItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/FollowerItem.kt @@ -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) diff --git a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt index a7afa0f5..b180a833 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt @@ -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 diff --git a/app/src/main/java/ani/dantotsu/profile/ActivityActivity.kt b/app/src/main/java/ani/dantotsu/profile/activity/ActivityActivity.kt similarity index 77% rename from app/src/main/java/ani/dantotsu/profile/ActivityActivity.kt rename to app/src/main/java/ani/dantotsu/profile/activity/ActivityActivity.kt index 341bde71..a9482820 100644 --- a/app/src/main/java/ani/dantotsu/profile/ActivityActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/ActivityActivity.kt @@ -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 } } } diff --git a/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt b/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt index ee7481c6..5744c6c6 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt @@ -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() { 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) } diff --git a/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt b/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt index a7ff26dc..f699b274 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt @@ -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 + } } } diff --git a/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt b/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt index 31e84a76..b6a2163a 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/NotificationItem.kt @@ -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 } } diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt b/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt index 8a1c9be4..6638b151 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt @@ -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) diff --git a/app/src/main/res/layout/activity_follow.xml b/app/src/main/res/layout/activity_follow.xml index ce25a262..59358670 100644 --- a/app/src/main/res/layout/activity_follow.xml +++ b/app/src/main/res/layout/activity_follow.xml @@ -6,13 +6,18 @@ android:layout_height="match_parent" android:orientation="vertical"> - + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + tools:visibility="gone"> + + + + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + android:layout_marginEnd="16dp"> diff --git a/app/src/main/res/layout/item_activity.xml b/app/src/main/res/layout/item_activity.xml index 2220d60e..361df9d2 100644 --- a/app/src/main/res/layout/item_activity.xml +++ b/app/src/main/res/layout/item_activity.xml @@ -19,8 +19,9 @@ android:layout_height="64dp" android:layout_gravity="start|center_vertical" android:layout_marginStart="16dp" - android:backgroundTint="@color/bg_white" - app:cardCornerRadius="64dp"> + android:backgroundTint="@color/transparent" + app:cardCornerRadius="64dp" + app:strokeColor="@color/transparent"> - + android:orientation="vertical"> + + + + + @@ -100,7 +116,7 @@ @@ -108,7 +124,7 @@ @@ -127,6 +143,7 @@ android:layout_width="102dp" android:layout_height="154dp" android:layout_gravity="center" + android:scaleType="centerCrop" app:srcCompat="@drawable/ic_round_add_circle_24" tools:ignore="ContentDescription,ImageContrastCheck" tools:tint="@color/transparent" /> diff --git a/app/src/main/res/layout/item_follower.xml b/app/src/main/res/layout/item_follower.xml index e26ac3a5..d5605368 100644 --- a/app/src/main/res/layout/item_follower.xml +++ b/app/src/main/res/layout/item_follower.xml @@ -9,7 +9,7 @@ diff --git a/app/src/main/res/layout/item_notification.xml b/app/src/main/res/layout/item_notification.xml index eedb9b5b..00903f44 100644 --- a/app/src/main/res/layout/item_notification.xml +++ b/app/src/main/res/layout/item_notification.xml @@ -1,8 +1,8 @@ + tools:ignore="ContentDescription" + tools:srcCompat="@tools:sample/backgrounds/scenic" /> @@ -37,30 +36,30 @@ android:layout_gravity="start|center_vertical" android:layout_marginStart="16dp" android:backgroundTint="@color/transparent" - app:strokeColor="@color/transparent" - app:cardCornerRadius="16dp"> + app:cardCornerRadius="16dp" + app:strokeColor="@color/transparent"> + + android:visibility="gone" + app:cardCornerRadius="64dp" + app:strokeColor="@color/transparent"> - - - + android:layout_gravity="start|center" + android:layout_marginStart="125dp" + android:orientation="vertical"> + + + + + \ No newline at end of file