diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt index 59b25b7d..38c72698 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -1634,14 +1634,14 @@ Page(page:$page,perPage:50) { val filter = if (activityId != null) "id:$activityId," else if (userId != null) "userId:$userId," else if (global) "isFollowing:false,hasRepliesOrTypeText:true," - else "isFollowing:true,type_not:MESSAGE," + else "isFollowing:true," return executeQuery( """{Page(page:$page,perPage:$ITEMS_PER_PAGE){activities(${filter}sort:ID_DESC){__typename ... on TextActivity{id userId type replyCount text(asHtml:true)siteUrl isLocked isSubscribed likeCount isLiked isPinned createdAt user{id name bannerImage avatar{medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}... on ListActivity{id userId type replyCount status progress siteUrl isLocked isSubscribed likeCount isLiked isPinned createdAt user{id name bannerImage avatar{medium large}}media{id title{english romaji native userPreferred}bannerImage coverImage{medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}... on MessageActivity{id recipientId messengerId type replyCount likeCount message(asHtml:true)isLocked isSubscribed isLiked isPrivate siteUrl createdAt recipient{id name bannerImage avatar{medium large}}messenger{id name bannerImage avatar{medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}}}}""", force = true ) } private fun status(page: Int = 1): String { - return """Page(page:$page,perPage:50){activities(isFollowing: true, type:MEDIA_LIST,sort:ID_DESC){__typename ... on TextActivity{id userId type replyCount text(asHtml:true)siteUrl isLocked isSubscribed likeCount isLiked isPinned createdAt user{id name bannerImage avatar{medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}... on ListActivity{id userId type replyCount status progress siteUrl isLocked isSubscribed likeCount isLiked isPinned createdAt user{id name bannerImage avatar{medium large}}media{id title{english romaji native userPreferred}bannerImage coverImage{extraLarge medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}... on MessageActivity{id recipientId messengerId type replyCount likeCount message(asHtml:true)isLocked isSubscribed isLiked isPrivate siteUrl createdAt recipient{id name bannerImage avatar{medium large}}messenger{id name bannerImage avatar{medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}}}""" + return """Page(page:$page,perPage:50){activities(isFollowing: true,sort:ID_DESC){__typename ... on TextActivity{id userId type replyCount text(asHtml:true)siteUrl isLocked isSubscribed likeCount isLiked isPinned createdAt user{id name bannerImage avatar{medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}... on ListActivity{id userId type replyCount status progress siteUrl isLocked isSubscribed likeCount isLiked isPinned createdAt user{id name bannerImage avatar{medium large}}media{id title{english romaji native userPreferred}bannerImage coverImage{extraLarge medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}... on MessageActivity{id recipientId messengerId type replyCount likeCount message(asHtml:true)isLocked isSubscribed isLiked isPrivate siteUrl createdAt recipient{id name bannerImage avatar{medium large}}messenger{id name bannerImage avatar{medium large}}replies{id userId activityId text(asHtml:true)likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}likes{id name bannerImage avatar{medium large}}}}}""" } suspend fun getStatus( ): MutableList { 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 6a93c953..e4cba460 100644 --- a/app/src/main/java/ani/dantotsu/home/status/Stories.kt +++ b/app/src/main/java/ani/dantotsu/home/status/Stories.kt @@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.FragmentActivity import ani.dantotsu.R import ani.dantotsu.blurImage +import ani.dantotsu.buildMarkwon import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.anilist.api.Activity import ani.dantotsu.home.status.listener.StoriesCallback @@ -33,6 +34,7 @@ import ani.dantotsu.profile.activity.ActivityItemBuilder import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.snackString +import ani.dantotsu.util.AniMarkdown import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob @@ -56,6 +58,8 @@ constructor( private lateinit var imageContentViewKen: ImageView private lateinit var loadingView: ProgressBar private lateinit var activityLikeCount: TextView + private lateinit var textActivity: TextView + private lateinit var textActivityContainer: LinearLayout private lateinit var activityLike: ImageView private lateinit var activityLikeContainer: LinearLayout private lateinit var userName: TextView @@ -89,6 +93,8 @@ constructor( imageContentViewKen = findViewById(R.id.contentImageViewKen) statusUserContainer = findViewById(R.id.statusUserContainer) loadingView = findViewById(R.id.androidStoriesLoadingView) + textActivityContainer = findViewById(R.id.textActivityContainer) + textActivity = findViewById(R.id.textActivity) coverImage = findViewById(R.id.coverImage) userName = findViewById(R.id.statusUserName) userAvatar = findViewById(R.id.statusUserAvatar) @@ -377,52 +383,80 @@ constructor( val set = PrefManager.getCustomVal>(key, setOf()).plus((story.id)) PrefManager.setCustomVal(key, set) - 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 time.text = ActivityItemBuilder.getDateTime(story.createdAt) - val text = "${story.status?.replaceFirstChar { - if (it.isLowerCase()) { - it.titlecase(Locale.ROOT) - } - else { - it.toString() - } - }} ${story.progress ?: story.media?.title?.userPreferred} " + - if (story.status?.contains("completed") == false) { - "of ${story.media?.title?.userPreferred}" - }else { - "" - } - infoText.text = text - statusUserContainer.setOnClickListener { ContextCompat.startActivity(context, Intent(context, ProfileActivity::class.java) .putExtra("userId", story.userId), null) } - coverImage.setOnClickListener{ - ContextCompat.startActivity(context, Intent(context, MediaDetailsActivity::class.java) - .putExtra("mediaId", story.media?.id), - null) + fun visible(isList: Boolean){ + val visible = if (isList) View.VISIBLE else View.GONE + val gone = if (isList) View.GONE else View.VISIBLE + textActivity.visibility = gone + textActivityContainer.visibility = gone + infoText.visibility = visible + coverImage.visibility = visible + infoText.visibility = if (isList) View.VISIBLE else View.INVISIBLE + imageContentViewKen.visibility = visible + imageContentView.visibility = visible } + when (story.typename){ + "ListActivity" -> { + visible(true) + val text = "${story.status?.replaceFirstChar { + if (it.isLowerCase()) { + it.titlecase(Locale.ROOT) + } + else { + it.toString() + } + }} ${story.progress ?: story.media?.title?.userPreferred} " + + if (story.status?.contains("completed") == false) { + "of ${story.media?.title?.userPreferred}" + }else { + "" + } + infoText.text = text + val bannerAnimations: Boolean = PrefManager.getVal(PrefName.BannerAnimations) + blurImage(if (bannerAnimations)imageContentViewKen else imageContentView, story.media?.bannerImage ?: story.media?.coverImage?.extraLarge) + coverImage.loadImage(story.media?.coverImage?.extraLarge) + coverImage.setOnClickListener{ + ContextCompat.startActivity(context, Intent(context, MediaDetailsActivity::class.java) + .putExtra("mediaId", story.media?.id), + null) + } + } - + "TextActivity" -> { + visible(false) + if (!(context as android.app.Activity).isDestroyed) { + val markwon = buildMarkwon(context, false) + markwon.setMarkdown( + textActivity, + AniMarkdown.getBasicAniHTML(story.text ?: "") + ) + } + } + "MessageActivity" -> { + visible(false) + if (!(context as android.app.Activity).isDestroyed) { + val markwon = buildMarkwon(context, false) + markwon.setMarkdown( + textActivity, + AniMarkdown.getBasicAniHTML(story.message ?: "") + ) + } + } + } val userList = arrayListOf() story.likes?.forEach { i -> userList.add(User(i.id, i.name.toString(), i.avatar?.medium, i.bannerImage)) } - activityLikeContainer.setOnLongClickListener { - UsersDialogFragment().apply { - userList(userList) - show(activ.supportFragmentManager, "dialog") - } - true - } + val likeColor = ContextCompat.getColor(context, R.color.yt_red) val notLikeColor = ContextCompat.getColor(context, R.color.bg_opp) @@ -449,5 +483,12 @@ constructor( } } } + activityLikeContainer.setOnLongClickListener { + UsersDialogFragment().apply { + userList(userList) + show(activ.supportFragmentManager, "dialog") + } + true + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_status.xml b/app/src/main/res/layout/fragment_status.xml index 2dda0b8b..2fdd3685 100644 --- a/app/src/main/res/layout/fragment_status.xml +++ b/app/src/main/res/layout/fragment_status.xml @@ -14,6 +14,7 @@ tools:ignore="ContentDescription" tools:src="@tools:sample/backgrounds/scenic" /> + + + + + + + @@ -157,8 +180,9 @@ @@ -168,10 +192,9 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:gravity="start" android:ellipsize="marquee" android:fontFamily="@font/poppins_semi_bold" - android:layout_marginStart="12dp" + android:gravity="start" android:lineSpacingExtra="-8sp" android:maxLines="3" android:paddingHorizontal="12dp" @@ -182,20 +205,20 @@ tools:ignore="SpUsage" tools:text="@string/slogan" /> + + @@ -204,10 +227,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="12dp" + android:layout_gravity="center|end" android:src="@drawable/ic_round_favorite_24" tools:ignore="ContentDescription" /> - -