From 2c0e40a233d816f55c58559dfb40308eee62fdac Mon Sep 17 00:00:00 2001
From: CranberrySoup <142951702+CranberrySoup@users.noreply.github.com>
Date: Thu, 24 Aug 2023 00:23:06 +0200
Subject: [PATCH 1/6] Lower targetSdk to get all installed packages
---
app/build.gradle.kts | 2 +-
app/src/main/AndroidManifest.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 178b49c2..dfd2c173 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -55,7 +55,7 @@ android {
defaultConfig {
applicationId = "com.lagradost.cloudstream3"
minSdk = 21
- targetSdk = 33
+ targetSdk = 29
versionCode = 59
versionName = "4.1.7"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 563c82f8..0e716034 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,7 +15,7 @@
-
+
Date: Mon, 4 Sep 2023 18:36:30 +0000
Subject: [PATCH 2/6] Update sdk version
---
app/build.gradle.kts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 55d0f7ae..825d0c4b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -50,13 +50,13 @@ android {
}
}
- compileSdk = 33
- buildToolsVersion = "30.0.3"
+ compileSdk = 34
+ buildToolsVersion = "34.0.0"
defaultConfig {
applicationId = "com.lagradost.cloudstream3"
minSdk = 21
- targetSdk = 29
+ targetSdk = 34
versionCode = 59
versionName = "4.1.8"
From 3c3ca21728a9ee094296594f8fa1c3a435a9176a Mon Sep 17 00:00:00 2001
From: CranberrySoup <142951702+CranberrySoup@users.noreply.github.com>
Date: Mon, 4 Sep 2023 18:42:33 +0000
Subject: [PATCH 3/6] Let's not be too radical
---
app/build.gradle.kts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 825d0c4b..e31de078 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -50,13 +50,13 @@ android {
}
}
- compileSdk = 34
+ compileSdk = 33
buildToolsVersion = "34.0.0"
defaultConfig {
applicationId = "com.lagradost.cloudstream3"
minSdk = 21
- targetSdk = 34
+ targetSdk = 33
versionCode = 59
versionName = "4.1.8"
From 6e89ed9d81453db71d7797df07d18d0ddb7aaa99 Mon Sep 17 00:00:00 2001
From: CranberrySoup <142951702+CranberrySoup@users.noreply.github.com>
Date: Fri, 15 Sep 2023 16:39:00 +0200
Subject: [PATCH 4/6] Many fixes
---
.../lagradost/cloudstream3/MainActivity.kt | 13 +-
...RecyclerView.kt => CustomRecyclerViews.kt} | 39 ++-
.../ui/result/ResultFragmentTv.kt | 4 +-
.../ui/result/ResultViewModel2.kt | 3 +-
app/src/main/res/drawable/episodes_shadow.xml | 6 +-
.../main/res/layout/fragment_result_tv.xml | 239 ++++++++++--------
6 files changed, 184 insertions(+), 120 deletions(-)
rename app/src/main/java/com/lagradost/cloudstream3/ui/{AutofitRecyclerView.kt => CustomRecyclerViews.kt} (79%)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
index a07ae2c2..c57b6c0f 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
@@ -539,6 +539,10 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
val isTrueTv = isTrueTvSettings()
navView.menu.findItem(R.id.navigation_library)?.isVisible = !isTrueTv
navRailView.menu.findItem(R.id.navigation_library)?.isVisible = !isTrueTv
+
+ // Hide downloads on TV
+ navView.menu.findItem(R.id.navigation_downloads)?.isVisible = !isTrueTv
+ navRailView.menu.findItem(R.id.navigation_downloads)?.isVisible = !isTrueTv
}
}
@@ -1112,16 +1116,17 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
newLocalBinding.root.viewTreeObserver.addOnGlobalFocusChangeListener { _, newFocus ->
// println("refocus $oldFocus -> $newFocus")
try {
- val r = Rect(0,0,0,0)
+ val r = Rect(0, 0, 0, 0)
newFocus.getDrawingRect(r)
val x = r.centerX()
val y = r.centerY()
val dx = 0 //screenWidth / 2
val dy = screenHeight / 2
- val r2 = Rect(x-dx,y-dy,x+dx,y+dy)
+ val r2 = Rect(x - dx, y - dy, x + dx, y + dy)
newFocus.requestRectangleOnScreen(r2, false)
- // TvFocus.current =TvFocus.current.copy(y=y.toFloat())
- } catch (_ : Throwable) { }
+ // TvFocus.current =TvFocus.current.copy(y=y.toFloat())
+ } catch (_: Throwable) {
+ }
TvFocus.updateFocusView(newFocus)
/*var focus = newFocus
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/AutofitRecyclerView.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/CustomRecyclerViews.kt
similarity index 79%
rename from app/src/main/java/com/lagradost/cloudstream3/ui/AutofitRecyclerView.kt
rename to app/src/main/java/com/lagradost/cloudstream3/ui/CustomRecyclerViews.kt
index 28ced48c..1a9549e1 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/AutofitRecyclerView.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/CustomRecyclerViews.kt
@@ -3,6 +3,7 @@ package com.lagradost.cloudstream3.ui
import android.content.Context
import android.util.AttributeSet
import android.view.View
+import androidx.core.view.children
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kotlin.math.abs
@@ -70,8 +71,8 @@ class GrdLayoutManager(val context: Context, _spanCount: Int) :
val orientation = this.orientation
// fixes arabic by inverting left and right layout focus
- val correctDirection = if(this.isLayoutRTL) {
- when(direction) {
+ val correctDirection = if (this.isLayoutRTL) {
+ when (direction) {
View.FOCUS_RIGHT -> View.FOCUS_LEFT
View.FOCUS_LEFT -> View.FOCUS_RIGHT
else -> direction
@@ -83,12 +84,15 @@ class GrdLayoutManager(val context: Context, _spanCount: Int) :
View.FOCUS_DOWN -> {
return spanCount
}
+
View.FOCUS_UP -> {
return -spanCount
}
+
View.FOCUS_RIGHT -> {
return 1
}
+
View.FOCUS_LEFT -> {
return -1
}
@@ -98,12 +102,15 @@ class GrdLayoutManager(val context: Context, _spanCount: Int) :
View.FOCUS_DOWN -> {
return 1
}
+
View.FOCUS_UP -> {
return -1
}
+
View.FOCUS_RIGHT -> {
return spanCount
}
+
View.FOCUS_LEFT -> {
return -spanCount
}
@@ -155,4 +162,32 @@ class AutofitRecyclerView @JvmOverloads constructor(context: Context, attrs: Att
layoutManager = manager
}
+}
+
+/**
+ * Recyclerview wherein the max item width or height is set by the biggest view to prevent inconsistent view sizes.
+ */
+class MaxRecyclerView(ctx: Context, attrs: AttributeSet) : RecyclerView(ctx, attrs) {
+ private var biggestObserved: Int = 0
+ private val orientation = LayoutManager.getProperties(context, attrs, 0, 0).orientation
+ private val isHorizontal = orientation == HORIZONTAL
+ private fun View.updateMaxSize() {
+ if (isHorizontal) {
+ this.minimumHeight = biggestObserved
+ } else {
+ this.minimumWidth = biggestObserved
+ }
+ }
+
+ override fun onChildAttachedToWindow(child: View) {
+ child.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED)
+ val observed = if (isHorizontal) child.measuredHeight else child.measuredWidth
+ if (observed > biggestObserved) {
+ biggestObserved = observed
+ children.forEach { it.updateMaxSize() }
+ } else {
+ child.updateMaxSize()
+ }
+ super.onChildAttachedToWindow(child)
+ }
}
\ No newline at end of file
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 be3de52b..c40d995b 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
@@ -177,7 +177,7 @@ class ResultFragmentTv : Fragment() {
isVisible = true
}
- this.animate().alpha(if (turnVisible) 1.0f else 0.0f).apply {
+ this.animate().alpha(if (turnVisible) 0.97f else 0.0f).apply {
duration = 200
interpolator = DecelerateInterpolator()
setListener(object : Animator.AnimatorListener {
@@ -294,9 +294,9 @@ class ResultFragmentTv : Fragment() {
toggleEpisodes(true)
binding?.apply {
val views = listOf(
+ resultDubSelection,
resultSeasonSelection,
resultRangeSelection,
- resultDubSelection,
resultEpisodes,
resultPlayTrailer,
)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt
index b398b54e..6acf476a 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt
@@ -518,7 +518,8 @@ class ResultViewModel2 : ViewModel() {
val episodeNumber = episodes[currentIndex].episode
if (episodeNumber < currentMin) {
currentMin = episodeNumber
- } else if (episodeNumber > currentMax) {
+ }
+ if (episodeNumber > currentMax) {
currentMax = episodeNumber
}
++currentIndex
diff --git a/app/src/main/res/drawable/episodes_shadow.xml b/app/src/main/res/drawable/episodes_shadow.xml
index b4cdd382..a77cbf25 100644
--- a/app/src/main/res/drawable/episodes_shadow.xml
+++ b/app/src/main/res/drawable/episodes_shadow.xml
@@ -1,6 +1,8 @@
+ android:centerColor="?attr/primaryBlackBackground"
+ android:centerX="0.2"
+ android:endColor="?attr/primaryBlackBackground"
+ android:startColor="@color/transparent" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_result_tv.xml b/app/src/main/res/layout/fragment_result_tv.xml
index 4d236d78..a143fbda 100644
--- a/app/src/main/res/layout/fragment_result_tv.xml
+++ b/app/src/main/res/layout/fragment_result_tv.xml
@@ -535,129 +535,150 @@ https://developer.android.com/design/ui/tv/samples/jet-fit
-
-
-
-
-
-
-
-
-
-
-
-
-
+ tools:visibility="visible">
-
+
- style="@style/Widget.AppCompat.ProgressBar"
- android:layout_gravity="center"
- android:layout_width="50dp"
- android:layout_height="50dp" />-->
+
+
-
-
-
-
+ android:focusableInTouchMode="false"
+ android:importantForAccessibility="no"
+ android:src="@drawable/episodes_shadow"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="@+id/shadow_space_2"
+ app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
Date: Fri, 15 Sep 2023 16:41:13 +0200
Subject: [PATCH 5/6] Revert targetSdk
---
app/build.gradle.kts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 7bcae0f4..66ba16c6 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -56,7 +56,7 @@ android {
defaultConfig {
applicationId = "com.lagradost.cloudstream3"
minSdk = 21
- targetSdk = 29
+ targetSdk = 33
versionCode = 60
versionName = "4.1.9"
From 65c927496d95f82e59cc268103f1aaa3524a3d8f Mon Sep 17 00:00:00 2001
From: CranberrySoup <142951702+CranberrySoup@users.noreply.github.com>
Date: Fri, 15 Sep 2023 17:51:15 +0200
Subject: [PATCH 6/6] Make account homepage persistent
---
.../lagradost/cloudstream3/MainActivity.kt | 12 ++++++-
.../cloudstream3/ui/home/HomeFragment.kt | 3 +-
.../cloudstream3/ui/home/HomeViewModel.kt | 17 ++++++----
.../ui/settings/SettingsProviders.kt | 4 +--
.../ui/setup/SetupFragmentMedia.kt | 4 +--
.../cloudstream3/utils/DataStoreHelper.kt | 33 ++++++++++++++++---
6 files changed, 55 insertions(+), 18 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
index c57b6c0f..7e29e727 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
@@ -128,6 +128,7 @@ import com.lagradost.cloudstream3.utils.Coroutines.ioSafe
import com.lagradost.cloudstream3.utils.Coroutines.main
import com.lagradost.cloudstream3.utils.DataStore.getKey
import com.lagradost.cloudstream3.utils.DataStore.setKey
+import com.lagradost.cloudstream3.utils.DataStoreHelper
import com.lagradost.cloudstream3.utils.DataStoreHelper.migrateResumeWatching
import com.lagradost.cloudstream3.utils.Event
import com.lagradost.cloudstream3.utils.IOnBackPressed
@@ -305,6 +306,10 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
// kinda shitty solution, but cant com main->home otherwise for popups
val bookmarksUpdatedEvent = Event()
+ /**
+ * Used by data store helper to fully reload home when switching accounts
+ */
+ val reloadHomeEvent = Event()
/**
@@ -1187,7 +1192,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
}
} else if (lastError == null) {
ioSafe {
- getKey(USER_SELECTED_HOMEPAGE_API)?.let { homeApi ->
+ DataStoreHelper.currentHomePage?.let { homeApi ->
mainPluginsLoadedEvent.invoke(loadSinglePlugin(this@MainActivity, homeApi))
} ?: run {
mainPluginsLoadedEvent.invoke(false)
@@ -1548,6 +1553,11 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
migrateResumeWatching()
}
+ getKey(USER_SELECTED_HOMEPAGE_API)?.let { homepage ->
+ DataStoreHelper.currentHomePage = homepage
+ removeKey(USER_SELECTED_HOMEPAGE_API)
+ }
+
try {
if (getKey(HAS_DONE_SETUP_KEY, false) != true) {
navController.navigate(R.id.navigation_setup_language)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt
index b84c619e..0797e9a0 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt
@@ -69,7 +69,6 @@ import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
import com.lagradost.cloudstream3.utils.UIHelper.getSpanCount
import com.lagradost.cloudstream3.utils.UIHelper.popupMenuNoIconsAndNoStringRes
-import com.lagradost.cloudstream3.utils.USER_SELECTED_HOMEPAGE_API
import java.util.*
@@ -669,7 +668,7 @@ class HomeFragment : Fragment() {
}
homeViewModel.reloadStored()
- homeViewModel.loadAndCancel(getKey(USER_SELECTED_HOMEPAGE_API), false)
+ homeViewModel.loadAndCancel(DataStoreHelper.currentHomePage, false)
//loadHomePage(false)
// nice profile pic on homepage
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeViewModel.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeViewModel.kt
index b27223ec..13d34b59 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeViewModel.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeViewModel.kt
@@ -49,7 +49,6 @@ import com.lagradost.cloudstream3.utils.DataStoreHelper.getBookmarkedData
import com.lagradost.cloudstream3.utils.DataStoreHelper.getLastWatched
import com.lagradost.cloudstream3.utils.DataStoreHelper.getResultWatchState
import com.lagradost.cloudstream3.utils.DataStoreHelper.getViewPos
-import com.lagradost.cloudstream3.utils.USER_SELECTED_HOMEPAGE_API
import com.lagradost.cloudstream3.utils.VideoDownloadHelper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
@@ -426,23 +425,29 @@ class HomeViewModel : ViewModel() {
}
private fun afterPluginsLoaded(forceReload: Boolean) {
- loadAndCancel(getKey(USER_SELECTED_HOMEPAGE_API), forceReload)
+ loadAndCancel(DataStoreHelper.currentHomePage, forceReload)
}
private fun afterMainPluginsLoaded(unused: Boolean = false) {
- loadAndCancel(getKey(USER_SELECTED_HOMEPAGE_API), false)
+ loadAndCancel(DataStoreHelper.currentHomePage, false)
+ }
+
+ private fun reloadHome(unused: Boolean = false) {
+ loadAndCancel(DataStoreHelper.currentHomePage, true)
}
init {
MainActivity.bookmarksUpdatedEvent += ::bookmarksUpdated
MainActivity.afterPluginsLoadedEvent += ::afterPluginsLoaded
MainActivity.mainPluginsLoadedEvent += ::afterMainPluginsLoaded
+ MainActivity.reloadHomeEvent += ::reloadHome
}
override fun onCleared() {
MainActivity.bookmarksUpdatedEvent -= ::bookmarksUpdated
MainActivity.afterPluginsLoadedEvent -= ::afterPluginsLoaded
MainActivity.mainPluginsLoadedEvent -= ::afterMainPluginsLoaded
+ MainActivity.reloadHomeEvent -= ::reloadHome
super.onCleared()
}
@@ -495,7 +500,7 @@ class HomeViewModel : ViewModel() {
val api = getApiFromNameNull(preferredApiName)
if (preferredApiName == noneApi.name) {
// just set to random
- if (fromUI) setKey(USER_SELECTED_HOMEPAGE_API, noneApi.name)
+ if (fromUI) DataStoreHelper.currentHomePage = noneApi.name
loadAndCancel(noneApi)
} else if (preferredApiName == randomApi.name) {
// randomize the api, if none exist like if not loaded or not installed
@@ -506,7 +511,7 @@ class HomeViewModel : ViewModel() {
} else {
val apiRandom = validAPIs.random()
loadAndCancel(apiRandom)
- if (fromUI) setKey(USER_SELECTED_HOMEPAGE_API, apiRandom.name)
+ if (fromUI) DataStoreHelper.currentHomePage = apiRandom.name
}
} else if (api == null) {
// API is not found aka not loaded or removed, post the loading
@@ -520,7 +525,7 @@ class HomeViewModel : ViewModel() {
}
} else {
// if the api is found, then set it to it and save key
- if (fromUI) setKey(USER_SELECTED_HOMEPAGE_API, api.name)
+ if (fromUI) DataStoreHelper.currentHomePage = api.name
loadAndCancel(api)
}
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsProviders.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsProviders.kt
index 0bef5e9a..7e57fc5b 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsProviders.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsProviders.kt
@@ -14,7 +14,7 @@ import com.lagradost.cloudstream3.ui.APIRepository
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setPaddingBottom
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
-import com.lagradost.cloudstream3.utils.USER_SELECTED_HOMEPAGE_API
+import com.lagradost.cloudstream3.utils.DataStoreHelper
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog
import com.lagradost.cloudstream3.utils.SubtitleHelper
import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard
@@ -96,7 +96,7 @@ class SettingsProviders : PreferenceFragmentCompat() {
this.getString(R.string.prefer_media_type_key),
selectedList.map { it.toString() }.toMutableSet()
).apply()
- removeKey(USER_SELECTED_HOMEPAGE_API)
+ DataStoreHelper.currentHomePage = null
//(context ?: AcraApplication.context)?.let { ctx -> app.initClient(ctx) }
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentMedia.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentMedia.kt
index 6916cafe..f9197213 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentMedia.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentMedia.kt
@@ -15,8 +15,8 @@ import com.lagradost.cloudstream3.R
import com.lagradost.cloudstream3.TvType
import com.lagradost.cloudstream3.databinding.FragmentSetupMediaBinding
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
+import com.lagradost.cloudstream3.utils.DataStoreHelper
import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
-import com.lagradost.cloudstream3.utils.USER_SELECTED_HOMEPAGE_API
class SetupFragmentMedia : Fragment() {
@@ -77,7 +77,7 @@ class SetupFragmentMedia : Fragment() {
.apply()
// Regenerate set homepage
- removeKey(USER_SELECTED_HOMEPAGE_API)
+ DataStoreHelper.currentHomePage = null
}
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt
index 2eb2ab01..7bce1b6c 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt
@@ -77,10 +77,28 @@ object DataStoreHelper {
var selectedKeyIndex by PreferenceDelegate("$TAG/account_key_index", 0)
val currentAccount: String get() = selectedKeyIndex.toString()
- private fun setAccount(account: Account) {
+ /**
+ * Get or set the current account homepage.
+ * Setting this does not automatically reload the homepage.
+ */
+ var currentHomePage: String?
+ get() = getKey("$currentAccount/$USER_SELECTED_HOMEPAGE_API")
+ set(value) {
+ val key = "$currentAccount/$USER_SELECTED_HOMEPAGE_API"
+ if (value == null) {
+ removeKey(key)
+ } else {
+ setKey(key, value)
+ }
+ }
+
+ private fun setAccount(account: Account, refreshHomePage: Boolean) {
selectedKeyIndex = account.keyIndex
showToast(account.name)
MainActivity.bookmarksUpdatedEvent(true)
+ if (refreshHomePage) {
+ MainActivity.reloadHomeEvent(true)
+ }
}
private fun editAccount(context: Context, account: Account, isNewAccount: Boolean) {
@@ -112,7 +130,7 @@ object DataStoreHelper {
accounts = currentAccounts.toTypedArray()
// update UI
- setAccount(getDefaultAccount(context))
+ setAccount(getDefaultAccount(context), true)
MainActivity.bookmarksUpdatedEvent(true)
dialog?.dismissSafe()
}
@@ -161,8 +179,13 @@ object DataStoreHelper {
currentAccounts.add(currentEditAccount)
}
+ // Save the current homepage for new accounts
+ val currentHomePage = DataStoreHelper.currentHomePage
+
// set the new default account as well as add the key for the new account
- setAccount(currentEditAccount)
+ setAccount(currentEditAccount, false)
+ DataStoreHelper.currentHomePage = currentHomePage
+
accounts = currentAccounts.toTypedArray()
dialog.dismissSafe()
@@ -204,7 +227,7 @@ object DataStoreHelper {
)
binding.profilesRecyclerview.adapter = WhoIsWatchingAdapter(
selectCallBack = { account ->
- setAccount(account)
+ setAccount(account, true)
builder.dismissSafe()
},
addAccountCallback = {
@@ -353,7 +376,7 @@ object DataStoreHelper {
removeKeys(folder2)
}
- fun deleteBookmarkedData(id : Int?) {
+ fun deleteBookmarkedData(id: Int?) {
if (id == null) return
removeKey("$currentAccount/$RESULT_WATCH_STATE", id.toString())
removeKey("$currentAccount/$RESULT_WATCH_STATE_DATA", id.toString())