From 05a579a3b9604d70b98a47a9b41a21e37f61bdab Mon Sep 17 00:00:00 2001
From: Luna712 <142361265+Luna712@users.noreply.github.com>
Date: Tue, 24 Oct 2023 22:32:45 -0600
Subject: [PATCH] Add subscription support to emulator
---
.../ui/result/ResultFragmentTv.kt | 43 ++++++++++++++++++-
.../main/res/layout/fragment_result_tv.xml | 13 +++++-
app/src/main/res/values/strings.xml | 2 +
3 files changed, 56 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentTv.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentTv.kt
index feb8ca04..5a625068 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentTv.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentTv.kt
@@ -28,6 +28,7 @@ import com.lagradost.cloudstream3.databinding.FragmentResultTvBinding
import com.lagradost.cloudstream3.mvvm.Resource
import com.lagradost.cloudstream3.mvvm.observe
import com.lagradost.cloudstream3.mvvm.observeNullable
+import com.lagradost.cloudstream3.services.SubscriptionWorkManager
import com.lagradost.cloudstream3.ui.WatchType
import com.lagradost.cloudstream3.ui.download.DownloadButtonSetup
import com.lagradost.cloudstream3.ui.player.ExtractorLinkGenerator
@@ -37,6 +38,7 @@ import com.lagradost.cloudstream3.ui.result.ResultFragment.updateUIEvent
import com.lagradost.cloudstream3.ui.search.SEARCH_ACTION_FOCUSED
import com.lagradost.cloudstream3.ui.search.SearchAdapter
import com.lagradost.cloudstream3.ui.search.SearchHelper
+import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isEmulatorSettings
import com.lagradost.cloudstream3.utils.AppUtils.getNameFull
import com.lagradost.cloudstream3.utils.AppUtils.html
import com.lagradost.cloudstream3.utils.AppUtils.isRtl
@@ -287,7 +289,8 @@ class ResultFragmentTv : Fragment() {
resultResumeSeries,
resultPlayTrailer,
resultBookmarkButton,
- resultFavoriteButton
+ resultFavoriteButton,
+ resultSubscribeButton
)
for (requestView in views) {
if (!requestView.isVisible) continue
@@ -429,6 +432,7 @@ class ResultFragmentTv : Fragment() {
binding?.resultEpisodesShow,
binding?.resultBookmarkButton,
binding?.resultFavoriteButton,
+ binding?.resultSubscribeButton,
).firstOrNull {
it?.isVisible == true
}
@@ -572,6 +576,43 @@ class ResultFragmentTv : Fragment() {
}
}
+ observeNullable(viewModel.subscribeStatus) { isSubscribed ->
+ binding?.resultSubscribeButton?.apply {
+ isVisible = isSubscribed != null && context.isEmulatorSettings()
+ if (isSubscribed == null) return@observeNullable
+
+ val drawable = if (isSubscribed) {
+ R.drawable.ic_baseline_notifications_active_24
+ } else {
+ R.drawable.baseline_notifications_none_24
+ }
+
+ val text = if (isSubscribed) {
+ R.string.action_unsubscribe
+ } else {
+ R.string.action_subscribe
+ }
+
+ setIconResource(drawable)
+ setText(text)
+ setOnClickListener {
+ val isSubscribed = viewModel.toggleSubscriptionStatus() ?: return@setOnClickListener
+
+ val message = if (isSubscribed) {
+ // Kinda icky to have this here, but it works.
+ SubscriptionWorkManager.enqueuePeriodicWork(context)
+ R.string.subscription_new
+ } else {
+ R.string.subscription_deleted
+ }
+
+ val name = (viewModel.page.value as? Resource.Success)?.value?.title
+ ?: txt(R.string.no_data).asStringNull(context) ?: ""
+ CommonActivity.showToast(txt(message, name), Toast.LENGTH_SHORT)
+ }
+ }
+ }
+
observeNullable(viewModel.movie) { data ->
binding?.apply {
resultPlayMovie.isVisible = data is Resource.Success
diff --git a/app/src/main/res/layout/fragment_result_tv.xml b/app/src/main/res/layout/fragment_result_tv.xml
index 51add4cb..8fd2271b 100644
--- a/app/src/main/res/layout/fragment_result_tv.xml
+++ b/app/src/main/res/layout/fragment_result_tv.xml
@@ -325,12 +325,23 @@ https://developer.android.com/design/ui/tv/samples/jet-fit
style="@style/ResultButtonTV"
android:nextFocusRight="@id/result_description"
android:nextFocusUp="@id/result_bookmark_button"
- android:nextFocusDown="@id/result_episodes_show"
+ android:nextFocusDown="@id/result_subscribe_button"
android:text="@string/action_add_to_favorites"
android:visibility="visible"
app:icon="@drawable/ic_baseline_favorite_border_24" />
+
+
Subscribed to %s
Unsubscribed from %s
Episode %d released!
+ Subscribe
+ Unsubscribe
Profile %d
Wi-Fi
Mobile data