mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 08:20:32 +05:30
Merge pull request #4152 from Isira-Seneviratne/Welcome_improvements
Improve welcome flow
This commit is contained in:
commit
7a34445ca9
@ -4,9 +4,8 @@ import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.isGone
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.get
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
@ -23,8 +22,7 @@ import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class WelcomeActivity : BaseActivity() {
|
||||
private lateinit var binding: ActivityWelcomeBinding
|
||||
private var viewModel: WelcomeModel? = null
|
||||
private val viewModel: WelcomeModel by viewModels()
|
||||
|
||||
private val restoreFilePicker =
|
||||
registerForActivityResult(ActivityResultContracts.GetContent()) { uri ->
|
||||
@ -41,27 +39,26 @@ class WelcomeActivity : BaseActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
viewModel = ViewModelProvider(this).get()
|
||||
|
||||
binding = ActivityWelcomeBinding.inflate(layoutInflater)
|
||||
val binding = ActivityWelcomeBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
// ALl the binding values are optional due to two different possible layouts (normal, landscape)
|
||||
viewModel!!.instances.observe(this) { instances ->
|
||||
viewModel.instances.observe(this) { instances ->
|
||||
binding.instancesRecycler?.layoutManager = LinearLayoutManager(this@WelcomeActivity)
|
||||
binding.instancesRecycler?.adapter = InstancesAdapter(instances, viewModel!!) { index ->
|
||||
viewModel!!.selectedInstanceIndex.value = index
|
||||
binding.instancesRecycler?.adapter = InstancesAdapter(instances, viewModel) { index ->
|
||||
viewModel.selectedInstanceIndex.value = index
|
||||
binding.okay?.alpha = 1f
|
||||
}
|
||||
binding.progress?.isGone = true
|
||||
}
|
||||
viewModel!!.fetchInstances(this)
|
||||
viewModel.fetchInstances()
|
||||
|
||||
binding.okay?.alpha = if (viewModel!!.selectedInstanceIndex.value != null) 1f else 0.5f
|
||||
binding.okay?.alpha = if (viewModel.selectedInstanceIndex.value != null) 1f else 0.5f
|
||||
binding.okay?.setOnClickListener {
|
||||
if (viewModel!!.selectedInstanceIndex.value != null) {
|
||||
if (viewModel.selectedInstanceIndex.value != null) {
|
||||
val selectedInstance =
|
||||
viewModel!!.instances.value!![viewModel!!.selectedInstanceIndex.value!!]
|
||||
viewModel.instances.value!![viewModel.selectedInstanceIndex.value!!]
|
||||
PreferenceHelper.putString(PreferenceKeys.FETCH_INSTANCE, selectedInstance.apiUrl)
|
||||
startMainActivity()
|
||||
} else {
|
||||
|
@ -1,8 +1,8 @@
|
||||
package com.github.libretube.ui.models
|
||||
|
||||
import android.content.Context
|
||||
import android.app.Application
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.github.libretube.api.InstanceHelper
|
||||
import com.github.libretube.api.obj.Instances
|
||||
@ -10,19 +10,19 @@ import com.github.libretube.extensions.toastFromMainDispatcher
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class WelcomeModel : ViewModel() {
|
||||
class WelcomeModel(private val application: Application) : AndroidViewModel(application) {
|
||||
val selectedInstanceIndex = MutableLiveData<Int>()
|
||||
|
||||
var instances = MutableLiveData<List<Instances>>()
|
||||
|
||||
fun fetchInstances(context: Context) {
|
||||
fun fetchInstances() {
|
||||
if (!instances.value.isNullOrEmpty()) return
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val instances = try {
|
||||
InstanceHelper.getInstances(context)
|
||||
InstanceHelper.getInstances(application)
|
||||
} catch (e: Exception) {
|
||||
context.applicationContext.toastFromMainDispatcher(e.message.orEmpty())
|
||||
InstanceHelper.getInstancesFallback(context)
|
||||
application.toastFromMainDispatcher(e.message.orEmpty())
|
||||
InstanceHelper.getInstancesFallback(application)
|
||||
}
|
||||
this@WelcomeModel.instances.postValue(instances)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user