feat: remove 18+ media and anilist adult is off

This commit is contained in:
aayush262 2024-05-23 22:00:47 +05:30
parent d06c980a57
commit 773b7f5dd0
7 changed files with 42 additions and 57 deletions

View file

@ -1613,7 +1613,7 @@ Page(page:$page,perPage:50) {
else if (global) "isFollowing:false,hasRepliesOrTypeText:true," else if (global) "isFollowing:false,hasRepliesOrTypeText:true,"
else "isFollowing:true," else "isFollowing:true,"
return executeQuery<FeedResponse>( 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}}}}}}""", """{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}isAdult}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 force = true
) )
} }

View file

@ -19,7 +19,6 @@ import ani.dantotsu.connections.anilist.api.Query
import ani.dantotsu.databinding.ActivityFollowBinding import ani.dantotsu.databinding.ActivityFollowBinding
import ani.dantotsu.initActivity import ani.dantotsu.initActivity
import ani.dantotsu.navBarHeight import ani.dantotsu.navBarHeight
import ani.dantotsu.profile.FollowerItem
import ani.dantotsu.statusBarHeight import ani.dantotsu.statusBarHeight
import ani.dantotsu.themes.ThemeManager import ani.dantotsu.themes.ThemeManager
import ani.dantotsu.util.MarkdownCreatorActivity import ani.dantotsu.util.MarkdownCreatorActivity

View file

@ -93,26 +93,37 @@ class FollowActivity : AppCompatActivity() {
val screenWidth = resources.displayMetrics.run { widthPixels / density } val screenWidth = resources.displayMetrics.run { widthPixels / density }
binding.listRecyclerView.layoutManager = when (getLayoutType(selected)) { binding.listRecyclerView.layoutManager = when (getLayoutType(selected)) {
0 -> LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) 0 -> LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
1 -> GridLayoutManager(this, (screenWidth / 120f).toInt(), GridLayoutManager.VERTICAL, false) 1 -> GridLayoutManager(
this,
(screenWidth / 120f).toInt(),
GridLayoutManager.VERTICAL,
false
)
else -> LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) else -> LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
} }
users?.forEach { user -> users?.forEach { user ->
if (getLayoutType(selected) == 0) {
val username = SpannableString(user.name ?: "Unknown") val username = SpannableString(user.name ?: "Unknown")
if (getLayoutType(selected) == 0) {
adapter.add( adapter.add(
FollowerItem( FollowerItem(
false,
user.id, user.id,
username, username,
user.avatar?.medium, user.avatar?.medium,
user.bannerImage ?: user.avatar?.medium user.bannerImage ?: user.avatar?.medium
) { onUserClick(it) }) ) { onUserClick(it) }
)
} else { } else {
adapter.add( adapter.add(
GridFollowerItem( FollowerItem(
true,
user.id, user.id,
user.name ?: "Unknown", username,
user.avatar?.medium user.avatar?.medium,
) { onUserClick(it) }) user.bannerImage ?: user.avatar?.medium
) { onUserClick(it) }
)
} }
} }
} }

View file

@ -3,39 +3,43 @@ package ani.dantotsu.profile
import android.text.SpannableString import android.text.SpannableString
import android.view.View import android.view.View
import androidx.viewbinding.ViewBinding
import ani.dantotsu.R import ani.dantotsu.R
import ani.dantotsu.blurImage import ani.dantotsu.blurImage
import ani.dantotsu.databinding.ItemFollowerBinding import ani.dantotsu.databinding.ItemFollowerBinding
import ani.dantotsu.databinding.ItemFollowerGridBinding
import ani.dantotsu.loadImage import ani.dantotsu.loadImage
import com.xwray.groupie.viewbinding.BindableItem import com.xwray.groupie.viewbinding.BindableItem
class FollowerItem( class FollowerItem(
private val grid: Boolean,
private val id: Int, private val id: Int,
private val name: SpannableString, private val name: SpannableString,
private val avatar: String?, private val avatar: String?,
private val banner: String?, private val banner: String?,
private val altText: String? = null,
val clickCallback: (Int) -> Unit val clickCallback: (Int) -> Unit
) : BindableItem<ItemFollowerBinding>() { ) : BindableItem<ViewBinding>() {
private lateinit var binding: ItemFollowerBinding
override fun bind(viewBinding: ItemFollowerBinding, position: Int) { override fun bind(viewBinding: ViewBinding, position: Int) {
binding = viewBinding if (grid) {
val binding = viewBinding as ItemFollowerGridBinding
binding.profileUserName.text = name
avatar?.let { binding.profileUserAvatar.loadImage(it) }
binding.root.setOnClickListener { clickCallback(id) }
} else {
val binding = viewBinding as ItemFollowerBinding
binding.profileUserName.text = name binding.profileUserName.text = name
avatar?.let { binding.profileUserAvatar.loadImage(it) } avatar?.let { binding.profileUserAvatar.loadImage(it) }
altText?.let {
binding.altText.visibility = View.VISIBLE
binding.altText.text = it
}
blurImage(binding.profileBannerImage, banner ?: avatar) blurImage(binding.profileBannerImage, banner ?: avatar)
binding.root.setOnClickListener { clickCallback(id) } binding.root.setOnClickListener { clickCallback(id) }
} }
}
override fun getLayout(): Int { override fun getLayout(): Int {
return R.layout.item_follower return if(grid) R.layout.item_follower_grid else R.layout.item_follower
} }
override fun initializeViewBinding(view: View): ItemFollowerBinding { override fun initializeViewBinding(view: View): ViewBinding {
return ItemFollowerBinding.bind(view) return if(grid) ItemFollowerGridBinding.bind(view) else ItemFollowerBinding.bind(view)
} }
} }

View file

@ -1,31 +0,0 @@
package ani.dantotsu.profile
import android.view.View
import ani.dantotsu.R
import ani.dantotsu.databinding.ItemFollowerGridBinding
import ani.dantotsu.loadImage
import com.xwray.groupie.viewbinding.BindableItem
class GridFollowerItem(
private val id: Int,
private val name: String,
private val avatar: String?,
val clickCallback: (Int) -> Unit
) : BindableItem<ItemFollowerGridBinding>() {
private lateinit var binding: ItemFollowerGridBinding
override fun bind(viewBinding: ItemFollowerGridBinding, position: Int) {
binding = viewBinding
binding.profileUserName.text = name
avatar?.let { binding.profileUserAvatar.loadImage(it) }
binding.root.setOnClickListener { clickCallback(id) }
}
override fun getLayout(): Int {
return R.layout.item_follower_grid
}
override fun initializeViewBinding(view: View): ItemFollowerGridBinding {
return ItemFollowerGridBinding.bind(view)
}
}

View file

@ -85,7 +85,9 @@ class FeedFragment : Fragment() {
res?.data?.page?.activities?.let { activities -> res?.data?.page?.activities?.let { activities ->
activityList = activities activityList = activities
val filtered = val filtered =
activityList.filterNot { //filter out messages that are not directed to the user activityList
.filter { if (Anilist.adult) true else it.media?.isAdult == false }
.filterNot { //filter out messages that are not directed to the user
it.recipient?.id != null && it.recipient.id != Anilist.userid it.recipient?.id != null && it.recipient.id != Anilist.userid
} }
adapter.update(filtered.map { adapter.update(filtered.map {

View file

@ -236,7 +236,7 @@ class NotificationActivity : AppCompatActivity() {
context = it.title + ": " + it.content, context = it.title + ": " + it.content,
createdAt = (it.time / 1000L).toInt(), createdAt = (it.time / 1000L).toInt(),
image = it.image, image = it.image,
banner = it.banner banner = it.banner ?: it.image
) )
newNotifications += notification newNotifications += notification
} }