feat: swipe refresh activity/notifications

This commit is contained in:
rebelonion 2024-03-15 18:05:23 -05:00
parent e00bbb2d8e
commit 91bcacc978
5 changed files with 84 additions and 39 deletions

View file

@ -79,6 +79,9 @@ class FollowActivity : AppCompatActivity(){
PrefManager.setVal(PrefName.FollowerLayout, 1)
fillList()
}
binding.followSwipeRefresh.setOnRefreshListener {
binding.followSwipeRefresh.isRefreshing = false
}
}
private fun fillList() {

View file

@ -87,23 +87,20 @@ class FeedFragment : Fragment() {
) {
page++
binding.feedRefresh.visibility = ViewGroup.VISIBLE
activity.lifecycleScope.launch(Dispatchers.IO) {
val newRes = Anilist.query.getFeed(userId, global, page)
withContext(Dispatchers.Main) {
newRes?.data?.page?.activities?.let { activities ->
activityList += activities
val filtered = activities.filterNot {
it.recipient?.id != null && it.recipient.id != Anilist.userid
}
adapter.addAll(filtered.map { ActivityItem(it, ::onActivityClick,requireActivity()) })
}
binding.feedRefresh.visibility = ViewGroup.GONE
}
loadPage {
binding.feedRefresh.visibility = ViewGroup.GONE
}
}
}
false
}
binding.feedSwipeRefresh.setOnRefreshListener {
page = 1
adapter.clear()
activityList = emptyList()
loadPage()
}
}
}
loadedFirstTime = true
@ -111,6 +108,23 @@ class FeedFragment : Fragment() {
}
}
private fun loadPage(onFinish: () -> Unit = {}) {
activity.lifecycleScope.launch(Dispatchers.IO) {
val newRes = Anilist.query.getFeed(userId, global, page)
withContext(Dispatchers.Main) {
newRes?.data?.page?.activities?.let { activities ->
activityList += activities
val filtered = activities.filterNot {
it.recipient?.id != null && it.recipient.id != Anilist.userid
}
adapter.addAll(filtered.map { ActivityItem(it, ::onActivityClick,requireActivity()) })
}
binding.feedSwipeRefresh.isRefreshing = false
onFinish()
}
}
}
private fun onActivityClick(id: Int, type: String) {
when (type) {
"USER" -> {

View file

@ -88,25 +88,34 @@ class NotificationActivity : AppCompatActivity() {
) {
page++
binding.followRefresh.visibility = ViewGroup.VISIBLE
lifecycleScope.launch(Dispatchers.IO) {
val res = Anilist.query.getNotifications(Anilist.userid ?: 0, page)
withContext(Dispatchers.Main) {
res?.data?.page?.notifications?.let { notifications ->
notificationList += notifications
adapter.addAll(notifications.map {
NotificationItem(
it,
::onNotificationClick
)
})
}
binding.followRefresh.visibility = ViewGroup.GONE
}
loadPage {
binding.followRefresh.visibility = ViewGroup.GONE
}
}
}
false
}
binding.followSwipeRefresh.setOnRefreshListener {
page = 1
adapter.clear()
notificationList = emptyList()
loadPage()
}
}
}
}
private fun loadPage(onFinish: () -> Unit = {}) {
lifecycleScope.launch(Dispatchers.IO) {
val res = Anilist.query.getNotifications(Anilist.userid ?: 0, page)
withContext(Dispatchers.Main) {
res?.data?.page?.notifications?.let { notifications ->
notificationList += notifications
adapter.addAll(notifications.map { NotificationItem(it, ::onNotificationClick) })
}
binding.followSwipeRefresh.isRefreshing = false
onFinish()
}
}
}

View file

@ -98,13 +98,23 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/listRecyclerView"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/followSwipeRefresh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:nestedScrollingEnabled="true" />
android:clipChildren="false"
android:clipToPadding="false">
<ani.dantotsu.FadingEdgeRecyclerView
android:id="@+id/listRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:nestedScrollingEnabled="true"
android:requiresFadingEdge="vertical" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<ProgressBar
android:id="@+id/followRefresh"

View file

@ -16,16 +16,25 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/listRecyclerView"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/feedSwipeRefresh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:nestedScrollingEnabled="true"
android:visibility="visible"
tools:listitem="@layout/item_activity" />
android:clipChildren="false"
android:clipToPadding="false">
<ani.dantotsu.FadingEdgeRecyclerView
android:id="@+id/listRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:nestedScrollingEnabled="true"
android:requiresFadingEdge="vertical"
android:visibility="visible"
tools:listitem="@layout/item_activity" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<ProgressBar