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) PrefManager.setVal(PrefName.FollowerLayout, 1)
fillList() fillList()
} }
binding.followSwipeRefresh.setOnRefreshListener {
binding.followSwipeRefresh.isRefreshing = false
}
} }
private fun fillList() { private fun fillList() {

View file

@ -87,6 +87,28 @@ class FeedFragment : Fragment() {
) { ) {
page++ page++
binding.feedRefresh.visibility = ViewGroup.VISIBLE binding.feedRefresh.visibility = ViewGroup.VISIBLE
loadPage {
binding.feedRefresh.visibility = ViewGroup.GONE
}
}
}
false
}
binding.feedSwipeRefresh.setOnRefreshListener {
page = 1
adapter.clear()
activityList = emptyList()
loadPage()
}
}
}
loadedFirstTime = true
}
}
}
private fun loadPage(onFinish: () -> Unit = {}) {
activity.lifecycleScope.launch(Dispatchers.IO) { activity.lifecycleScope.launch(Dispatchers.IO) {
val newRes = Anilist.query.getFeed(userId, global, page) val newRes = Anilist.query.getFeed(userId, global, page)
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
@ -97,16 +119,8 @@ class FeedFragment : Fragment() {
} }
adapter.addAll(filtered.map { ActivityItem(it, ::onActivityClick,requireActivity()) }) adapter.addAll(filtered.map { ActivityItem(it, ::onActivityClick,requireActivity()) })
} }
binding.feedRefresh.visibility = ViewGroup.GONE binding.feedSwipeRefresh.isRefreshing = false
} onFinish()
}
}
}
false
}
}
}
loadedFirstTime = true
} }
} }
} }

View file

@ -88,25 +88,34 @@ class NotificationActivity : AppCompatActivity() {
) { ) {
page++ page++
binding.followRefresh.visibility = ViewGroup.VISIBLE binding.followRefresh.visibility = ViewGroup.VISIBLE
lifecycleScope.launch(Dispatchers.IO) { loadPage {
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 binding.followRefresh.visibility = ViewGroup.GONE
} }
} }
} }
}
false 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_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/followSwipeRefresh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false">
<ani.dantotsu.FadingEdgeRecyclerView
android:id="@+id/listRecyclerView" android:id="@+id/listRecyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:nestedScrollingEnabled="true" /> android:nestedScrollingEnabled="true"
android:requiresFadingEdge="vertical" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<ProgressBar <ProgressBar
android:id="@+id/followRefresh" android:id="@+id/followRefresh"

View file

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