mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 16:00:31 +05:30
Add pull down to refresh in subscriptions tab
Added the SwipeRefreshLayout in the fragment_subscriptions.xml to refresh the content when user pulls down. I keep the when user click in the tab it refresh the feed, because I don't know which UX do you prefer.
This commit is contained in:
parent
4933c13681
commit
efabce5967
@ -14,6 +14,7 @@ import androidx.preference.PreferenceManager
|
|||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
import com.github.libretube.adapters.SubscriptionAdapter
|
import com.github.libretube.adapters.SubscriptionAdapter
|
||||||
import com.github.libretube.adapters.SubscriptionChannelAdapter
|
import com.github.libretube.adapters.SubscriptionChannelAdapter
|
||||||
import com.github.libretube.adapters.TrendingAdapter
|
import com.github.libretube.adapters.TrendingAdapter
|
||||||
@ -25,6 +26,7 @@ class Subscriptions : Fragment() {
|
|||||||
lateinit var token: String
|
lateinit var token: String
|
||||||
var isLoaded = false
|
var isLoaded = false
|
||||||
private var subscriptionAdapter: SubscriptionAdapter? =null
|
private var subscriptionAdapter: SubscriptionAdapter? =null
|
||||||
|
private var refreshLayout: SwipeRefreshLayout? = null
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
arguments?.let {
|
arguments?.let {
|
||||||
@ -44,8 +46,11 @@ class Subscriptions : Fragment() {
|
|||||||
val sharedPref = context?.getSharedPreferences("token", Context.MODE_PRIVATE)
|
val sharedPref = context?.getSharedPreferences("token", Context.MODE_PRIVATE)
|
||||||
token = sharedPref?.getString("token","")!!
|
token = sharedPref?.getString("token","")!!
|
||||||
Log.e(TAG,token)
|
Log.e(TAG,token)
|
||||||
|
refreshLayout = view.findViewById(R.id.sub_refresh)
|
||||||
if(token!=""){
|
if(token!=""){
|
||||||
view.findViewById<RelativeLayout>(R.id.loginOrRegister).visibility=View.GONE
|
view.findViewById<RelativeLayout>(R.id.loginOrRegister).visibility=View.GONE
|
||||||
|
refreshLayout?.isEnabled = true
|
||||||
|
|
||||||
var progressBar = view.findViewById<ProgressBar>(R.id.sub_progress)
|
var progressBar = view.findViewById<ProgressBar>(R.id.sub_progress)
|
||||||
progressBar.visibility=View.VISIBLE
|
progressBar.visibility=View.VISIBLE
|
||||||
|
|
||||||
@ -57,6 +62,11 @@ class Subscriptions : Fragment() {
|
|||||||
feedRecView.layoutManager = GridLayoutManager(view.context, resources.getInteger(R.integer.grid_items))
|
feedRecView.layoutManager = GridLayoutManager(view.context, resources.getInteger(R.integer.grid_items))
|
||||||
fetchFeed(feedRecView, progressBar)
|
fetchFeed(feedRecView, progressBar)
|
||||||
|
|
||||||
|
refreshLayout?.setOnRefreshListener {
|
||||||
|
fetchChannels(channelRecView)
|
||||||
|
fetchFeed(feedRecView, progressBar)
|
||||||
|
}
|
||||||
|
|
||||||
val scrollView = view.findViewById<ScrollView>(R.id.scrollview_sub)
|
val scrollView = view.findViewById<ScrollView>(R.id.scrollview_sub)
|
||||||
scrollView.viewTreeObserver
|
scrollView.viewTreeObserver
|
||||||
.addOnScrollChangedListener {
|
.addOnScrollChangedListener {
|
||||||
@ -64,11 +74,15 @@ class Subscriptions : Fragment() {
|
|||||||
== (scrollView.height + scrollView.scrollY)) {
|
== (scrollView.height + scrollView.scrollY)) {
|
||||||
//scroll view is at bottom
|
//scroll view is at bottom
|
||||||
if(isLoaded){
|
if(isLoaded){
|
||||||
|
refreshLayout?.isRefreshing = true
|
||||||
subscriptionAdapter?.updateItems()
|
subscriptionAdapter?.updateItems()
|
||||||
|
refreshLayout?.isRefreshing = false
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
refreshLayout?.isEnabled = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,6 +98,8 @@ class Subscriptions : Fragment() {
|
|||||||
} catch (e: HttpException) {
|
} catch (e: HttpException) {
|
||||||
Log.e(TAG, "HttpException, unexpected response")
|
Log.e(TAG, "HttpException, unexpected response")
|
||||||
return@launchWhenCreated
|
return@launchWhenCreated
|
||||||
|
} finally {
|
||||||
|
refreshLayout?.isRefreshing = false
|
||||||
}
|
}
|
||||||
if (response.isNotEmpty()){
|
if (response.isNotEmpty()){
|
||||||
subscriptionAdapter = SubscriptionAdapter(response)
|
subscriptionAdapter = SubscriptionAdapter(response)
|
||||||
@ -109,6 +125,8 @@ class Subscriptions : Fragment() {
|
|||||||
} catch (e: HttpException) {
|
} catch (e: HttpException) {
|
||||||
Log.e(TAG, "HttpException, unexpected response")
|
Log.e(TAG, "HttpException, unexpected response")
|
||||||
return@launchWhenCreated
|
return@launchWhenCreated
|
||||||
|
} finally {
|
||||||
|
refreshLayout?.isRefreshing = false
|
||||||
}
|
}
|
||||||
if (response.isNotEmpty()){
|
if (response.isNotEmpty()){
|
||||||
channelRecView?.adapter=SubscriptionChannelAdapter(response.toMutableList())
|
channelRecView?.adapter=SubscriptionChannelAdapter(response.toMutableList())
|
||||||
|
@ -4,22 +4,21 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".Subscriptions">
|
tools:context=".Subscriptions">
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/sub_progress"
|
android:id="@+id/sub_progress"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:visibility="gone"
|
android:layout_centerVertical="true"
|
||||||
/>
|
android:visibility="gone" />
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/loginOrRegister"
|
android:id="@+id/loginOrRegister"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
>
|
android:layout_centerVertical="true">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/boogh"
|
android:id="@+id/boogh"
|
||||||
@ -40,14 +39,22 @@
|
|||||||
android:textSize="20sp"
|
android:textSize="20sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
|
android:id="@+id/sub_refresh"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<ScrollView
|
<ScrollView
|
||||||
android:id="@+id/scrollview_sub"
|
android:id="@+id/scrollview_sub"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -59,6 +66,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:nestedScrollingEnabled="false" />
|
android:nestedScrollingEnabled="false" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -72,4 +80,5 @@
|
|||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
Loading…
x
Reference in New Issue
Block a user