Merge branch 'libre-tube:master' into master

This commit is contained in:
ձռօռყ_սռĸռօառ 2022-06-26 23:19:43 +05:30 committed by GitHub
commit e24213b90d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 53 additions and 55 deletions

View File

@ -8,12 +8,11 @@ import android.view.View
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.setFragmentResult
import androidx.lifecycle.lifecycleScope
import com.github.libretube.R
import com.github.libretube.fragments.Library
import com.github.libretube.obj.Playlists
import com.github.libretube.util.PreferenceHelper
import com.github.libretube.util.RetrofitInstance
@ -87,8 +86,13 @@ class CreatePlaylistDialog : DialogFragment() {
Toast.makeText(context, getString(R.string.unknown_error), Toast.LENGTH_SHORT)
.show()
}
// tell the Subscription Activity to fetch the playlists again
setFragmentResult("fetchPlaylists", bundleOf("" to ""))
// refresh the playlists in the library
try {
val parent = parentFragment as Library
parent.fetchPlaylists()
} catch (e: Exception) {
Log.e(TAG, e.toString())
}
dismiss()
}
}

View File

@ -28,6 +28,7 @@ class Library : Fragment() {
lateinit var token: String
private lateinit var playlistRecyclerView: RecyclerView
private lateinit var refreshLayout: SwipeRefreshLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
@ -52,26 +53,32 @@ class Library : Fragment() {
if (token != "") {
view.findViewById<ImageView>(R.id.boogh2).visibility = View.GONE
view.findViewById<TextView>(R.id.textLike2).visibility = View.GONE
fetchPlaylists(view)
fetchPlaylists()
refreshLayout.isEnabled = true
refreshLayout.setOnRefreshListener {
Log.d(TAG, "hmm")
fetchPlaylists(view)
fetchPlaylists()
}
view.findViewById<FloatingActionButton>(R.id.create_playlist).setOnClickListener {
val createPlaylistButton = view.findViewById<FloatingActionButton>(R.id.create_playlist)
createPlaylistButton.setOnClickListener {
val newFragment = CreatePlaylistDialog()
newFragment.show(childFragmentManager, "Create Playlist")
}
childFragmentManager.setFragmentResultListener("fetchPlaylists", this) { _, _ ->
fetchPlaylists(view)
}
} else {
refreshLayout.isEnabled = false
view.findViewById<FloatingActionButton>(R.id.create_playlist).visibility = View.GONE
}
}
private fun fetchPlaylists(view: View) {
override fun onResume() {
// optimize CreatePlaylistFab bottom margin if miniPlayer active
val createPlaylistButton = view?.findViewById<FloatingActionButton>(R.id.create_playlist)
val layoutParams = createPlaylistButton?.layoutParams as ViewGroup.MarginLayoutParams
layoutParams.bottomMargin = if (isMiniPlayerVisible) 180 else 64
createPlaylistButton?.layoutParams = layoutParams
super.onResume()
}
fun fetchPlaylists() {
fun run() {
refreshLayout.isRefreshing = true
lifecycleScope.launchWhenCreated {
@ -91,12 +98,8 @@ class Library : Fragment() {
}
if (response.isNotEmpty()) {
runOnUiThread {
with(view.findViewById<ImageView>(R.id.boogh2)) {
visibility = View.GONE
}
with(view.findViewById<TextView>(R.id.textLike2)) {
visibility = View.GONE
}
view?.findViewById<ImageView>(R.id.boogh2)?.visibility = View.GONE
view?.findViewById<TextView>(R.id.textLike2)?.visibility = View.GONE
}
val playlistsAdapter = PlaylistsAdapter(
response.toMutableList(),
@ -105,13 +108,13 @@ class Library : Fragment() {
playlistRecyclerView.adapter = playlistsAdapter
} else {
runOnUiThread {
with(view.findViewById<ImageView>(R.id.boogh2)) {
visibility = View.VISIBLE
setImageResource(R.drawable.ic_list)
view?.findViewById<ImageView>(R.id.boogh2).apply {
this?.visibility = View.VISIBLE
this?.setImageResource(R.drawable.ic_list)
}
with(view.findViewById<TextView>(R.id.textLike2)) {
visibility = View.VISIBLE
text = getString(R.string.emptyList)
view?.findViewById<TextView>(R.id.textLike2).apply {
this?.visibility = View.VISIBLE
this?.text = getString(R.string.emptyList)
}
}
}

View File

@ -2,6 +2,7 @@ package com.github.libretube.fragments
import android.annotation.SuppressLint
import android.app.NotificationManager
import android.app.PictureInPictureParams
import android.content.Context
import android.content.Intent
import android.content.pm.ActivityInfo
@ -92,6 +93,7 @@ import java.util.concurrent.Executors
import kotlin.math.abs
var isFullScreen = false
var isMiniPlayerVisible = false
class PlayerFragment : Fragment() {
@ -197,9 +199,11 @@ class PlayerFragment : Fragment() {
val mainMotionLayout =
mainActivity.findViewById<MotionLayout>(R.id.mainMotionLayout)
if (currentId == eId) {
isMiniPlayerVisible = true
exoPlayerView.useController = false
mainMotionLayout.progress = 1F
} else if (currentId == sId) {
isMiniPlayerVisible = false
exoPlayerView.useController = true
mainMotionLayout.progress = 0F
}
@ -218,6 +222,7 @@ class PlayerFragment : Fragment() {
playerMotionLayout.transitionToStart()
view.findViewById<ImageView>(R.id.close_imageView).setOnClickListener {
isMiniPlayerVisible = false
motionLayout.transitionToEnd()
val mainActivity = activity as MainActivity
mainActivity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT
@ -226,6 +231,7 @@ class PlayerFragment : Fragment() {
.commit()
}
view.findViewById<ImageButton>(R.id.close_imageButton).setOnClickListener {
isMiniPlayerVisible = false
motionLayout.transitionToEnd()
val mainActivity = activity as MainActivity
mainActivity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT
@ -434,17 +440,20 @@ class PlayerFragment : Fragment() {
createExoPlayer(view)
prepareExoPlayerView()
if (response.chapters != null) initializeChapters(response.chapters)
// set media sources for the player
setResolutionAndSubtitles(view, response)
exoPlayer.prepare()
initializePlayerView(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)
exoPlayerView.useController = true
initializePlayerNotification(requireContext())
fetchSponsorBlockSegments()
// show comments if related streams disabled
if (!relatedStreamsEnabled) toggleComments()
}
}
@ -537,6 +546,7 @@ class PlayerFragment : Fragment() {
setRepeatToggleModes(RepeatModeUtil.REPEAT_TOGGLE_MODE_ALL)
// controllerShowTimeoutMs = 1500
controllerHideOnTouch = true
useController = false
player = exoPlayer
}
}
@ -1124,7 +1134,11 @@ class PlayerFragment : Fragment() {
isFullScreen
)
) {
requireActivity().enterPictureInPictureMode()
activity?.enterPictureInPictureMode(updatePipParams())
}
}
private fun updatePipParams() = PictureInPictureParams.Builder()
.setActions(emptyList())
.build()
}

View File

@ -55,14 +55,12 @@ object PreferenceHelper {
fun clearPreferences(context: Context) {
val editor = getDefaultSharedPreferencesEditor(context)
editor.clear()
editor.commit()
editor.clear().apply()
}
fun removePreference(context: Context, value: String?) {
val editor = getDefaultSharedPreferencesEditor(context)
editor.remove(value)
editor.commit()
editor.remove(value).apply()
}
fun getToken(context: Context): String {
@ -72,7 +70,7 @@ object PreferenceHelper {
fun setToken(context: Context, newValue: String) {
val editor = context.getSharedPreferences("token", Context.MODE_PRIVATE).edit()
editor.putString("token", newValue)
editor.putString("token", newValue).apply()
}
fun getUsername(context: Context): String {
@ -82,7 +80,7 @@ object PreferenceHelper {
fun setUsername(context: Context, newValue: String) {
val editor = context.getSharedPreferences("username", Context.MODE_PRIVATE).edit()
editor.putString("username", newValue)
editor.putString("username", newValue).apply()
}
fun saveCustomInstance(context: Context, customInstance: CustomInstance) {
@ -93,7 +91,7 @@ object PreferenceHelper {
customInstancesList += customInstance
val json = gson.toJson(customInstancesList)
editor.putString("customInstances", json).commit()
editor.putString("customInstances", json).apply()
}
fun getCustomInstances(context: Context): ArrayList<CustomInstance> {

View File

@ -166,27 +166,6 @@
</LinearLayout>
<HorizontalScrollView
android:id="@id/exo_extra_controls_scroll_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:visibility="invisible">
<LinearLayout
android:id="@id/exo_extra_controls"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layoutDirection="ltr">
<ImageButton
android:id="@id/exo_overflow_hide"
style="@style/ExoStyledControls.Button.Bottom.OverflowHide" />
</LinearLayout>
</HorizontalScrollView>
<LinearLayout
android:id="@+id/progress_bar"
android:layout_gravity="bottom"