From 20cdb8274e41841667e1e38a7eaf0f0343e7c500 Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Fri, 28 Oct 2022 19:43:38 +0530 Subject: [PATCH 1/9] passed an additional parameter to the constructor --- .../java/com/github/libretube/ui/adapters/ChannelAdapter.kt | 3 ++- .../java/com/github/libretube/ui/adapters/PlaylistAdapter.kt | 3 ++- .../java/com/github/libretube/ui/adapters/TrendingAdapter.kt | 3 ++- .../com/github/libretube/ui/adapters/WatchHistoryAdapter.kt | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/adapters/ChannelAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/ChannelAdapter.kt index d0467ad4b..9216445e2 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/ChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/ChannelAdapter.kt @@ -66,8 +66,9 @@ class ChannelAdapter( } val videoId = video.url!!.toID() + val videoName = video.title!! root.setOnLongClickListener { - VideoOptionsBottomSheet(videoId) + VideoOptionsBottomSheet(videoId, videoName) .show(childFragmentManager, VideoOptionsBottomSheet::class.java.name) true } diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt index 0839cf3d9..f6d5a05db 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt @@ -59,8 +59,9 @@ class PlaylistAdapter( NavigationHelper.navigateVideo(root.context, streamItem.url, playlistId) } val videoId = streamItem.url!!.toID() + val videoName = streamItem.title!! root.setOnLongClickListener { - VideoOptionsBottomSheet(videoId) + VideoOptionsBottomSheet(videoId, videoName) .show(childFragmentManager, VideoOptionsBottomSheet::class.java.name) true } diff --git a/app/src/main/java/com/github/libretube/ui/adapters/TrendingAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/TrendingAdapter.kt index c9137b104..f06ba83f1 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/TrendingAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/TrendingAdapter.kt @@ -68,8 +68,9 @@ class TrendingAdapter( NavigationHelper.navigateVideo(root.context, trending.url) } val videoId = trending.url!!.toID() + val videoName = trending.title!! root.setOnLongClickListener { - VideoOptionsBottomSheet(videoId) + VideoOptionsBottomSheet(videoId, videoName) .show(childFragmentManager, VideoOptionsBottomSheet::class.java.name) true } diff --git a/app/src/main/java/com/github/libretube/ui/adapters/WatchHistoryAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/WatchHistoryAdapter.kt index d6287289b..440d6a1fa 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/WatchHistoryAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/WatchHistoryAdapter.kt @@ -55,7 +55,7 @@ class WatchHistoryAdapter( NavigationHelper.navigateVideo(root.context, video.videoId) } root.setOnLongClickListener { - VideoOptionsBottomSheet(video.videoId) + VideoOptionsBottomSheet(video.videoId, video.title!!) .show(childFragmentManager, VideoOptionsBottomSheet::class.java.name) true } From 34e0f8673ecc05631ea7938514b0246e9f44b119 Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Fri, 28 Oct 2022 19:45:31 +0530 Subject: [PATCH 2/9] passed an additional parameter to the constructor --- .../com/github/libretube/ui/adapters/PlaylistsAdapter.kt | 3 ++- .../java/com/github/libretube/ui/adapters/SearchAdapter.kt | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt index 65aeb5a95..84af7d286 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt @@ -73,7 +73,8 @@ class PlaylistsAdapter( root.setOnLongClickListener { val playlistOptionsDialog = PlaylistOptionsBottomSheet( playlistId = playlist.id!!, - isOwner = true + playlistName = playlist.name!!, + isOwner = true, ) playlistOptionsDialog.show( childFragmentManager, diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt index fcc71b98e..becd21500 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt @@ -100,8 +100,9 @@ class SearchAdapter( NavigationHelper.navigateVideo(root.context, item.url) } val videoId = item.url!!.toID() + val videoName = item.title!! root.setOnLongClickListener { - VideoOptionsBottomSheet(videoId) + VideoOptionsBottomSheet(videoId, videoName) .show(childFragmentManager, VideoOptionsBottomSheet::class.java.name) true } @@ -181,7 +182,8 @@ class SearchAdapter( } root.setOnLongClickListener { val playlistId = item.url!!.toID() - PlaylistOptionsBottomSheet(playlistId, false) + val playlistName = item.name!! + PlaylistOptionsBottomSheet(playlistId, playlistName, false) .show(childFragmentManager, PlaylistOptionsBottomSheet::class.java.name) true } From 3b69e1d50178c2803d3b2a97cbe5033dd8443f5f Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Fri, 28 Oct 2022 19:53:47 +0530 Subject: [PATCH 3/9] Passed the respective Video/Channel/Playlist name to ShareDialog --- .../com/github/libretube/ui/fragments/ChannelFragment.kt | 7 ++++--- .../com/github/libretube/ui/fragments/PlayerFragment.kt | 6 +++++- .../com/github/libretube/ui/fragments/PlaylistFragment.kt | 4 +++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt index 4f9584f2e..657f036da 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt @@ -17,6 +17,7 @@ import com.github.libretube.databinding.FragmentChannelBinding import com.github.libretube.extensions.TAG import com.github.libretube.extensions.formatShort import com.github.libretube.extensions.toID +import com.github.libretube.obj.ShareData import com.github.libretube.ui.adapters.ChannelAdapter import com.github.libretube.ui.base.BaseFragment import com.github.libretube.ui.dialogs.ShareDialog @@ -29,7 +30,7 @@ class ChannelFragment : BaseFragment() { private var channelId: String? = null private var channelName: String? = null - + private lateinit var shareData: ShareData private var nextPage: String? = null private var channelAdapter: ChannelAdapter? = null private var isLoading = true @@ -102,7 +103,7 @@ class ChannelFragment : BaseFragment() { } // needed if the channel gets loaded by the ID channelId = response.id - + shareData = ShareData(currentChannel = response.name) // fetch and update the subscription status isSubscribed = SubscriptionHelper.isSubscribed(channelId!!) if (isSubscribed == null) return@launchWhenCreated @@ -125,7 +126,7 @@ class ChannelFragment : BaseFragment() { } binding.channelShare.setOnClickListener { - val shareDialog = ShareDialog(response.id!!.toID(), ShareObjectType.CHANNEL) + val shareDialog = ShareDialog(response.id!!.toID(), ShareObjectType.CHANNEL, shareData) shareDialog.show(childFragmentManager, ShareDialog::class.java.name) } } diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index c7ea66253..6c27a975d 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -55,6 +55,7 @@ import com.github.libretube.extensions.toID import com.github.libretube.extensions.toStreamItem import com.github.libretube.models.PlayerViewModel import com.github.libretube.models.interfaces.PlayerOptionsInterface +import com.github.libretube.obj.ShareData import com.github.libretube.services.BackgroundMode import com.github.libretube.services.DownloadService import com.github.libretube.ui.activities.MainActivity @@ -159,6 +160,8 @@ class PlayerFragment : BaseFragment() { */ private lateinit var nowPlayingNotification: NowPlayingNotification + private lateinit var shareData: ShareData + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.let { @@ -428,7 +431,7 @@ class PlayerFragment : BaseFragment() { // share button binding.relPlayerShare.setOnClickListener { val shareDialog = - ShareDialog(videoId!!, ShareObjectType.VIDEO, exoPlayer.currentPosition / 1000) + ShareDialog(videoId!!, ShareObjectType.VIDEO, shareData, exoPlayer.currentPosition / 1000) shareDialog.show(childFragmentManager, ShareDialog::class.java.name) } @@ -824,6 +827,7 @@ class PlayerFragment : BaseFragment() { titleTextView.text = response.title playerTitle.text = response.title + shareData = ShareData(currentVideo = response.title) playerDescription.text = response.description playerChannelSubCount.text = context?.getString( diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt index 931d71d9e..e2bdb0c0f 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt @@ -25,6 +25,7 @@ class PlaylistFragment : BaseFragment() { private lateinit var binding: FragmentPlaylistBinding private var playlistId: String? = null + private var playlistName: String? = null private var isOwner: Boolean = false private var nextPage: String? = null private var playlistAdapter: PlaylistAdapter? = null @@ -75,6 +76,7 @@ class PlaylistFragment : BaseFragment() { return@launchWhenCreated } nextPage = response.nextpage + playlistName = response.name isLoading = false runOnUiThread { binding.playlistProgress.visibility = View.GONE @@ -86,7 +88,7 @@ class PlaylistFragment : BaseFragment() { // show playlist options binding.optionsMenu.setOnClickListener { val optionsDialog = - PlaylistOptionsBottomSheet(playlistId!!, isOwner) + PlaylistOptionsBottomSheet(playlistId!!, playlistName!!, isOwner) optionsDialog.show( childFragmentManager, PlaylistOptionsBottomSheet::class.java.name From c95a6b350e7263324194f7fb955318c185bd5308 Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Fri, 28 Oct 2022 19:55:46 +0530 Subject: [PATCH 4/9] Passed the respective Video/Playlist name to bottom sheet --- .../libretube/ui/sheets/PlaylistOptionsBottomSheet.kt | 6 ++++-- .../github/libretube/ui/sheets/VideoOptionsBottomSheet.kt | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/sheets/PlaylistOptionsBottomSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/PlaylistOptionsBottomSheet.kt index a5d81f435..2bb1b75fe 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/PlaylistOptionsBottomSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/PlaylistOptionsBottomSheet.kt @@ -11,6 +11,7 @@ import com.github.libretube.constants.ShareObjectType import com.github.libretube.databinding.DialogTextPreferenceBinding import com.github.libretube.extensions.TAG import com.github.libretube.extensions.toID +import com.github.libretube.obj.ShareData import com.github.libretube.ui.dialogs.ShareDialog import com.github.libretube.ui.views.BottomSheet import com.github.libretube.util.BackgroundHelper @@ -25,9 +26,10 @@ import java.io.IOException class PlaylistOptionsBottomSheet( private val playlistId: String, + private val playlistName: String, private val isOwner: Boolean ) : BottomSheet() { - + private val shareData = ShareData(currentPlaylist = playlistName) override fun onCreate(savedInstanceState: Bundle?) { // options for the dialog var optionsList = listOf( @@ -76,7 +78,7 @@ class PlaylistOptionsBottomSheet( } // share the playlist context?.getString(R.string.share) -> { - val shareDialog = ShareDialog(playlistId, ShareObjectType.PLAYLIST) + val shareDialog = ShareDialog(playlistId, ShareObjectType.PLAYLIST, shareData) // using parentFragmentManager, childFragmentManager doesn't work here shareDialog.show(parentFragmentManager, ShareDialog::class.java.name) } diff --git a/app/src/main/java/com/github/libretube/ui/sheets/VideoOptionsBottomSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/VideoOptionsBottomSheet.kt index 5310b75a1..1e6751743 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/VideoOptionsBottomSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/VideoOptionsBottomSheet.kt @@ -7,6 +7,7 @@ import com.github.libretube.api.RetrofitInstance import com.github.libretube.constants.IntentData import com.github.libretube.constants.ShareObjectType import com.github.libretube.extensions.toStreamItem +import com.github.libretube.obj.ShareData import com.github.libretube.ui.dialogs.AddToPlaylistDialog import com.github.libretube.ui.dialogs.DownloadDialog import com.github.libretube.ui.dialogs.ShareDialog @@ -24,9 +25,10 @@ import kotlinx.coroutines.launch * Needs the [videoId] to load the content from the right video. */ class VideoOptionsBottomSheet( - private val videoId: String + private val videoId: String, + private val videoName: String ) : BottomSheet() { - + private val shareData = ShareData(currentVideo = videoName) override fun onCreate(savedInstanceState: Bundle?) { // List that stores the different menu options. In the future could be add more options here. val optionsList = mutableListOf( @@ -79,7 +81,7 @@ class VideoOptionsBottomSheet( downloadDialog.show(parentFragmentManager, DownloadDialog::class.java.name) } context?.getString(R.string.share) -> { - val shareDialog = ShareDialog(videoId, ShareObjectType.VIDEO) + val shareDialog = ShareDialog(videoId, ShareObjectType.VIDEO, shareData) // using parentFragmentManager is important here shareDialog.show(parentFragmentManager, ShareDialog::class.java.name) } From 2b45a46b2c9e2dbd0ddbe31793ae7b78a54580bc Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Fri, 28 Oct 2022 20:00:50 +0530 Subject: [PATCH 5/9] Added the EXTRA_SUBJECT in the intent --- .../github/libretube/ui/dialogs/ShareDialog.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt index ba135be6e..48a943a54 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt @@ -13,12 +13,14 @@ import com.github.libretube.constants.YOUTUBE_FRONTEND_URL import com.github.libretube.databinding.DialogShareBinding import com.github.libretube.db.DatabaseHolder.Companion.Database import com.github.libretube.extensions.awaitQuery +import com.github.libretube.obj.ShareData import com.github.libretube.util.PreferenceHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder class ShareDialog( private val id: String, private val shareObjectType: Int, + private val shareData: ShareData, private val position: Long? = null ) : DialogFragment() { private var binding: DialogShareBinding? = null @@ -29,7 +31,7 @@ class ShareDialog( getString(R.string.youtube) ) val instanceUrl = getCustomInstanceFrontendUrl() - + val shareableTitle = getShareableTitle(shareData) // add instanceUrl option if custom instance frontend url available if (instanceUrl != "") shareOptions += getString(R.string.instance) @@ -63,6 +65,7 @@ class ShareDialog( intent.apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, url) + putExtra(Intent.EXTRA_SUBJECT, shareableTitle) type = "text/plain" } context?.startActivity( @@ -104,4 +107,14 @@ class ShareDialog( } return "" } + private fun getShareableTitle(shareData: ShareData): String { + if (shareData.currentChannel != null) { + return shareData.currentChannel + } else if (shareData.currentPlaylist != null) { + return shareData.currentPlaylist + } else if (shareData.currentVideo != null) { + return shareData.currentVideo + } + return "" + } } From 433a929ac34aedb15a950a960ca549032901a7ca Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Fri, 28 Oct 2022 20:02:50 +0530 Subject: [PATCH 6/9] New class to share Video/Channel/Playlist name --- app/src/main/java/com/github/libretube/obj/ShareData.kt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 app/src/main/java/com/github/libretube/obj/ShareData.kt diff --git a/app/src/main/java/com/github/libretube/obj/ShareData.kt b/app/src/main/java/com/github/libretube/obj/ShareData.kt new file mode 100644 index 000000000..8ad00bb5a --- /dev/null +++ b/app/src/main/java/com/github/libretube/obj/ShareData.kt @@ -0,0 +1,7 @@ +package com.github.libretube.obj + +data class ShareData( + val currentChannel: String ? = null, + val currentVideo: String ? = null, + val currentPlaylist: String ? = null +) From 30d662522e2a2be7d36959cdeb70f07880c470be Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Sat, 29 Oct 2022 13:21:33 +0530 Subject: [PATCH 7/9] ktlint fix --- .../com/github/libretube/ui/adapters/PlaylistsAdapter.kt | 2 +- .../com/github/libretube/ui/fragments/PlayerFragment.kt | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt index 84af7d286..e82bafd75 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt @@ -74,7 +74,7 @@ class PlaylistsAdapter( val playlistOptionsDialog = PlaylistOptionsBottomSheet( playlistId = playlist.id!!, playlistName = playlist.name!!, - isOwner = true, + isOwner = true ) playlistOptionsDialog.show( childFragmentManager, diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 6c27a975d..22373a0be 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -431,7 +431,12 @@ class PlayerFragment : BaseFragment() { // share button binding.relPlayerShare.setOnClickListener { val shareDialog = - ShareDialog(videoId!!, ShareObjectType.VIDEO, shareData, exoPlayer.currentPosition / 1000) + ShareDialog( + videoId!!, + ShareObjectType.VIDEO, + shareData, + exoPlayer.currentPosition / 1000 + ) shareDialog.show(childFragmentManager, ShareDialog::class.java.name) } From e39f97925fe5eefe608886436148f7ce2d66bc9d Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Sat, 29 Oct 2022 13:23:35 +0530 Subject: [PATCH 8/9] moved variable declaration --- .../com/github/libretube/ui/fragments/ChannelFragment.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt index 657f036da..ae29c0cfd 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt @@ -30,7 +30,6 @@ class ChannelFragment : BaseFragment() { private var channelId: String? = null private var channelName: String? = null - private lateinit var shareData: ShareData private var nextPage: String? = null private var channelAdapter: ChannelAdapter? = null private var isLoading = true @@ -103,7 +102,7 @@ class ChannelFragment : BaseFragment() { } // needed if the channel gets loaded by the ID channelId = response.id - shareData = ShareData(currentChannel = response.name) + val shareData = ShareData(currentChannel = response.name) // fetch and update the subscription status isSubscribed = SubscriptionHelper.isSubscribed(channelId!!) if (isSubscribed == null) return@launchWhenCreated @@ -126,7 +125,11 @@ class ChannelFragment : BaseFragment() { } binding.channelShare.setOnClickListener { - val shareDialog = ShareDialog(response.id!!.toID(), ShareObjectType.CHANNEL, shareData) + val shareDialog = ShareDialog( + response.id!!.toID(), + ShareObjectType.CHANNEL, + shareData + ) shareDialog.show(childFragmentManager, ShareDialog::class.java.name) } } From 3f56311939fe695329fb81bc24608f43b25a6cf4 Mon Sep 17 00:00:00 2001 From: shantanu1k Date: Sat, 29 Oct 2022 13:49:03 +0530 Subject: [PATCH 9/9] refactoring with scope functions --- .../github/libretube/ui/dialogs/ShareDialog.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt index 48a943a54..c3918903f 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt @@ -108,12 +108,16 @@ class ShareDialog( return "" } private fun getShareableTitle(shareData: ShareData): String { - if (shareData.currentChannel != null) { - return shareData.currentChannel - } else if (shareData.currentPlaylist != null) { - return shareData.currentPlaylist - } else if (shareData.currentVideo != null) { - return shareData.currentVideo + shareData.apply { + currentChannel?.let { + return it + } + currentVideo?.let { + return it + } + currentPlaylist?.let { + return it + } } return "" }