feat: remove 18+ media and anilist adult is off
This commit is contained in:
parent
d06c980a57
commit
773b7f5dd0
7 changed files with 42 additions and 57 deletions
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 ->
|
||||||
|
val username = SpannableString(user.name ?: "Unknown")
|
||||||
if (getLayoutType(selected) == 0) {
|
if (getLayoutType(selected) == 0) {
|
||||||
val username = SpannableString(user.name ?: "Unknown")
|
|
||||||
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) }
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
binding.profileUserName.text = name
|
val binding = viewBinding as ItemFollowerGridBinding
|
||||||
avatar?.let { binding.profileUserAvatar.loadImage(it) }
|
binding.profileUserName.text = name
|
||||||
altText?.let {
|
avatar?.let { binding.profileUserAvatar.loadImage(it) }
|
||||||
binding.altText.visibility = View.VISIBLE
|
binding.root.setOnClickListener { clickCallback(id) }
|
||||||
binding.altText.text = it
|
} else {
|
||||||
|
val binding = viewBinding as ItemFollowerBinding
|
||||||
|
binding.profileUserName.text = name
|
||||||
|
avatar?.let { binding.profileUserAvatar.loadImage(it) }
|
||||||
|
blurImage(binding.profileBannerImage, banner ?: avatar)
|
||||||
|
binding.root.setOnClickListener { clickCallback(id) }
|
||||||
}
|
}
|
||||||
blurImage(binding.profileBannerImage, banner ?: avatar)
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue