From 0f1743c35a71f0d33bfa3ecfa9c590599874bdfe Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 29 Jul 2022 09:00:13 +0200 Subject: [PATCH 1/2] cleanup --- .../com/github/libretube/adapters/ChannelAdapter.kt | 3 ++- .../github/libretube/adapters/PlaylistAdapter.kt | 3 ++- .../com/github/libretube/adapters/SearchAdapter.kt | 7 ++++--- .../adapters/SubscriptionChannelAdapter.kt | 3 ++- .../github/libretube/adapters/TrendingAdapter.kt | 3 ++- .../github/libretube/fragments/ChannelFragment.kt | 3 ++- .../github/libretube/fragments/PlayerFragment.kt | 13 +++++++------ .../github/libretube/fragments/PlaylistFragment.kt | 3 ++- .../libretube/fragments/SubscriptionsFragment.kt | 3 ++- .../libretube/preferences/PreferenceHelper.kt | 3 ++- .../com/github/libretube/services/BackgroundMode.kt | 4 ++-- .../com/github/libretube/util/NavigationHelper.kt | 2 +- .../com/github/libretube/util/NotificationHelper.kt | 6 +++--- app/src/main/java/com/github/libretube/util/ToID.kt | 12 ++++++++++++ 14 files changed, 45 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/com/github/libretube/util/ToID.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 a6620c9c8..34a235037 100644 --- a/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt @@ -12,6 +12,7 @@ import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.NavigationHelper import com.github.libretube.util.formatShort import com.github.libretube.util.setWatchProgressLength +import com.github.libretube.util.toID class ChannelAdapter( private val videoFeed: MutableList, @@ -47,7 +48,7 @@ class ChannelAdapter( root.setOnClickListener { NavigationHelper.navigateVideo(root.context, trending.url) } - val videoId = trending.url!!.replace("/watch?v=", "") + val videoId = trending.url.toID() root.setOnLongClickListener { VideoOptionsDialog(videoId, root.context) .show(childFragmentManager, "VideoOptionsDialog") 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 97c9a77a1..a0a8eded0 100644 --- a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt @@ -17,6 +17,7 @@ import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.NavigationHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.setWatchProgressLength +import com.github.libretube.util.toID import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -57,7 +58,7 @@ class PlaylistAdapter( root.setOnClickListener { NavigationHelper.navigateVideo(root.context, streamItem.url, playlistId) } - val videoId = streamItem.url!!.replace("/watch?v=", "") + val videoId = streamItem.url.toID() root.setOnLongClickListener { VideoOptionsDialog(videoId, root.context) .show(childFragmentManager, "VideoOptionsDialog") 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 d88934757..3a76bbb68 100644 --- a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt @@ -20,6 +20,7 @@ import com.github.libretube.util.NavigationHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort import com.github.libretube.util.setWatchProgressLength +import com.github.libretube.util.toID import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -102,7 +103,7 @@ class SearchAdapter( root.setOnClickListener { NavigationHelper.navigateVideo(root.context, item.url) } - val videoId = item.url!!.replace("/watch?v=", "") + val videoId = item.url.toID() root.setOnLongClickListener { VideoOptionsDialog(videoId, root.context) .show(childFragmentManager, "VideoOptionsDialog") @@ -126,7 +127,7 @@ class SearchAdapter( root.setOnClickListener { NavigationHelper.navigateChannel(root.context, item.url) } - val channelId = item.url?.replace("/channel/", "")!! + val channelId = item.url.toID() val token = PreferenceHelper.getToken() // only show subscribe button if logged in @@ -215,7 +216,7 @@ class SearchAdapter( NavigationHelper.navigatePlaylist(root.context, item.url) } root.setOnLongClickListener { - val playlistId = item.url!!.replace("/playlist?list=", "") + val playlistId = item.url!!.toID() PlaylistOptionsDialog(playlistId, false, root.context) .show(childFragmentManager, "PlaylistOptionsDialog") true 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 a09cb0f96..7e33c0c35 100644 --- a/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/adapters/SubscriptionChannelAdapter.kt @@ -12,6 +12,7 @@ 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.toID import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -42,7 +43,7 @@ class SubscriptionChannelAdapter(private val subscriptions: MutableList, @@ -64,7 +65,7 @@ class TrendingAdapter( root.setOnClickListener { NavigationHelper.navigateVideo(root.context, trending.url) } - val videoId = trending.url!!.replace("/watch?v=", "") + val videoId = trending.url!!.toID() root.setOnLongClickListener { VideoOptionsDialog(videoId, root.context) .show(childFragmentManager, "VideoOptionsDialog") diff --git a/app/src/main/java/com/github/libretube/fragments/ChannelFragment.kt b/app/src/main/java/com/github/libretube/fragments/ChannelFragment.kt index 2cd117f18..89f741ecd 100644 --- a/app/src/main/java/com/github/libretube/fragments/ChannelFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/ChannelFragment.kt @@ -17,6 +17,7 @@ import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.ConnectionHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort +import com.github.libretube.util.toID import retrofit2.HttpException import java.io.IOException @@ -35,7 +36,7 @@ class ChannelFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.let { - channelId = it.getString("channel_id")?.replace("/channel/", "") + channelId = it.getString("channel_id").toID() channelName = it.getString("channel_name") ?.replace("/c/", "") ?.replace("/user/", "") 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 02a3a7e18..b49abf04a 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -65,6 +65,7 @@ import com.github.libretube.util.PlayerHelper import com.github.libretube.util.RetrofitInstance import com.github.libretube.util.formatShort import com.github.libretube.util.hideKeyboard +import com.github.libretube.util.toID import com.google.android.exoplayer2.C import com.google.android.exoplayer2.DefaultLoadControl import com.google.android.exoplayer2.ExoPlayer @@ -343,7 +344,7 @@ class PlayerFragment : Fragment() { } private fun initializeTransitionLayout() { - videoId = videoId!!.replace("/watch?v=", "") + videoId = videoId.toID() val mainActivity = activity as MainActivity mainActivity.binding.container.visibility = View.VISIBLE @@ -751,7 +752,7 @@ class PlayerFragment : Fragment() { title = response.title!! uploader = response.uploader!! thumbnailUrl = response.thumbnailUrl!! - channelId = response.uploaderUrl?.replace("/channel/", "") + channelId = response.uploaderUrl.toID() // save related streams for autoplay relatedStreams = response.relatedStreams @@ -809,7 +810,7 @@ class PlayerFragment : Fragment() { playlist = RetrofitInstance.api.getPlaylist(playlistId!!) // save the playlist urls in the array playlist.relatedStreams?.forEach { video -> - playlistStreamIds += video.url?.replace("/watch?v=", "")!! + playlistStreamIds += video.url?.toID() } // save playlistNextPage for usage if video is not contained playlistNextPage = playlist.nextpage @@ -830,7 +831,7 @@ class PlayerFragment : Fragment() { RetrofitInstance.api.getPlaylistNextPage(playlistId!!, playlistNextPage!!) // append all the playlist item urls to the array playlist.relatedStreams?.forEach { video -> - playlistStreamIds += video.url?.replace("/watch?v=", "")!! + playlistStreamIds += video.url.toID() } // save playlistNextPage for usage if video is not contained playlistNextPage = playlist.nextpage @@ -843,7 +844,7 @@ class PlayerFragment : Fragment() { // if it's not a playlist then use the next related video } else if (relatedStreams != null && relatedStreams!!.isNotEmpty()) { // save next video from related streams for autoplay - nextStreamId = relatedStreams!![0].url!!.replace("/watch?v=", "") + nextStreamId = relatedStreams!![0].url.toID() } } } @@ -1090,7 +1091,7 @@ class PlayerFragment : Fragment() { binding.playerMotionLayout.transitionToEnd() } if (token != "") { - val channelId = response.uploaderUrl?.replace("/channel/", "") + val channelId = response.uploaderUrl?.toID() isSubscribed() binding.relPlayerSave.setOnClickListener { val newFragment = AddtoPlaylistDialog() diff --git a/app/src/main/java/com/github/libretube/fragments/PlaylistFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlaylistFragment.kt index 51048b240..1ea1cf89e 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlaylistFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlaylistFragment.kt @@ -14,6 +14,7 @@ import com.github.libretube.databinding.FragmentPlaylistBinding import com.github.libretube.dialogs.PlaylistOptionsDialog import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.RetrofitInstance +import com.github.libretube.util.toID import retrofit2.HttpException import java.io.IOException @@ -46,7 +47,7 @@ class PlaylistFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - playlistId = playlistId!!.replace("/playlist?list=", "") + playlistId = playlistId!!.toID() binding.playlistRecView.layoutManager = LinearLayoutManager(context) binding.playlistProgress.visibility = View.VISIBLE diff --git a/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt b/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt index 467703d1c..feffc8524 100644 --- a/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/SubscriptionsFragment.kt @@ -20,6 +20,7 @@ import com.github.libretube.databinding.FragmentSubscriptionsBinding import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.preferences.PreferenceKeys import com.github.libretube.util.RetrofitInstance +import com.github.libretube.util.toID import retrofit2.HttpException import java.io.IOException @@ -159,7 +160,7 @@ class SubscriptionsFragment : Fragment() { } if (response.isNotEmpty()) { // save the last recent video to the prefs for the notification worker - PreferenceHelper.setLatestVideoId(response[0].url.toString().replace("/watch?v=", "")) + PreferenceHelper.setLatestVideoId(response[0].url.toID()) channelRecView.adapter = SubscriptionChannelAdapter(response.toMutableList()) } else { Toast.makeText(context, R.string.subscribeIsEmpty, Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt b/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt index ecd3025e1..d5e4c508c 100644 --- a/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt +++ b/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt @@ -8,6 +8,7 @@ import com.github.libretube.obj.CustomInstance import com.github.libretube.obj.Streams import com.github.libretube.obj.WatchHistoryItem import com.github.libretube.obj.WatchPosition +import com.github.libretube.util.toID object PreferenceHelper { private val TAG = "PreferenceHelper" @@ -129,7 +130,7 @@ object PreferenceHelper { streams.title, streams.uploadDate, streams.uploader, - streams.uploaderUrl?.replace("/channel/", ""), + streams.uploaderUrl.toID(), streams.uploaderAvatar, streams.thumbnailUrl, streams.duration diff --git a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt index f3412725a..4f1b8c024 100644 --- a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt +++ b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt @@ -15,6 +15,7 @@ import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.preferences.PreferenceKeys import com.github.libretube.util.DescriptionAdapter import com.github.libretube.util.RetrofitInstance +import com.github.libretube.util.toID import com.google.android.exoplayer2.C import com.google.android.exoplayer2.ExoPlayer import com.google.android.exoplayer2.MediaItem @@ -166,8 +167,7 @@ class BackgroundMode : Service() { private fun playNextVideo() { if (response!!.relatedStreams!!.isNotEmpty()) { val videoId = response!! - .relatedStreams!![0].url!! - .replace("/watch?v=", "") + .relatedStreams!![0].url.toID() // destroy previous notification and player destroyPlayer() diff --git a/app/src/main/java/com/github/libretube/util/NavigationHelper.kt b/app/src/main/java/com/github/libretube/util/NavigationHelper.kt index 41c4315f5..ad03e9820 100644 --- a/app/src/main/java/com/github/libretube/util/NavigationHelper.kt +++ b/app/src/main/java/com/github/libretube/util/NavigationHelper.kt @@ -31,7 +31,7 @@ object NavigationHelper { fun navigateVideo(context: Context, videoId: String?, playlistId: String? = null) { if (videoId != null) { val bundle = Bundle() - bundle.putString("videoId", videoId.replace("/watch?v=", "")) + bundle.putString("videoId", videoId.toID()) if (playlistId != null) bundle.putString("playlistId", playlistId) val frag = PlayerFragment() frag.arguments = bundle diff --git a/app/src/main/java/com/github/libretube/util/NotificationHelper.kt b/app/src/main/java/com/github/libretube/util/NotificationHelper.kt index 0d196af74..727cbda56 100644 --- a/app/src/main/java/com/github/libretube/util/NotificationHelper.kt +++ b/app/src/main/java/com/github/libretube/util/NotificationHelper.kt @@ -83,7 +83,7 @@ object NotificationHelper { } val lastSeenStreamId = PreferenceHelper.getLatestVideoId() - val latestFeedStreamId = videoFeed[0].url?.replace("/watch?v=", "") + val latestFeedStreamId = videoFeed[0].url.toID() // first time notifications enabled if (lastSeenStreamId == "") PreferenceHelper.setLatestVideoId(lastSeenStreamId) @@ -91,7 +91,7 @@ object NotificationHelper { // get the index of the last user-seen video var newStreamIndex = -1 videoFeed.forEachIndexed { index, stream -> - if (stream.url?.replace("/watch?v=", "") == lastSeenStreamId) { + if (stream.url?.toID() == lastSeenStreamId) { newStreamIndex = index } } @@ -117,7 +117,7 @@ object NotificationHelper { } } // save the id of the last recent video for the next time it's running - PreferenceHelper.setLatestVideoId(videoFeed[0].url?.replace("/watch?v=", "")!!) + PreferenceHelper.setLatestVideoId(videoFeed[0].url.toID()) createNotification(context, title!!, description!!) } } diff --git a/app/src/main/java/com/github/libretube/util/ToID.kt b/app/src/main/java/com/github/libretube/util/ToID.kt new file mode 100644 index 000000000..43ff8420d --- /dev/null +++ b/app/src/main/java/com/github/libretube/util/ToID.kt @@ -0,0 +1,12 @@ +package com.github.libretube.util + +/** + * format a Piped route to an ID + */ +fun Any?.toID(): String { + return this!! + .toString() + .replace("/watch?v=", "") // videos + .replace("/channel/", "") // channels + .replace("/playlist?list=", "") // playlists +} From 838b9bed645d20cddf7c6b6c002053c5cc842faa Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 29 Jul 2022 09:04:00 +0200 Subject: [PATCH 2/2] fixes --- .../github/libretube/{util => extensions}/FormatShort.kt | 0 .../github/libretube/{util => extensions}/HideKeyboard.kt | 0 .../{util => extensions}/SetWatchProgressLength.kt | 0 .../java/com/github/libretube/{util => extensions}/ToID.kt | 0 .../java/com/github/libretube/fragments/PlayerFragment.kt | 2 +- .../com/github/libretube/preferences/PreferenceHelper.kt | 6 ++---- 6 files changed, 3 insertions(+), 5 deletions(-) rename app/src/main/java/com/github/libretube/{util => extensions}/FormatShort.kt (100%) rename app/src/main/java/com/github/libretube/{util => extensions}/HideKeyboard.kt (100%) rename app/src/main/java/com/github/libretube/{util => extensions}/SetWatchProgressLength.kt (100%) rename app/src/main/java/com/github/libretube/{util => extensions}/ToID.kt (100%) diff --git a/app/src/main/java/com/github/libretube/util/FormatShort.kt b/app/src/main/java/com/github/libretube/extensions/FormatShort.kt similarity index 100% rename from app/src/main/java/com/github/libretube/util/FormatShort.kt rename to app/src/main/java/com/github/libretube/extensions/FormatShort.kt diff --git a/app/src/main/java/com/github/libretube/util/HideKeyboard.kt b/app/src/main/java/com/github/libretube/extensions/HideKeyboard.kt similarity index 100% rename from app/src/main/java/com/github/libretube/util/HideKeyboard.kt rename to app/src/main/java/com/github/libretube/extensions/HideKeyboard.kt diff --git a/app/src/main/java/com/github/libretube/util/SetWatchProgressLength.kt b/app/src/main/java/com/github/libretube/extensions/SetWatchProgressLength.kt similarity index 100% rename from app/src/main/java/com/github/libretube/util/SetWatchProgressLength.kt rename to app/src/main/java/com/github/libretube/extensions/SetWatchProgressLength.kt diff --git a/app/src/main/java/com/github/libretube/util/ToID.kt b/app/src/main/java/com/github/libretube/extensions/ToID.kt similarity index 100% rename from app/src/main/java/com/github/libretube/util/ToID.kt rename to app/src/main/java/com/github/libretube/extensions/ToID.kt 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 b49abf04a..b6bc85fe2 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -810,7 +810,7 @@ class PlayerFragment : Fragment() { playlist = RetrofitInstance.api.getPlaylist(playlistId!!) // save the playlist urls in the array playlist.relatedStreams?.forEach { video -> - playlistStreamIds += video.url?.toID() + playlistStreamIds += video.url.toID() } // save playlistNextPage for usage if video is not contained playlistNextPage = playlist.nextpage diff --git a/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt b/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt index d5e4c508c..346ff1204 100644 --- a/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt +++ b/app/src/main/java/com/github/libretube/preferences/PreferenceHelper.kt @@ -16,7 +16,7 @@ object PreferenceHelper { private lateinit var prefContext: Context private lateinit var settings: SharedPreferences private lateinit var editor: SharedPreferences.Editor - val mapper = ObjectMapper() + private val mapper = ObjectMapper() /** * set the context that is being used to access the shared preferences @@ -136,7 +136,6 @@ object PreferenceHelper { streams.duration ) - val mapper = ObjectMapper() val watchHistory = getWatchHistory() watchHistory += watchHistoryItem @@ -146,7 +145,6 @@ object PreferenceHelper { } fun removeFromWatchHistory(videoId: String) { - val mapper = ObjectMapper() val watchHistory = getWatchHistory() var indexToRemove: Int? = null @@ -220,7 +218,7 @@ object PreferenceHelper { } fun setLatestVideoId(videoId: String) { - setString(PreferenceKeys.LAST_STREAM_VIDEO_ID, videoId) + editor.putString(PreferenceKeys.LAST_STREAM_VIDEO_ID, videoId) } fun getLatestVideoId(): String {