diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/api/Feed.kt b/app/src/main/java/ani/dantotsu/connections/anilist/api/Feed.kt index 51802883..7e7c786d 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/api/Feed.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/api/Feed.kt @@ -15,17 +15,6 @@ data class FeedResponse( ) : java.io.Serializable } @Serializable -data class Social( - @SerialName("data") - val data: Data -) : java.io.Serializable { - @Serializable - data class Data( - @SerialName("Page1") val page1: ActivityPage, - @SerialName("Page2") val page2: ActivityPage - ) : java.io.Serializable -} -@Serializable data class ActivityPage( @SerialName("activities") val activities: List @@ -94,9 +83,9 @@ data class ActivityReply( @SerialName("text") val text: String, @SerialName("likeCount") - val likeCount: Int, + var likeCount: Int, @SerialName("isLiked") - val isLiked: Boolean, + var isLiked: Boolean, @SerialName("createdAt") val createdAt: Int, @SerialName("user") diff --git a/app/src/main/java/ani/dantotsu/home/status/Stories.kt b/app/src/main/java/ani/dantotsu/home/status/Stories.kt index 0adf50c7..0b166da9 100644 --- a/app/src/main/java/ani/dantotsu/home/status/Stories.kt +++ b/app/src/main/java/ani/dantotsu/home/status/Stories.kt @@ -445,17 +445,14 @@ class Stories @JvmOverloads constructor( story.likes?.forEach { i -> userList.add(User(i.id, i.name.toString(), i.avatar?.medium, i.bannerImage)) } - - val likeColor = ContextCompat.getColor(context, R.color.yt_red) val notLikeColor = ContextCompat.getColor(context, R.color.bg_opp) binding.activityLikeCount.text = story.likeCount.toString() binding.activityLike.setColorFilter(if (story.isLiked == true) likeColor else notLikeColor) - binding.statusUserActions.setOnClickListener { + binding.activityLikeContainer.setOnClickListener { like() } - - binding.statusUserActions.setOnLongClickListener { + binding.activityLikeContainer.setOnLongClickListener { val context = activity UsersDialogFragment().apply { userList(userList) diff --git a/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt b/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt index 30d99b50..56ec2eb3 100644 --- a/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt @@ -88,9 +88,10 @@ class FollowActivity : AppCompatActivity() { private fun fillList() { adapter.clear() + val screenWidth = resources.displayMetrics.run { widthPixels / density } binding.listRecyclerView.layoutManager = when (getLayoutType(selected)) { 0 -> LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) - 1 -> GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false) + 1 -> GridLayoutManager(this, (screenWidth / 120f).toInt(), GridLayoutManager.VERTICAL, false) else -> LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) } users?.forEach { user -> 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 983fdca8..0dc80c03 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt @@ -57,7 +57,7 @@ class ActivityItem( when (binding.activityReplies.visibility) { View.GONE -> { val replyItems = activity.replies?.map { - ActivityReplyItem(it) { id, type -> + ActivityReplyItem(it,fragActivity) { id, type -> clickCallback( id, type @@ -77,8 +77,19 @@ class ActivityItem( } } } + val userList = arrayListOf() + activity.likes?.forEach { i -> + userList.add(User(i.id, i.name.toString(), i.avatar?.medium, i.bannerImage)) + } + binding.activityLikeContainer.setOnLongClickListener { + UsersDialogFragment().apply { + userList(userList) + show(fragActivity.supportFragmentManager, "dialog") + } + true + } binding.activityLikeCount.text = (activity.likeCount ?: 0).toString() - binding.activityLike.setOnClickListener { + binding.activityLikeContainer.setOnClickListener { val scope = CoroutineScope(Dispatchers.IO + SupervisorJob()) scope.launch { val res = Anilist.query.toggleLike(activity.id, "ACTIVITY") @@ -101,19 +112,6 @@ class ActivityItem( } } val context = binding.root.context - val userList = arrayListOf() - activity.likes?.forEach { i -> - userList.add(User(i.id, i.name.toString(), i.avatar?.medium, i.bannerImage)) - } - binding.activityLike.setOnLongClickListener { - UsersDialogFragment().apply { - userList(userList) - show(fragActivity.supportFragmentManager, "dialog") - } - true - } - - when (activity.typename) { "ListActivity" -> { val cover = activity.media?.coverImage?.large diff --git a/app/src/main/java/ani/dantotsu/profile/activity/ActivityReplyItem.kt b/app/src/main/java/ani/dantotsu/profile/activity/ActivityReplyItem.kt index b5b7aa89..21befe05 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/ActivityReplyItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/ActivityReplyItem.kt @@ -2,17 +2,28 @@ package ani.dantotsu.profile.activity import android.view.View import androidx.core.content.ContextCompat +import androidx.fragment.app.FragmentActivity import ani.dantotsu.R import ani.dantotsu.buildMarkwon +import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.anilist.api.ActivityReply import ani.dantotsu.databinding.ItemActivityReplyBinding import ani.dantotsu.loadImage +import ani.dantotsu.profile.User +import ani.dantotsu.profile.UsersDialogFragment +import ani.dantotsu.snackString import ani.dantotsu.util.AniMarkdown.Companion.getBasicAniHTML import com.xwray.groupie.viewbinding.BindableItem +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class ActivityReplyItem( private val reply: ActivityReply, - private val clickCallback: (Int, type: String) -> Unit + private val fragActivity: FragmentActivity, + private val clickCallback: (Int, type: String) -> Unit, ) : BindableItem() { private lateinit var binding: ItemActivityReplyBinding @@ -28,6 +39,39 @@ class ActivityReplyItem( binding.activityLike.setColorFilter(if (reply.isLiked) likeColor else notLikeColor) val markwon = buildMarkwon(binding.root.context) markwon.setMarkdown(binding.activityContent, getBasicAniHTML(reply.text)) + val userList = arrayListOf() + reply.likes?.forEach { i -> + userList.add(User(i.id, i.name.toString(), i.avatar?.medium, i.bannerImage)) + } + binding.activityLikeContainer.setOnLongClickListener { + UsersDialogFragment().apply { + userList(userList) + show(fragActivity.supportFragmentManager, "dialog") + } + true + } + binding.activityLikeContainer.setOnClickListener { + val scope = CoroutineScope(Dispatchers.IO + SupervisorJob()) + scope.launch { + val res = Anilist.query.toggleLike(reply.id, "ACTIVITY_REPLY") + withContext(Dispatchers.Main) { + if (res != null) { + if (reply.isLiked) { + reply.likeCount = reply.likeCount.minus(1) + } else { + reply.likeCount = reply.likeCount.plus(1) + } + binding.activityLikeCount.text = (reply.likeCount).toString() + reply.isLiked = !reply.isLiked + binding.activityLike.setColorFilter(if (reply.isLiked) likeColor else notLikeColor) + + } else { + snackString("Failed to like activity") + } + } + } + } + binding.activityAvatarContainer.setOnClickListener { clickCallback(reply.userId, "USER") } diff --git a/app/src/main/res/layout/fragment_status.xml b/app/src/main/res/layout/fragment_status.xml index 492bdbdb..de59e3b0 100644 --- a/app/src/main/res/layout/fragment_status.xml +++ b/app/src/main/res/layout/fragment_status.xml @@ -206,7 +206,7 @@ + android:orientation="horizontal"> + + + - @@ -93,21 +103,18 @@ android:id="@+id/activityContent" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="18dp" - android:layout_marginTop="3dp" - android:layout_marginEnd="18dp" + android:layout_marginStart="64dp" android:background="?android:colorBackground" android:fontFamily="@font/poppins_semi_bold" android:text="@string/lorem_ipsum" - android:textAlignment="center" - android:textSize="12sp" - tools:visibility="gone" /> + android:textSize="12sp" /> + android:layout_marginTop="8dp" + android:visibility="gone"> + android:orientation="horizontal"> + + + - + android:layout_marginEnd="12dp" + android:orientation="vertical" + tools:ignore="UseCompoundDrawables"> - + android:textSize="12sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_comments.xml b/app/src/main/res/layout/item_comments.xml index 21d51b9e..e5e2d786 100644 --- a/app/src/main/res/layout/item_comments.xml +++ b/app/src/main/res/layout/item_comments.xml @@ -86,7 +86,7 @@