package audio.funkwhale.ffa.fragments import android.os.Bundle import androidx.core.view.forEach import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView import audio.funkwhale.ffa.R import audio.funkwhale.ffa.adapters.RadiosAdapter import audio.funkwhale.ffa.repositories.RadiosRepository import audio.funkwhale.ffa.utils.* import kotlinx.android.synthetic.main.fragment_radios.* import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch class RadiosFragment : OtterFragment() { override val viewRes = R.layout.fragment_radios override val recycler: RecyclerView get() = radios override val alwaysRefresh = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) adapter = RadiosAdapter(context, lifecycleScope, RadioClickListener()) repository = RadiosRepository(context) } inner class RadioClickListener : RadiosAdapter.OnRadioClickListener { override fun onClick(holder: RadiosAdapter.ViewHolder, radio: Radio) { holder.spin() recycler.forEach { it.isEnabled = false it.isClickable = false } CommandBus.send(Command.PlayRadio(radio)) lifecycleScope.launch(Main) { EventBus.get().collect { message -> when (message) { is Event.RadioStarted -> if (radios != null) { recycler.forEach { it.isEnabled = true it.isClickable = true } } } } } } } }