AquaStream/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginAdapter.kt

68 lines
2.3 KiB
Kotlin
Raw Normal View History

2022-08-06 23:43:39 +00:00
package com.lagradost.cloudstream3.ui.settings.extensions
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
2022-08-06 23:43:39 +00:00
import androidx.recyclerview.widget.RecyclerView
import com.lagradost.cloudstream3.R
import com.lagradost.cloudstream3.plugins.PluginData
import com.lagradost.cloudstream3.plugins.PluginManager
import com.lagradost.cloudstream3.plugins.SitePlugin
import kotlinx.android.synthetic.main.repository_item.view.*
class PluginAdapter(
var plugins: List<Pair<String, SitePlugin>>,
val iconClickCallback: PluginAdapter.(repositoryUrl: String, plugin: SitePlugin, isDownloaded: Boolean) -> Unit
2022-08-06 23:43:39 +00:00
) :
RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return PluginViewHolder(
LayoutInflater.from(parent.context).inflate(R.layout.repository_item, parent, false)
)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val (repositoryUrl, plugin) = plugins[position]
2022-08-06 23:43:39 +00:00
when (holder) {
is PluginViewHolder -> {
holder.bind(repositoryUrl, plugin)
2022-08-06 23:43:39 +00:00
}
}
}
override fun getItemCount(): Int {
return plugins.size
}
private var storedPlugins: Array<PluginData> = reloadStoredPlugins()
fun reloadStoredPlugins(): Array<PluginData> {
return PluginManager.getPluginsOnline().also { storedPlugins = it }
}
inner class PluginViewHolder(itemView: View) :
RecyclerView.ViewHolder(itemView) {
fun bind(
repositoryUrl: String,
plugin: SitePlugin,
2022-08-06 23:43:39 +00:00
) {
val isDownloaded = storedPlugins.any { it.url == plugin.url }
val drawableInt = if (isDownloaded)
R.drawable.ic_baseline_delete_outline_24
else R.drawable.netflix_download
itemView.nsfw_marker?.isVisible = plugin.isAdult == true
itemView.action_button?.setImageResource(drawableInt)
2022-08-06 23:43:39 +00:00
itemView.action_button?.setOnClickListener {
iconClickCallback.invoke(this@PluginAdapter, repositoryUrl, plugin, isDownloaded)
2022-08-06 23:43:39 +00:00
}
itemView.main_text?.text = plugin.name
itemView.sub_text?.text = plugin.description
}
}
}