Remove InitializingFragment

This commit is contained in:
jarnedemeulemeester 2021-10-10 22:00:02 +02:00
parent ac7c3405da
commit 8984493bb0
No known key found for this signature in database
GPG key ID: 60884A0C1EBA43E5
7 changed files with 33 additions and 82 deletions

View file

@ -12,7 +12,7 @@ import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.databinding.ActivityMainBinding
import dev.jdtech.jellyfin.fragments.InitializingFragmentDirections
import dev.jdtech.jellyfin.fragments.HomeFragmentDirections
import dev.jdtech.jellyfin.viewmodels.MainViewModel
@AndroidEntryPoint
@ -59,18 +59,10 @@ class MainActivity : AppCompatActivity() {
viewModel.navigateToAddServer.observe(this, {
if (it) {
navController.navigate(InitializingFragmentDirections.actionInitializingFragmentToAddServerFragment3())
navController.navigate(HomeFragmentDirections.actionHomeFragmentToAddServerFragment())
viewModel.doneNavigateToAddServer()
}
})
viewModel.doneLoading.observe(this, {
if (it) {
if (navController.currentDestination!!.id == R.id.initializingFragment) {
navController.navigate(InitializingFragmentDirections.actionInitializingFragmentToNavigationHome())
}
}
})
}
override fun onSupportNavigateUp(): Boolean {

View file

@ -1,12 +1,15 @@
package dev.jdtech.jellyfin.di
import android.content.Context
import android.content.SharedPreferences
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import dev.jdtech.jellyfin.api.JellyfinApi
import dev.jdtech.jellyfin.database.ServerDatabaseDao
import java.util.*
import javax.inject.Singleton
@Module
@ -14,7 +17,23 @@ import javax.inject.Singleton
object ApiModule {
@Singleton
@Provides
fun provideJellyfinApi(@ApplicationContext application: Context): JellyfinApi {
return JellyfinApi.getInstance(application, "")
fun provideJellyfinApi(
@ApplicationContext application: Context,
sharedPreferences: SharedPreferences,
serverDatabase: ServerDatabaseDao
): JellyfinApi {
val jellyfinApi = JellyfinApi.getInstance(application, "")
val serverId = sharedPreferences.getString("selectedServer", null)
if (serverId != null) {
val server = serverDatabase.get(serverId)
jellyfinApi.apply {
api.baseUrl = server.address
api.accessToken = server.accessToken
userId = UUID.fromString(server.userId)
}
}
return jellyfinApi
}
}

View file

@ -23,6 +23,7 @@ object DatabaseModule {
"servers"
)
.fallbackToDestructiveMigration()
.allowMainThreadQueries()
.build()
.serverDatabaseDao
}

View file

@ -1,20 +0,0 @@
package dev.jdtech.jellyfin.fragments
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import dev.jdtech.jellyfin.R
class InitializingFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_initializing, container, false)
}
}

View file

@ -1,28 +1,23 @@
package dev.jdtech.jellyfin.viewmodels
import android.content.SharedPreferences
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.api.JellyfinApi
import dev.jdtech.jellyfin.database.Server
import dev.jdtech.jellyfin.database.ServerDatabaseDao
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import timber.log.Timber
import java.util.*
import javax.inject.Inject
@HiltViewModel
class MainViewModel
@Inject
constructor(
private val sharedPreferences: SharedPreferences,
private val database: ServerDatabaseDao,
private val jellyfinApi: JellyfinApi,
) : ViewModel() {
private val _doneLoading = MutableLiveData<Boolean>()
@ -40,21 +35,10 @@ constructor(
}
if (servers.isEmpty()) {
_navigateToAddServer.value = true
} else {
val serverId = sharedPreferences.getString("selectedServer", null)
val selectedServer = servers.find { server -> server.id == serverId }
Timber.d("Selected server: $selectedServer")
if (selectedServer != null) {
jellyfinApi.apply {
api.baseUrl = selectedServer.address
api.accessToken = selectedServer.accessToken
userId = UUID.fromString(selectedServer.userId)
}
Timber.d("Finish Main")
}
_doneLoading.value = true
}
_doneLoading.value = true
}
_doneLoading.value = true
}
fun doneNavigateToAddServer() {

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.InitializingFragment">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/initializing" />
</FrameLayout>

View file

@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_navigation"
app:startDestination="@+id/initializingFragment">
app:startDestination="@+id/homeFragment">
<fragment
android:id="@+id/homeFragment"
@ -34,6 +34,11 @@
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim" />
<action
android:id="@+id/action_homeFragment_to_addServerFragment"
app:destination="@id/addServerFragment"
app:popUpTo="@id/homeFragment"
app:popUpToInclusive="true" />
</fragment>
<fragment
@ -219,23 +224,7 @@
<action
android:id="@+id/action_loginFragment2_to_navigation_home"
app:destination="@id/homeFragment"
app:popUpTo="@id/initializingFragment"
app:popUpToInclusive="true" />
</fragment>
<fragment
android:id="@+id/initializingFragment"
android:name="dev.jdtech.jellyfin.fragments.InitializingFragment"
android:label="@string/initializing"
tools:layout="@layout/fragment_initializing">
<action
android:id="@+id/action_initializingFragment_to_navigation_home"
app:destination="@id/homeFragment"
app:popUpTo="@id/initializingFragment"
app:popUpToInclusive="true" />
<action
android:id="@+id/action_initializingFragment_to_addServerFragment3"
app:destination="@id/addServerFragment"
app:popUpTo="@id/initializingFragment"
app:popUpTo="@id/homeFragment"
app:popUpToInclusive="true" />
</fragment>