diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt index 67283de3..2311cc30 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt @@ -42,9 +42,9 @@ object APIHolder { val allProviders: MutableList = arrayListOf() - fun initAll() { + fun initAll(settingsForProvider: SettingsJson) { for (api in allProviders) { - api.init() + api.init(settingsForProvider) } apiMap = null } @@ -315,6 +315,10 @@ data class ProvidersInfoJson( @JsonProperty("status") var status: Int, ) +data class SettingsJson( + @JsonProperty("enableAdult") var enableAdult: Boolean = false, +) + data class MainPageData( val name: String, @@ -356,13 +360,16 @@ abstract class MainAPI { var overrideData: HashMap? = null } - fun init() { + fun init(settingsForProvider: SettingsJson) { overrideData?.get(this.javaClass.simpleName)?.let { data -> - overrideWithNewData(data) + overrideWithNewData(data, settingsForProvider) } } - fun overrideWithNewData(data: ProvidersInfoJson) { + fun overrideWithNewData(data: ProvidersInfoJson, settingsForProvider: SettingsJson) { + // Set settings regardless if it can be overriden + this.settings = settingsForProvider + if (!canBeOverridden) return this.name = data.name if (data.url.isNotBlank() && data.url != "NONE") @@ -374,6 +381,7 @@ abstract class MainAPI { open var mainUrl = "NONE" open var storedCredentials: String? = null open var canBeOverridden: Boolean = true + open var settings: SettingsJson = SettingsJson() //open val uniqueId : Int by lazy { this.name.hashCode() } // in case of duplicate providers you can have a shared id diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt index 49864e65..d6695476 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt @@ -507,8 +507,10 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { SearchResultBuilder.updateCache(this) + val settingsForProvider = SettingsJson() + settingsForProvider.enableAdult = settingsManager.getBoolean(getString(R.string.enable_nsfw_on_providers_key), false) ioSafe { - initAll() + initAll(settingsForProvider) // No duplicates (which can happen by registerMainAPI) apis = allProviders.distinctBy { it } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 873de287..b6e732e5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -54,6 +54,7 @@ redo_setup_key filter_sub_lang_key pref_filter_search_quality_key + enable_nsfw_on_providers_key %d %s | %sMB @@ -440,6 +441,7 @@ Provider languages App Layout Preferred media + Enable NSFW on supported providers Subtitle encoding Language Layout @@ -603,4 +605,5 @@ Download all plugins from this repository? %s (Disabled) + Apply on Restart diff --git a/app/src/main/res/xml/settings_media_lang.xml b/app/src/main/res/xml/settings_media_lang.xml index 575b638c..2244eff8 100644 --- a/app/src/main/res/xml/settings_media_lang.xml +++ b/app/src/main/res/xml/settings_media_lang.xml @@ -18,4 +18,11 @@ android:key="@string/display_sub_key" android:title="@string/display_subbed_dubbed_settings" android:icon="@drawable/ic_outline_voice_over_off_24" /> + + \ No newline at end of file