diff --git a/app/src/main/java/com/github/libretube/MainActivity.kt b/app/src/main/java/com/github/libretube/MainActivity.kt index 183fe853f..2f05022a3 100644 --- a/app/src/main/java/com/github/libretube/MainActivity.kt +++ b/app/src/main/java/com/github/libretube/MainActivity.kt @@ -10,6 +10,7 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Handler +import android.os.Looper import android.util.Log import android.util.TypedValue import android.view.View @@ -199,19 +200,12 @@ class MainActivity : AppCompatActivity() { .replace("/embed/", "") val bundle = Bundle() bundle.putString("videoId", watch) - val frag = PlayerFragment() - frag.arguments = bundle - supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() - Handler().postDelayed({ - val motionLayout = findViewById(R.id.playerMotionLayout) - motionLayout.transitionToEnd() - motionLayout.transitionToStart() - }, 100) + // for time stamped links + if (data.query?.contains("t=")!!) { + val timeStamp = data.query.toString().split("t=")[1] + bundle.putLong("timeStamp", timeStamp.toLong()) + } + loadWatch(bundle) } else if (data.path!!.contains("/watch") && data.query != null) { Log.d("dafaq", data.query!!) var watch = data.query!! @@ -226,39 +220,41 @@ class MainActivity : AppCompatActivity() { } var bundle = Bundle() bundle.putString("videoId", watch.replace("v=", "")) - var frag = PlayerFragment() - frag.arguments = bundle - supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() - Handler().postDelayed({ - val motionLayout = findViewById(R.id.playerMotionLayout) - motionLayout.transitionToEnd() - motionLayout.transitionToStart() - }, 100) + // for time stamped links + if (data.query?.contains("t=")!!) { + val timeStamp = data.query.toString().split("t=")[1] + bundle.putLong("timeStamp", timeStamp.toLong()) + } + loadWatch(bundle) } else { var watch = data.path!!.replace("/", "") var bundle = Bundle() bundle.putString("videoId", watch) - var frag = PlayerFragment() - frag.arguments = bundle - supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() - Handler().postDelayed({ - val motionLayout = findViewById(R.id.playerMotionLayout) - motionLayout.transitionToEnd() - motionLayout.transitionToStart() - }, 100) + // for time stamped links + if (data.query?.contains("t=")!!) { + val timeStamp = data.query.toString().split("t=")[1] + bundle.putLong("timeStamp", timeStamp.toLong()) + } + loadWatch(bundle) } } + private fun loadWatch(bundle: Bundle) { + var frag = PlayerFragment() + frag.arguments = bundle + supportFragmentManager.beginTransaction() + .remove(PlayerFragment()) + .commit() + supportFragmentManager.beginTransaction() + .replace(R.id.container, frag) + .commitNow() + Handler(Looper.getMainLooper()).postDelayed({ + val motionLayout = findViewById(R.id.playerMotionLayout) + motionLayout.transitionToEnd() + motionLayout.transitionToStart() + }, 100) + } + override fun onBackPressed() { try { val mainMotionLayout = findViewById(R.id.mainMotionLayout) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index 224d31801..255b2f2b4 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -435,9 +435,15 @@ class PlayerFragment : Fragment() { prepareExoPlayerView() if (response.chapters != null) initializeChapters(response.chapters) setResolutionAndSubtitles(view, response) + // support for time stamped links + if (arguments?.getLong("timeStamp") != null) { + val position = arguments?.getLong("timeStamp")!! * 1000 + exoPlayer.seekTo(position) + } exoPlayer.prepare() exoPlayer.play() initializePlayerView(view, response) + initializePlayerNotification(requireContext()) if (!relatedStreamsEnabled) toggleComments() } } @@ -843,8 +849,6 @@ class PlayerFragment : Fragment() { val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()) val playbackSpeed = sharedPreferences.getString("playback_speed", "1F")?.toFloat() exoPlayer.setPlaybackSpeed(playbackSpeed!!) - - initializePlayerNotification(requireContext()) } private fun initializePlayerNotification(c: Context) {