Dependency injection for JellyfinApi
This commit is contained in:
parent
f7ef7736ac
commit
96a9de3e0d
5 changed files with 32 additions and 14 deletions
20
app/src/main/java/dev/jdtech/jellyfin/di/ApiModule.kt
Normal file
20
app/src/main/java/dev/jdtech/jellyfin/di/ApiModule.kt
Normal file
|
@ -0,0 +1,20 @@
|
|||
package dev.jdtech.jellyfin.di
|
||||
|
||||
import android.content.Context
|
||||
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 javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object ApiModule {
|
||||
@Singleton
|
||||
@Provides
|
||||
fun provideJellyfinApi(@ApplicationContext application: Context): JellyfinApi {
|
||||
return JellyfinApi.getInstance(application, "")
|
||||
}
|
||||
}
|
|
@ -1,10 +1,8 @@
|
|||
package dev.jdtech.jellyfin.di
|
||||
|
||||
import android.content.Context
|
||||
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.repository.JellyfinRepository
|
||||
|
@ -16,8 +14,9 @@ import javax.inject.Singleton
|
|||
object RepositoryModule {
|
||||
@Singleton
|
||||
@Provides
|
||||
fun provideJellyfinRepository(@ApplicationContext application: Context): JellyfinRepository {
|
||||
val jellyfinApi = JellyfinApi.getInstance(application, "")
|
||||
fun provideJellyfinRepository(
|
||||
jellyfinApi: JellyfinApi
|
||||
): JellyfinRepository {
|
||||
return JellyfinRepositoryImpl(jellyfinApi)
|
||||
}
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package dev.jdtech.jellyfin.viewmodels
|
||||
|
||||
import android.app.Application
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
|
@ -19,7 +18,7 @@ import javax.inject.Inject
|
|||
class AddServerViewModel
|
||||
@Inject
|
||||
constructor(
|
||||
private val application: Application,
|
||||
private val jellyfinApi: JellyfinApi,
|
||||
private val database: ServerDatabaseDao
|
||||
) : ViewModel() {
|
||||
|
||||
|
@ -39,7 +38,10 @@ constructor(
|
|||
_error.value = null
|
||||
|
||||
viewModelScope.launch {
|
||||
val jellyfinApi = JellyfinApi.newInstance(application, baseUrl)
|
||||
jellyfinApi.apply {
|
||||
api.baseUrl = baseUrl
|
||||
api.accessToken = null
|
||||
}
|
||||
try {
|
||||
val publicSystemInfo by jellyfinApi.systemApi.getPublicSystemInfo()
|
||||
Timber.d("Remote server: ${publicSystemInfo.id}")
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package dev.jdtech.jellyfin.viewmodels
|
||||
|
||||
import android.app.Application
|
||||
import androidx.lifecycle.*
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import dev.jdtech.jellyfin.api.JellyfinApi
|
||||
|
@ -18,11 +17,9 @@ import javax.inject.Inject
|
|||
class LoginViewModel
|
||||
@Inject
|
||||
constructor(
|
||||
application: Application,
|
||||
private val jellyfinApi: JellyfinApi,
|
||||
private val database: ServerDatabaseDao
|
||||
) : ViewModel() {
|
||||
// BaseUrl can be empty string because we want to get the existing instance.
|
||||
private val jellyfinApi = JellyfinApi.getInstance(application, "")
|
||||
|
||||
private val _error = MutableLiveData<String>()
|
||||
val error: LiveData<String> = _error
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package dev.jdtech.jellyfin.viewmodels
|
||||
|
||||
import android.app.Application
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
|
@ -19,7 +18,7 @@ import javax.inject.Inject
|
|||
class ServerSelectViewModel
|
||||
@Inject
|
||||
constructor(
|
||||
private val application: Application,
|
||||
private val jellyfinApi: JellyfinApi,
|
||||
private val database: ServerDatabaseDao,
|
||||
) : ViewModel() {
|
||||
|
||||
|
@ -43,7 +42,8 @@ constructor(
|
|||
}
|
||||
|
||||
fun connectToServer(server: Server) {
|
||||
JellyfinApi.newInstance(application, server.address).apply {
|
||||
jellyfinApi.apply {
|
||||
api.baseUrl = server.address
|
||||
api.accessToken = server.accessToken
|
||||
userId = UUID.fromString(server.userId)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue