Skip to content

Commit

Permalink
feat(social): text activity
Browse files Browse the repository at this point in the history
  • Loading branch information
aayush2622 committed Apr 27, 2024
1 parent 140dd2e commit 73ef5f4
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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> {
Expand Down
101 changes: 71 additions & 30 deletions app/src/main/java/ani/dantotsu/home/status/Stories.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -449,5 +483,12 @@ constructor(
}
}
}
activityLikeContainer.setOnLongClickListener {
UsersDialogFragment().apply {
userList(userList)
show(activ.supportFragmentManager, "dialog")
}
true
}
}
}
42 changes: 32 additions & 10 deletions app/src/main/res/layout/fragment_status.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
tools:ignore="ContentDescription"
tools:src="@tools:sample/backgrounds/scenic" />


<ImageView
android:id="@+id/contentImageView"
android:layout_width="match_parent"
Expand All @@ -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"
Expand All @@ -36,6 +58,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent="0.5" />


<FrameLayout
android:id="@+id/rightTouchPanel"
android:layout_width="0dp"
Expand Down Expand Up @@ -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" />

Expand Down Expand Up @@ -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">
Expand All @@ -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"
Expand All @@ -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" />
Expand All @@ -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>

Expand Down

0 comments on commit 73ef5f4

Please sign in to comment.