feat(social): text activity
This commit is contained in:
parent
140dd2e0c3
commit
73ef5f4bbc
3 changed files with 105 additions and 42 deletions
|
@ -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<FeedResponse>(
|
||||
"""{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<User> {
|
||||
|
|
|
@ -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<Set<Int>>(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<User>()
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,6 +14,7 @@
|
|||
tools:ignore="ContentDescription"
|
||||
tools:src="@tools:sample/backgrounds/scenic" />
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contentImageView"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -27,6 +28,27 @@
|
|||
android:src="@drawable/linear_gradient_bg"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/textActivityContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textActivity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/poppins_semi_bold"
|
||||
android:gravity="center"
|
||||
android:paddingHorizontal="12dp"
|
||||
android:text="Play"
|
||||
android:textColor="@color/bg_white"
|
||||
android:textSize="18sp"
|
||||
android:visibility="gone"
|
||||
tools:ignore="HardcodedText" />
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/leftTouchPanel"
|
||||
android:layout_width="0dp"
|
||||
|
@ -36,6 +58,7 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintWidth_percent="0.5" />
|
||||
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/rightTouchPanel"
|
||||
android:layout_width="0dp"
|
||||
|
@ -94,12 +117,12 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:ellipsize="end"
|
||||
android:textColor="@color/bg_opp"
|
||||
android:fontFamily="@font/poppins_bold"
|
||||
android:paddingTop="1dp"
|
||||
android:paddingBottom="0dp"
|
||||
android:singleLine="true"
|
||||
android:text="Username"
|
||||
android:textColor="@color/bg_opp"
|
||||
android:textSize="16sp"
|
||||
tools:ignore="HardcodedText,RtlSymmetry" />
|
||||
|
||||
|
@ -157,8 +180,9 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginVertical="32dp"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginBottom="32dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
@ -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" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/statusUserActions"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center|end"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="center"
|
||||
android:paddingHorizontal="24dp"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/activityLikeCount"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
|
||||
android:layout_gravity="center|end"
|
||||
android:fontFamily="@font/poppins_semi_bold"
|
||||
android:textSize="15sp"
|
||||
tools:text="12" />
|
||||
|
@ -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" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue