Use companion object instead for singular object access across all providers

This commit is contained in:
Jace 2022-08-22 07:27:59 +08:00
parent 7816616e03
commit e4e46ba969
2 changed files with 9 additions and 9 deletions

View file

@ -42,9 +42,9 @@ object APIHolder {
val allProviders: MutableList<MainAPI> = arrayListOf() val allProviders: MutableList<MainAPI> = arrayListOf()
fun initAll(settingsForProvider: SettingsJson) { fun initAll() {
for (api in allProviders) { for (api in allProviders) {
api.init(settingsForProvider) api.init()
} }
apiMap = null apiMap = null
} }
@ -358,18 +358,16 @@ fun newHomePageResponse(list: List<HomePageList>, hasNext: Boolean? = null): Hom
abstract class MainAPI { abstract class MainAPI {
companion object { companion object {
var overrideData: HashMap<String, ProvidersInfoJson>? = null var overrideData: HashMap<String, ProvidersInfoJson>? = null
var settingsForProvider: SettingsJson = SettingsJson()
} }
fun init(settingsForProvider: SettingsJson) { fun init() {
overrideData?.get(this.javaClass.simpleName)?.let { data -> overrideData?.get(this.javaClass.simpleName)?.let { data ->
overrideWithNewData(data, settingsForProvider) overrideWithNewData(data)
} }
} }
fun overrideWithNewData(data: ProvidersInfoJson, settingsForProvider: SettingsJson) { fun overrideWithNewData(data: ProvidersInfoJson, settingsForProvider: SettingsJson) {
// Set settings regardless if it can be overriden
this.settings = settingsForProvider
if (!canBeOverridden) return if (!canBeOverridden) return
this.name = data.name this.name = data.name
if (data.url.isNotBlank() && data.url != "NONE") if (data.url.isNotBlank() && data.url != "NONE")
@ -381,7 +379,6 @@ abstract class MainAPI {
open var mainUrl = "NONE" open var mainUrl = "NONE"
open var storedCredentials: String? = null open var storedCredentials: String? = null
open var canBeOverridden: Boolean = true 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 //open val uniqueId : Int by lazy { this.name.hashCode() } // in case of duplicate providers you can have a shared id

View file

@ -509,8 +509,11 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
val settingsForProvider = SettingsJson() val settingsForProvider = SettingsJson()
settingsForProvider.enableAdult = settingsManager.getBoolean(getString(R.string.enable_nsfw_on_providers_key), false) settingsForProvider.enableAdult = settingsManager.getBoolean(getString(R.string.enable_nsfw_on_providers_key), false)
MainAPI.settingsForProvider = settingsForProvider
ioSafe { ioSafe {
initAll(settingsForProvider) initAll()
// No duplicates (which can happen by registerMainAPI) // No duplicates (which can happen by registerMainAPI)
apis = allProviders.distinctBy { it } apis = allProviders.distinctBy { it }
} }