From cbe7b4a87d8aeec37b44a8ba88dddd6841b340be Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 19 Jul 2022 21:31:56 +0200 Subject: [PATCH] cleanup --- .../libretube/adapters/ChannelAdapter.kt | 17 +----- .../libretube/adapters/CommentsAdapter.kt | 18 +----- .../libretube/adapters/PlaylistAdapter.kt | 18 +----- .../libretube/adapters/PlaylistsAdapter.kt | 8 +-- .../libretube/adapters/RepliesAdapter.kt | 19 +------ .../libretube/adapters/SearchAdapter.kt | 31 ++--------- .../libretube/adapters/SubscriptionAdapter.kt | 33 +---------- .../adapters/SubscriptionChannelAdapter.kt | 7 +-- .../libretube/adapters/TrendingAdapter.kt | 33 +---------- .../libretube/adapters/WatchHistoryAdapter.kt | 34 +----------- .../github/libretube/util/NavigationHelper.kt | 55 +++++++++++++++++++ 11 files changed, 81 insertions(+), 192 deletions(-) create mode 100644 app/src/main/java/com/github/libretube/util/NavigationHelper.kt diff --git a/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt index 8dd9d6ac7..43918a359 100644 --- a/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt @@ -1,18 +1,15 @@ package com.github.libretube.adapters -import android.os.Bundle import android.text.format.DateUtils import android.view.LayoutInflater import android.view.ViewGroup -import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.R import com.github.libretube.databinding.VideoChannelRowBinding import com.github.libretube.dialogs.VideoOptionsDialog -import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.StreamItem import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.formatShort class ChannelAdapter( @@ -47,17 +44,7 @@ class ChannelAdapter( DateUtils.formatElapsedTime(trending.duration!!) ConnectionHelper.loadImage(trending.thumbnail, channelThumbnail) root.setOnClickListener { - var bundle = Bundle() - bundle.putString("videoId", trending.url!!.replace("/watch?v=", "")) - var frag = PlayerFragment() - frag.arguments = bundle - val activity = root.context as AppCompatActivity - activity.supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - activity.supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() + NavigationHelper.navigateVideo(root.context, trending.url) } root.setOnLongClickListener { val videoId = trending.url!!.replace("/watch?v=", "") diff --git a/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt b/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt index e8f1a0e7b..688f33514 100644 --- a/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/CommentsAdapter.kt @@ -5,16 +5,14 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast -import androidx.constraintlayout.motion.widget.MotionLayout -import androidx.core.os.bundleOf import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R -import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.CommentsRowBinding import com.github.libretube.obj.Comment import com.github.libretube.obj.CommentsPage import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort import kotlinx.coroutines.CoroutineScope @@ -66,19 +64,7 @@ class CommentsAdapter( heartedImageView.visibility = View.VISIBLE } commentorImage.setOnClickListener { - val activity = root.context as MainActivity - val bundle = bundleOf("channel_id" to comment.commentorUrl) - activity.navController.navigate(R.id.channelFragment, bundle) - try { - val mainMotionLayout = - activity.findViewById(R.id.mainMotionLayout) - if (mainMotionLayout.progress == 0.toFloat()) { - mainMotionLayout.transitionToEnd() - activity.findViewById(R.id.playerMotionLayout) - .transitionToEnd() - } - } catch (e: Exception) { - } + NavigationHelper.navigateChannel(root.context, comment.commentorUrl) } repliesRecView.layoutManager = LinearLayoutManager(root.context) val repliesAdapter = RepliesAdapter(CommentsPage().comments) diff --git a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt index 3a60d69e7..e28b6267c 100644 --- a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt @@ -1,23 +1,20 @@ package com.github.libretube.adapters import android.app.Activity -import android.os.Bundle import android.text.format.DateUtils import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.R import com.github.libretube.databinding.PlaylistRowBinding import com.github.libretube.dialogs.VideoOptionsDialog -import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.PlaylistId import com.github.libretube.obj.StreamItem import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.RetrofitInstance import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -57,18 +54,7 @@ class PlaylistAdapter( playlistDuration.text = DateUtils.formatElapsedTime(streamItem.duration!!) ConnectionHelper.loadImage(streamItem.thumbnail, playlistThumbnail) root.setOnClickListener { - var bundle = Bundle() - bundle.putString("videoId", streamItem.url!!.replace("/watch?v=", "")) - bundle.putString("playlistId", playlistId) - var frag = PlayerFragment() - frag.arguments = bundle - val activity = root.context as AppCompatActivity - activity.supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - activity.supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() + NavigationHelper.navigateVideo(root.context, streamItem.url, playlistId) } root.setOnLongClickListener { val videoId = streamItem.url!!.replace("/watch?v=", "") diff --git a/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt b/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt index 045e36d1b..e405f51e9 100644 --- a/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/PlaylistsAdapter.kt @@ -4,15 +4,14 @@ import android.app.Activity import android.util.Log import android.view.LayoutInflater import android.view.ViewGroup -import androidx.core.os.bundleOf import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R -import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.PlaylistsRowBinding import com.github.libretube.obj.PlaylistId import com.github.libretube.obj.Playlists import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.RetrofitInstance import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.CoroutineScope @@ -65,10 +64,7 @@ class PlaylistsAdapter( builder.show() } root.setOnClickListener { - // playlists clicked - val activity = root.context as MainActivity - val bundle = bundleOf("playlist_id" to playlist.id) - activity.navController.navigate(R.id.playlistFragment, bundle) + NavigationHelper.navigatePlaylist(root.context, playlist.id) } } } diff --git a/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt b/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt index db0136540..b76fc5b87 100644 --- a/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/RepliesAdapter.kt @@ -3,14 +3,11 @@ package com.github.libretube.adapters import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.constraintlayout.motion.widget.MotionLayout -import androidx.core.os.bundleOf import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.R -import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.RepliesRowBinding import com.github.libretube.obj.Comment import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.formatShort class RepliesAdapter( @@ -57,19 +54,7 @@ class RepliesAdapter( heartedImageView.visibility = View.VISIBLE } commentorImage.setOnClickListener { - val activity = root.context as MainActivity - val bundle = bundleOf("channel_id" to reply.commentorUrl) - activity.navController.navigate(R.id.channelFragment, bundle) - try { - val mainMotionLayout = - activity.findViewById(R.id.mainMotionLayout) - if (mainMotionLayout.progress == 0.toFloat()) { - mainMotionLayout.transitionToEnd() - activity.findViewById(R.id.playerMotionLayout) - .transitionToEnd() - } - } catch (e: Exception) { - } + NavigationHelper.navigateVideo(root.context, reply.commentorUrl) } } } diff --git a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt index 5ffa165f5..f973d06ff 100644 --- a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt @@ -1,26 +1,22 @@ package com.github.libretube.adapters -import android.os.Bundle import android.text.format.DateUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.appcompat.app.AppCompatActivity -import androidx.core.os.bundleOf import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R -import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.ChannelSearchRowBinding import com.github.libretube.databinding.PlaylistSearchRowBinding import com.github.libretube.databinding.VideoSearchRowBinding import com.github.libretube.dialogs.PlaylistOptionsDialog import com.github.libretube.dialogs.VideoOptionsDialog -import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.SearchItem import com.github.libretube.obj.Subscribe import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort import kotlinx.coroutines.CoroutineScope @@ -103,17 +99,7 @@ class SearchAdapter( } searchChannelName.text = item.uploaderName root.setOnClickListener { - val bundle = Bundle() - bundle.putString("videoId", item.url!!.replace("/watch?v=", "")) - val frag = PlayerFragment() - frag.arguments = bundle - val activity = root.context as AppCompatActivity - activity.supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - activity.supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() + NavigationHelper.navigateVideo(root.context, item.url) } root.setOnLongClickListener { val videoId = item.url!!.replace("/watch?v=", "") @@ -122,9 +108,7 @@ class SearchAdapter( true } searchChannelImage.setOnClickListener { - val activity = root.context as MainActivity - val bundle = bundleOf("channel_id" to item.uploaderUrl) - activity.navController.navigate(R.id.channelFragment, bundle) + NavigationHelper.navigateChannel(root.context, item.uploaderUrl) } } } @@ -138,9 +122,7 @@ class SearchAdapter( item.subscribers.formatShort() ) + " • " + root.context.getString(R.string.videoCount, item.videos.toString()) root.setOnClickListener { - val activity = root.context as MainActivity - val bundle = bundleOf("channel_id" to item.url) - activity.navController.navigate(R.id.channelFragment, bundle) + NavigationHelper.navigateChannel(root.context, item.url) } val channelId = item.url?.replace("/channel/", "")!! val token = PreferenceHelper.getToken() @@ -228,10 +210,7 @@ class SearchAdapter( root.context.getString(R.string.videoCount, item.videos.toString()) } root.setOnClickListener { - // playlist clicked - val activity = root.context as MainActivity - val bundle = bundleOf("playlist_id" to item.url) - activity.navController.navigate(R.id.playlistFragment, bundle) + NavigationHelper.navigatePlaylist(root.context, item.url) } root.setOnLongClickListener { val playlistId = item.url!!.replace("/playlist?list=", "") diff --git a/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt index 0319190bd..1f36f925a 100644 --- a/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SubscriptionAdapter.kt @@ -1,21 +1,16 @@ package com.github.libretube.adapters -import android.os.Bundle import android.text.format.DateUtils import android.view.LayoutInflater import android.view.ViewGroup -import androidx.appcompat.app.AppCompatActivity -import androidx.constraintlayout.motion.widget.MotionLayout -import androidx.core.os.bundleOf import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R -import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.TrendingRowBinding import com.github.libretube.dialogs.VideoOptionsDialog -import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.StreamItem import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.formatShort class SubscriptionAdapter( @@ -58,34 +53,12 @@ class SubscriptionAdapter( thumbnailDuration.setBackgroundColor(R.attr.colorPrimaryDark) } channelImage.setOnClickListener { - val activity = root.context as MainActivity - val bundle = bundleOf("channel_id" to trending.uploaderUrl) - activity.navController.navigate(R.id.channelFragment, bundle) - try { - val mainMotionLayout = - activity.findViewById(R.id.mainMotionLayout) - if (mainMotionLayout.progress == 0.toFloat()) { - mainMotionLayout.transitionToEnd() - activity.findViewById(R.id.playerMotionLayout) - .transitionToEnd() - } - } catch (e: Exception) { - } + NavigationHelper.navigateChannel(root.context, trending.uploaderUrl) } ConnectionHelper.loadImage(trending.thumbnail, thumbnail) ConnectionHelper.loadImage(trending.uploaderAvatar, channelImage) root.setOnClickListener { - val bundle = Bundle() - bundle.putString("videoId", trending.url!!.replace("/watch?v=", "")) - val frag = PlayerFragment() - frag.arguments = bundle - val activity = root.context as AppCompatActivity - activity.supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - activity.supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() + NavigationHelper.navigateVideo(root.context, trending.url) } root.setOnLongClickListener { val videoId = trending.url!!.replace("/watch?v=", "") diff --git a/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt index c9df3d96e..3e61d8550 100644 --- a/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt @@ -4,15 +4,14 @@ import android.content.Context import android.util.Log import android.view.LayoutInflater import android.view.ViewGroup -import androidx.core.os.bundleOf import androidx.recyclerview.widget.RecyclerView import com.github.libretube.R -import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.ChannelSubscriptionRowBinding import com.github.libretube.obj.Subscribe import com.github.libretube.obj.Subscription import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.RetrofitInstance import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -42,9 +41,7 @@ class SubscriptionChannelAdapter(private val subscriptions: MutableList(R.id.mainMotionLayout) - if (mainMotionLayout.progress == 0.toFloat()) { - mainMotionLayout.transitionToEnd() - activity.findViewById(R.id.playerMotionLayout) - .transitionToEnd() - } - } catch (e: Exception) { - } + NavigationHelper.navigateChannel(root.context, trending.uploaderUrl) } ConnectionHelper.loadImage(trending.thumbnail, thumbnail) ConnectionHelper.loadImage(trending.uploaderAvatar, channelImage) root.setOnClickListener { - var bundle = Bundle() - bundle.putString("videoId", trending.url!!.replace("/watch?v=", "")) - var frag = PlayerFragment() - frag.arguments = bundle - val activity = root.context as AppCompatActivity - activity.supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - activity.supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() + NavigationHelper.navigateChannel(root.context, trending.url) } root.setOnLongClickListener { val videoId = trending.url!!.replace("/watch?v=", "") diff --git a/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt b/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt index 310416287..ec4e3d4a0 100644 --- a/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt @@ -1,21 +1,15 @@ package com.github.libretube.adapters -import android.os.Bundle import android.text.format.DateUtils import android.view.LayoutInflater import android.view.ViewGroup -import androidx.appcompat.app.AppCompatActivity -import androidx.constraintlayout.motion.widget.MotionLayout -import androidx.core.os.bundleOf import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView -import com.github.libretube.R -import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.WatchHistoryRowBinding import com.github.libretube.dialogs.VideoOptionsDialog -import com.github.libretube.fragments.PlayerFragment import com.github.libretube.obj.WatchHistoryItem import com.github.libretube.util.ConnectionHelper +import com.github.libretube.util.NavigationHelper class WatchHistoryAdapter( private val watchHistory: MutableList, @@ -47,33 +41,11 @@ class WatchHistoryAdapter( ConnectionHelper.loadImage(video.uploaderAvatar, channelImage) channelImage.setOnClickListener { - val activity = root.context as MainActivity - val bundle = bundleOf("channel_id" to video.uploaderUrl) - activity.navController.navigate(R.id.channelFragment, bundle) - try { - val mainMotionLayout = - activity.findViewById(R.id.mainMotionLayout) - if (mainMotionLayout.progress == 0.toFloat()) { - mainMotionLayout.transitionToEnd() - activity.findViewById(R.id.playerMotionLayout) - .transitionToEnd() - } - } catch (e: Exception) { - } + NavigationHelper.navigateChannel(root.context, video.uploaderUrl) } root.setOnClickListener { - var bundle = Bundle() - bundle.putString("videoId", video.videoId) - var frag = PlayerFragment() - frag.arguments = bundle - val activity = root.context as AppCompatActivity - activity.supportFragmentManager.beginTransaction() - .remove(PlayerFragment()) - .commit() - activity.supportFragmentManager.beginTransaction() - .replace(R.id.container, frag) - .commitNow() + NavigationHelper.navigateVideo(root.context, video.videoId) } root.setOnLongClickListener { VideoOptionsDialog(video.videoId!!, root.context) diff --git a/app/src/main/java/com/github/libretube/util/NavigationHelper.kt b/app/src/main/java/com/github/libretube/util/NavigationHelper.kt new file mode 100644 index 000000000..41c4315f5 --- /dev/null +++ b/app/src/main/java/com/github/libretube/util/NavigationHelper.kt @@ -0,0 +1,55 @@ +package com.github.libretube.util + +import android.content.Context +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.constraintlayout.motion.widget.MotionLayout +import androidx.core.os.bundleOf +import com.github.libretube.R +import com.github.libretube.activities.MainActivity +import com.github.libretube.fragments.PlayerFragment + +object NavigationHelper { + fun navigateChannel(context: Context, channelId: String?) { + if (channelId != null) { + val activity = context as MainActivity + val bundle = bundleOf("channel_id" to channelId) + activity.navController.navigate(R.id.channelFragment, bundle) + try { + val mainMotionLayout = + activity.findViewById(R.id.mainMotionLayout) + if (mainMotionLayout.progress == 0.toFloat()) { + mainMotionLayout.transitionToEnd() + activity.findViewById(R.id.playerMotionLayout) + .transitionToEnd() + } + } catch (e: Exception) { + } + } + } + + fun navigateVideo(context: Context, videoId: String?, playlistId: String? = null) { + if (videoId != null) { + val bundle = Bundle() + bundle.putString("videoId", videoId.replace("/watch?v=", "")) + if (playlistId != null) bundle.putString("playlistId", playlistId) + val frag = PlayerFragment() + frag.arguments = bundle + val activity = context as AppCompatActivity + activity.supportFragmentManager.beginTransaction() + .remove(PlayerFragment()) + .commit() + activity.supportFragmentManager.beginTransaction() + .replace(R.id.container, frag) + .commitNow() + } + } + + fun navigatePlaylist(context: Context, playlistId: String?) { + if (playlistId != null) { + val activity = context as MainActivity + val bundle = bundleOf("playlist_id" to playlistId) + activity.navController.navigate(R.id.playlistFragment, bundle) + } + } +}