From 3e3cccbb15eec77c80c373ab12ee7108656e0499 Mon Sep 17 00:00:00 2001 From: Kavin <20838718+FireMasterK@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:34:02 +0000 Subject: [PATCH 1/5] Improve share button instance preference. --- app/src/main/java/com/github/libretube/PlayerFragment.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/PlayerFragment.kt b/app/src/main/java/com/github/libretube/PlayerFragment.kt index e196000db..8bc578ca8 100644 --- a/app/src/main/java/com/github/libretube/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/PlayerFragment.kt @@ -28,6 +28,7 @@ import androidx.core.net.toUri import androidx.core.os.bundleOf import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope +import androidx.preference.PreferenceManager import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.adapters.TrendingAdapter @@ -367,9 +368,14 @@ class PlayerFragment : Fragment() { } //share button view.findViewById(R.id.relPlayer_share).setOnClickListener { + val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()) val intent= Intent() intent.action=Intent.ACTION_SEND - intent.putExtra(Intent.EXTRA_TEXT, "https://piped.tokhmi.xyz/$videoId") + var url = "https://piped.kavin.rocks/watch?v=$videoId" + val instance = sharedPreferences.getString("instance", "https://pipedapi.kavin.rocks/")!!.dropLast(1) + if (instance != "https://pipedapi.kavin.rocks") + url += "&instance=$instance" + intent.putExtra(Intent.EXTRA_TEXT, url) intent.type="text/plain" startActivity(Intent.createChooser(intent,"Share Url To:")) } From efabce59676a4a60ee2b0c93fd5d3327a05f1e2b Mon Sep 17 00:00:00 2001 From: Relwi Date: Thu, 17 Mar 2022 18:08:23 +0100 Subject: [PATCH 2/5] 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. --- .../com/github/libretube/Subscriptions.kt | 20 +++++- .../res/layout/fragment_subscriptions.xml | 65 +++++++++++-------- 2 files changed, 56 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/github/libretube/Subscriptions.kt b/app/src/main/java/com/github/libretube/Subscriptions.kt index 9262fc45e..c01b5b85f 100644 --- a/app/src/main/java/com/github/libretube/Subscriptions.kt +++ b/app/src/main/java/com/github/libretube/Subscriptions.kt @@ -14,6 +14,7 @@ import androidx.preference.PreferenceManager import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.github.libretube.adapters.SubscriptionAdapter import com.github.libretube.adapters.SubscriptionChannelAdapter import com.github.libretube.adapters.TrendingAdapter @@ -25,6 +26,7 @@ class Subscriptions : Fragment() { lateinit var token: String var isLoaded = false private var subscriptionAdapter: SubscriptionAdapter? =null + private var refreshLayout: SwipeRefreshLayout? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.let { @@ -44,8 +46,11 @@ class Subscriptions : Fragment() { val sharedPref = context?.getSharedPreferences("token", Context.MODE_PRIVATE) token = sharedPref?.getString("token","")!! Log.e(TAG,token) + refreshLayout = view.findViewById(R.id.sub_refresh) if(token!=""){ view.findViewById(R.id.loginOrRegister).visibility=View.GONE + refreshLayout?.isEnabled = true + var progressBar = view.findViewById(R.id.sub_progress) progressBar.visibility=View.VISIBLE @@ -57,6 +62,11 @@ class Subscriptions : Fragment() { feedRecView.layoutManager = GridLayoutManager(view.context, resources.getInteger(R.integer.grid_items)) fetchFeed(feedRecView, progressBar) + refreshLayout?.setOnRefreshListener { + fetchChannels(channelRecView) + fetchFeed(feedRecView, progressBar) + } + val scrollView = view.findViewById(R.id.scrollview_sub) scrollView.viewTreeObserver .addOnScrollChangedListener { @@ -64,11 +74,15 @@ class Subscriptions : Fragment() { == (scrollView.height + scrollView.scrollY)) { //scroll view is at bottom if(isLoaded){ + refreshLayout?.isRefreshing = true subscriptionAdapter?.updateItems() + refreshLayout?.isRefreshing = false } } } + } else { + refreshLayout?.isEnabled = false } } @@ -84,6 +98,8 @@ class Subscriptions : Fragment() { } catch (e: HttpException) { Log.e(TAG, "HttpException, unexpected response") return@launchWhenCreated + } finally { + refreshLayout?.isRefreshing = false } if (response.isNotEmpty()){ subscriptionAdapter = SubscriptionAdapter(response) @@ -109,6 +125,8 @@ class Subscriptions : Fragment() { } catch (e: HttpException) { Log.e(TAG, "HttpException, unexpected response") return@launchWhenCreated + } finally { + refreshLayout?.isRefreshing = false } if (response.isNotEmpty()){ channelRecView?.adapter=SubscriptionChannelAdapter(response.toMutableList()) @@ -131,4 +149,4 @@ class Subscriptions : Fragment() { super.onDestroy() } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/fragment_subscriptions.xml b/app/src/main/res/layout/fragment_subscriptions.xml index 401303438..a27f4ddb0 100644 --- a/app/src/main/res/layout/fragment_subscriptions.xml +++ b/app/src/main/res/layout/fragment_subscriptions.xml @@ -4,22 +4,21 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Subscriptions"> + + android:layout_centerVertical="true" + android:visibility="gone" /> + android:layout_centerVertical="true"> - - - + + + android:orientation="vertical"> - - - + android:descendantFocusability="blocksDescendants"> - + + + - - - - \ No newline at end of file + android:layout_height="wrap_content" + android:descendantFocusability="blocksDescendants"> + + + + + + + From a562083a6ff59b57e7fc62a405625f2aed1e930e Mon Sep 17 00:00:00 2001 From: rimthekid Date: Thu, 17 Mar 2022 22:42:36 -0700 Subject: [PATCH 3/5] fix for #81 --- .../com/github/libretube/PlayerFragment.kt | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/github/libretube/PlayerFragment.kt b/app/src/main/java/com/github/libretube/PlayerFragment.kt index e196000db..e839a9572 100644 --- a/app/src/main/java/com/github/libretube/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/PlayerFragment.kt @@ -250,10 +250,7 @@ class PlayerFragment : Fragment() { .setMimeType(response.subtitles!![0].mimeType!!) // The correct MIME type (required). .setLanguage(response.subtitles!![0].code) // The subtitle language (optional). .build())} - val mediaItem: MediaItem = MediaItem.Builder() - .setUri(response.hls) - .setSubtitleConfigurations(subtitle) - .build() + exoPlayer = ExoPlayer.Builder(view.context) .setSeekBackIncrementMs(5000) .setSeekForwardIncrementMs(5000) @@ -264,7 +261,31 @@ class PlayerFragment : Fragment() { //exoPlayerView.controllerShowTimeoutMs = 1500 exoPlayerView.controllerHideOnTouch = true exoPlayerView.player = exoPlayer - exoPlayer.setMediaItem(mediaItem) + if (response.hls != null) { + val mediaItem: MediaItem = MediaItem.Builder() + .setUri(response.hls) + .setSubtitleConfigurations(subtitle) + .build() + exoPlayer.setMediaItem(mediaItem) + }else{ + val dataSourceFactory: DataSource.Factory = + DefaultHttpDataSource.Factory() + val videoItem: MediaItem = MediaItem.Builder() + .setUri(response.videoStreams[0].url) + .setSubtitleConfigurations(subtitle) + .build() + val videoSource: MediaSource = DefaultMediaSourceFactory(dataSourceFactory) + .createMediaSource(videoItem) + var audioSource: MediaSource = DefaultMediaSourceFactory(dataSourceFactory) + .createMediaSource(fromUri(response.audioStreams!![0].url!!)) + if (response.videoStreams[0].quality=="720p" || response.videoStreams[0].quality=="1080p" || response.videoStreams[0].quality=="480p" ){ + audioSource = ProgressiveMediaSource.Factory(dataSourceFactory) + .createMediaSource(fromUri(response.audioStreams!![getMostBitRate(response.audioStreams)].url!!)) + } + val mergeSource: MediaSource = MergingMediaSource(videoSource,audioSource) + exoPlayer.setMediaSource(mergeSource) + } + ///exoPlayer.getMediaItemAt(5) exoPlayer.prepare() exoPlayer.play() From 6081b0c939dd1ef473e2ab5811e4e81bd3250d31 Mon Sep 17 00:00:00 2001 From: rimthekid Date: Thu, 17 Mar 2022 23:28:52 -0700 Subject: [PATCH 4/5] remove implementation --- app/build.gradle | 1 - app/src/main/java/com/github/libretube/Settings.kt | 6 ------ 2 files changed, 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6f7ba390d..c339424ac 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,6 @@ dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-jackson:2.9.0' implementation 'com.fasterxml.jackson.core:jackson-annotations:2.13.2' - implementation 'com.squareup.retrofit2:converter-scalars:2.1.0' implementation 'com.arthenica:ffmpeg-kit-min:4.5.1.LTS' } \ No newline at end of file diff --git a/app/src/main/java/com/github/libretube/Settings.kt b/app/src/main/java/com/github/libretube/Settings.kt index ef2fd913a..37b5b7206 100644 --- a/app/src/main/java/com/github/libretube/Settings.kt +++ b/app/src/main/java/com/github/libretube/Settings.kt @@ -4,19 +4,13 @@ import android.content.Context import android.os.Bundle import android.text.TextUtils import android.util.Log -import android.view.View import android.widget.Toast import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat -import androidx.preference.PreferenceManager -import com.github.libretube.adapters.TrendingAdapter import retrofit2.HttpException -import retrofit2.Retrofit -import retrofit2.converter.jackson.JacksonConverterFactory -import retrofit2.converter.scalars.ScalarsConverterFactory import java.io.IOException class Settings : PreferenceFragmentCompat() { From a3ce2e913cf06af86653bc398ab80880d92c62f6 Mon Sep 17 00:00:00 2001 From: Kavin <20838718+FireMasterK@users.noreply.github.com> Date: Fri, 18 Mar 2022 08:31:49 +0000 Subject: [PATCH 5/5] Fix share button. --- app/src/main/java/com/github/libretube/PlayerFragment.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/libretube/PlayerFragment.kt b/app/src/main/java/com/github/libretube/PlayerFragment.kt index 5209bc7b5..63547cca2 100644 --- a/app/src/main/java/com/github/libretube/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/PlayerFragment.kt @@ -50,6 +50,7 @@ import com.google.android.material.button.MaterialButton import com.squareup.picasso.Picasso import retrofit2.HttpException import java.io.IOException +import java.net.URLEncoder import kotlin.math.abs @@ -393,9 +394,9 @@ class PlayerFragment : Fragment() { val intent= Intent() intent.action=Intent.ACTION_SEND var url = "https://piped.kavin.rocks/watch?v=$videoId" - val instance = sharedPreferences.getString("instance", "https://pipedapi.kavin.rocks/")!!.dropLast(1) + val instance = sharedPreferences.getString("instance", "https://pipedapi.kavin.rocks")!! if (instance != "https://pipedapi.kavin.rocks") - url += "&instance=$instance" + url += "&instance=${URLEncoder.encode(instance, "UTF-8")}" intent.putExtra(Intent.EXTRA_TEXT, url) intent.type="text/plain" startActivity(Intent.createChooser(intent,"Share Url To:"))