From 507ad105c08f0cda996e8e90e5883941117221d4 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Wed, 17 Jan 2024 15:31:05 +0100 Subject: [PATCH] Hide warnings if empty, enable newly installed plugins, new browse plugin url --- .../platformplayer/activities/AddSourceActivity.kt | 13 ++++++++++++- .../futo/platformplayer/activities/MainActivity.kt | 2 +- .../fragment/mainactivity/main/HomeFragment.kt | 2 +- .../com/futo/platformplayer/states/StatePlatform.kt | 5 +++++ app/src/main/res/layout/activity_add_source.xml | 1 + 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/activities/AddSourceActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/AddSourceActivity.kt index 06720574..85873d28 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/AddSourceActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/AddSourceActivity.kt @@ -12,6 +12,7 @@ import android.widget.ScrollView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import com.futo.platformplayer.R import com.futo.platformplayer.UIDialogs @@ -37,8 +38,10 @@ class AddSourceActivity : AppCompatActivity() { private lateinit var _sourceHeader: SourceHeaderView; + private lateinit var _sourcePermissions: LinearLayout; private lateinit var _sourceWarnings: LinearLayout; + private lateinit var _sourceWarningsContainer: LinearLayout; private lateinit var _container: ScrollView; private lateinit var _loader: ImageView; @@ -79,6 +82,7 @@ class AddSourceActivity : AppCompatActivity() { _sourcePermissions = findViewById(R.id.source_permissions); _sourceWarnings = findViewById(R.id.source_warnings); + _sourceWarningsContainer = findViewById(R.id.container_source_warnings); _container = findViewById(R.id.configContainer); _loader = findViewById(R.id.loader); @@ -203,21 +207,28 @@ class AddSourceActivity : AppCompatActivity() { val pastelRed = ContextCompat.getColor(this, R.color.pastel_red); - for(warning in config.getWarnings(script)) + val warnings = config.getWarnings(script); + for(warning in warnings) _sourceWarnings.addView( SourceInfoView(this, R.drawable.ic_security_pred, warning.first, warning.second) .withDescriptionColor(pastelRed)); + _sourceWarningsContainer.isVisible = warnings.isNotEmpty(); setLoading(false); } fun install(config: SourcePluginConfig, script: String) { + val isNew = !StatePlatform.instance.getAvailableClients().any { it.id == config.id }; StatePlugins.instance.installPlugin(this, lifecycleScope, config, script) { if(it) { StatePlatform.instance.clearUpdateAvailable(config) + if(isNew) + lifecycleScope.launch { + StatePlatform.instance.enableClient(listOf(config.id)); + } backToSources(); } } diff --git a/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt index 5797e0ec..4889df55 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt @@ -536,7 +536,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher { } }; "BROWSE_PLUGINS" -> { - navigate(_fragBrowser, BrowserFragment.NavigateOptions("https://plugins.grayjay.app/", mapOf( + navigate(_fragBrowser, BrowserFragment.NavigateOptions("https://plugins.grayjay.app/phone.html", mapOf( Pair("grayjay") { req -> StateApp.instance.contextOrNull?.let { if(it is MainActivity) { diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/HomeFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/HomeFragment.kt index 7f39165e..250171b7 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/HomeFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/HomeFragment.kt @@ -164,7 +164,7 @@ class HomeFragment : MainFragment() { "Enable or install some Sources" else "This Grayjay version comes without any sources, install sources externally or using the button below.", R.drawable.ic_sources, listOf(BigButton(context, "Browse Online Sources", "View official sources online", R.drawable.ic_explore) { - fragment.navigate(BrowserFragment.NavigateOptions("https://plugins.grayjay.app/", mapOf( + fragment.navigate(BrowserFragment.NavigateOptions("https://plugins.grayjay.app/phone.html", mapOf( Pair("grayjay") { req -> StateApp.instance.contextOrNull?.let { if(it is MainActivity) { diff --git a/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt b/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt index 1aded91e..679a9fa2 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StatePlatform.kt @@ -312,6 +312,11 @@ class StatePlatform { }; } + + suspend fun enableClient(ids: List) { + val currentClients = getEnabledClients().map { it.id }; + selectClients(*(currentClients + ids).distinct().toTypedArray()); + } /** * Selects the enabled clients, meaning all clients that data is actively requested from. * If a client is disabled, NO requests are made to said client diff --git a/app/src/main/res/layout/activity_add_source.xml b/app/src/main/res/layout/activity_add_source.xml index 3cee4845..9adf25ed 100644 --- a/app/src/main/res/layout/activity_add_source.xml +++ b/app/src/main/res/layout/activity_add_source.xml @@ -110,6 +110,7 @@