From 2067561c09fe503611f0a3df05aa8e965e8bb235 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Wed, 18 Oct 2023 20:11:20 +0200 Subject: [PATCH] Fix dedup in subscriptions feed, Download change directory no longer crashes, Allow uppercase letters in email for payment, Fix developer mode not enabling --- .../activities/SettingsActivity.kt | 23 ++++++++++--------- .../api/media/structures/DedupContentPager.kt | 3 ++- .../structures/MultiChronoContentPager.kt | 2 +- .../api/media/structures/MultiPager.kt | 5 ++-- .../futo/platformplayer/states/StateApp.kt | 8 +++++-- .../states/StateSubscriptions.kt | 9 ++++---- app/src/unstable/assets/sources/youtube | 2 +- dep/futopay | 2 +- 8 files changed, 31 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/activities/SettingsActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/SettingsActivity.kt index 14efcdae..4266ad89 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/SettingsActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/SettingsActivity.kt @@ -52,17 +52,6 @@ class SettingsActivity : AppCompatActivity(), IWithResultLauncher { startActivity(Intent(this, DeveloperActivity::class.java)); } - var devCounter = 0; - _form.findField("code")?.assume()?.setOnClickListener { - devCounter++; - if(devCounter > 5) { - devCounter = 0; - SettingsDev.instance.developerMode = true; - SettingsDev.instance.save(); - updateDevMode(); - UIDialogs.toast(this, "You are now in developer mode"); - } - }; _lastActivity = this; reloadSettings(); @@ -72,6 +61,18 @@ class SettingsActivity : AppCompatActivity(), IWithResultLauncher { _loader.start(); _form.fromObject(lifecycleScope, Settings.instance) { _loader.stop(); + + var devCounter = 0; + _form.findField("code")?.assume()?.setOnClickListener { + devCounter++; + if(devCounter > 5) { + devCounter = 0; + SettingsDev.instance.developerMode = true; + SettingsDev.instance.save(); + updateDevMode(); + UIDialogs.toast(this, "You are now in developer mode"); + } + }; }; } diff --git a/app/src/main/java/com/futo/platformplayer/api/media/structures/DedupContentPager.kt b/app/src/main/java/com/futo/platformplayer/api/media/structures/DedupContentPager.kt index 033f737e..1e9d4ca7 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/structures/DedupContentPager.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/structures/DedupContentPager.kt @@ -25,7 +25,8 @@ class DedupContentPager : IPager, IAsyncPager { - constructor(pagers : Array>, allowFailure: Boolean = false) : super(pagers.map { it }.toList(), allowFailure) {} + constructor(pagers : Array>, allowFailure: Boolean = false, pageSize: Int = 9) : super(pagers.map { it }.toList(), allowFailure, pageSize) {} @Synchronized override fun selectItemIndex(options: Array>): Int { diff --git a/app/src/main/java/com/futo/platformplayer/api/media/structures/MultiPager.kt b/app/src/main/java/com/futo/platformplayer/api/media/structures/MultiPager.kt index 0917805b..fcc2cb17 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/structures/MultiPager.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/structures/MultiPager.kt @@ -16,7 +16,7 @@ abstract class MultiPager : IPager { protected val _subSinglePagers : MutableList>; protected val _failedPagers: ArrayList> = arrayListOf(); - private val _pageSize : Int = 9; + private var _pageSize : Int = 9; private var _didInitialize = false; @@ -27,7 +27,8 @@ abstract class MultiPager : IPager { val totalPagers: Int get() = _pagers.size; - constructor(pagers : List>, allowFailure: Boolean = false) { + constructor(pagers : List>, allowFailure: Boolean = false, pageSize: Int = 9) { + this._pageSize = pageSize; this.allowFailure = allowFailure; _pagers = pagers.toMutableList(); _subSinglePagers = _pagers.map { SingleItemPager(it) }.toMutableList(); diff --git a/app/src/main/java/com/futo/platformplayer/states/StateApp.kt b/app/src/main/java/com/futo/platformplayer/states/StateApp.kt index f7b3dbe5..98ab2cb4 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateApp.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateApp.kt @@ -91,7 +91,7 @@ class StateApp { onChanged?.invoke(getExternalGeneralDirectory(context)); } else - StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { + scopeOrNull?.launch(Dispatchers.Main) { UIDialogs.toast("Failed to gain access to\n [${it?.lastPathSegment}]"); }; }; @@ -103,10 +103,14 @@ class StateApp { return null; } fun changeExternalDownloadDirectory(context: IWithResultLauncher, onChanged: ((DocumentFile?)->Unit)? = null) { + + scopeOrNull?.launch(Dispatchers.Main) { + UIDialogs.toast("External download directory not yet used by export (WIP)"); + }; if(context is Context) requestDirectoryAccess(context, "Download Exports", "This directory is used to export downloads to for external usage.", null) { if(it != null) - context.contentResolver.takePersistableUriPermission(it, Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION.or(Intent.FLAG_GRANT_WRITE_URI_PERMISSION.or(Intent.FLAG_GRANT_READ_URI_PERMISSION))); + context.contentResolver.takePersistableUriPermission(it, Intent.FLAG_GRANT_WRITE_URI_PERMISSION.or(Intent.FLAG_GRANT_READ_URI_PERMISSION)); if(it != null && isValidStorageUri(context, it)) { Logger.i(TAG, "Changed external download directory: ${it}"); Settings.instance.storage.storage_general = it.toString(); diff --git a/app/src/main/java/com/futo/platformplayer/states/StateSubscriptions.kt b/app/src/main/java/com/futo/platformplayer/states/StateSubscriptions.kt index b11cf24e..6a244aaf 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateSubscriptions.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateSubscriptions.kt @@ -219,13 +219,13 @@ class StateSubscriptions { } } - fun getSubscriptionsFeed(allowFailure: Boolean = false): MultiChronoContentPager { + fun getSubscriptionsFeed(allowFailure: Boolean = false): IPager { val result = getSubscriptionsFeedWithExceptions(allowFailure, true); if(result.second.any()) throw result.second.first(); return result.first; } - fun getSubscriptionsFeedWithExceptions(allowFailure: Boolean = false, withCacheFallback: Boolean = false, cacheScope: CoroutineScope? = null, onProgress: ((Int, Int)->Unit)? = null, onNewCacheHit: ((Subscription, IPlatformContent)->Unit)? = null): Pair> { + fun getSubscriptionsFeedWithExceptions(allowFailure: Boolean = false, withCacheFallback: Boolean = false, cacheScope: CoroutineScope? = null, onProgress: ((Int, Int)->Unit)? = null, onNewCacheHit: ((Subscription, IPlatformContent)->Unit)? = null): Pair, List> { val subsPager: Array>; val exs: ArrayList = arrayListOf(); @@ -343,9 +343,10 @@ class StateSubscriptions { throw exs.first(); Logger.i(TAG, "Subscription pager with ${subsPager.size} channels"); - val pager = MultiChronoContentPager(subsPager, allowFailure); + val pager = MultiChronoContentPager(subsPager, allowFailure, 15); pager.initialize(); - return Pair(pager, exs); + //return Pair(pager, exs); + return Pair(DedupContentPager(pager), exs); } //New Migration diff --git a/app/src/unstable/assets/sources/youtube b/app/src/unstable/assets/sources/youtube index 1c34bb01..eba1bb5d 160000 --- a/app/src/unstable/assets/sources/youtube +++ b/app/src/unstable/assets/sources/youtube @@ -1 +1 @@ -Subproject commit 1c34bb016378805ca24883ed55573dcd862309cf +Subproject commit eba1bb5d2ccf438a2f025a204d2d443e4b76b144 diff --git a/dep/futopay b/dep/futopay index 9e589c23..2c608e7e 160000 --- a/dep/futopay +++ b/dep/futopay @@ -1 +1 @@ -Subproject commit 9e589c231187b02a9922f55a962add0a688d28cd +Subproject commit 2c608e7eddb742a918b304e3c52888206275f642