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
|
package dev.jdtech.jellyfin.di
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
import dagger.hilt.InstallIn
|
import dagger.hilt.InstallIn
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
|
||||||
import dagger.hilt.components.SingletonComponent
|
import dagger.hilt.components.SingletonComponent
|
||||||
import dev.jdtech.jellyfin.api.JellyfinApi
|
import dev.jdtech.jellyfin.api.JellyfinApi
|
||||||
import dev.jdtech.jellyfin.repository.JellyfinRepository
|
import dev.jdtech.jellyfin.repository.JellyfinRepository
|
||||||
|
@ -16,8 +14,9 @@ import javax.inject.Singleton
|
||||||
object RepositoryModule {
|
object RepositoryModule {
|
||||||
@Singleton
|
@Singleton
|
||||||
@Provides
|
@Provides
|
||||||
fun provideJellyfinRepository(@ApplicationContext application: Context): JellyfinRepository {
|
fun provideJellyfinRepository(
|
||||||
val jellyfinApi = JellyfinApi.getInstance(application, "")
|
jellyfinApi: JellyfinApi
|
||||||
|
): JellyfinRepository {
|
||||||
return JellyfinRepositoryImpl(jellyfinApi)
|
return JellyfinRepositoryImpl(jellyfinApi)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package dev.jdtech.jellyfin.viewmodels
|
package dev.jdtech.jellyfin.viewmodels
|
||||||
|
|
||||||
import android.app.Application
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
|
@ -19,7 +18,7 @@ import javax.inject.Inject
|
||||||
class AddServerViewModel
|
class AddServerViewModel
|
||||||
@Inject
|
@Inject
|
||||||
constructor(
|
constructor(
|
||||||
private val application: Application,
|
private val jellyfinApi: JellyfinApi,
|
||||||
private val database: ServerDatabaseDao
|
private val database: ServerDatabaseDao
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
|
@ -39,7 +38,10 @@ constructor(
|
||||||
_error.value = null
|
_error.value = null
|
||||||
|
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val jellyfinApi = JellyfinApi.newInstance(application, baseUrl)
|
jellyfinApi.apply {
|
||||||
|
api.baseUrl = baseUrl
|
||||||
|
api.accessToken = null
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
val publicSystemInfo by jellyfinApi.systemApi.getPublicSystemInfo()
|
val publicSystemInfo by jellyfinApi.systemApi.getPublicSystemInfo()
|
||||||
Timber.d("Remote server: ${publicSystemInfo.id}")
|
Timber.d("Remote server: ${publicSystemInfo.id}")
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package dev.jdtech.jellyfin.viewmodels
|
package dev.jdtech.jellyfin.viewmodels
|
||||||
|
|
||||||
import android.app.Application
|
|
||||||
import androidx.lifecycle.*
|
import androidx.lifecycle.*
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import dev.jdtech.jellyfin.api.JellyfinApi
|
import dev.jdtech.jellyfin.api.JellyfinApi
|
||||||
|
@ -18,11 +17,9 @@ import javax.inject.Inject
|
||||||
class LoginViewModel
|
class LoginViewModel
|
||||||
@Inject
|
@Inject
|
||||||
constructor(
|
constructor(
|
||||||
application: Application,
|
private val jellyfinApi: JellyfinApi,
|
||||||
private val database: ServerDatabaseDao
|
private val database: ServerDatabaseDao
|
||||||
) : ViewModel() {
|
) : 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>()
|
private val _error = MutableLiveData<String>()
|
||||||
val error: LiveData<String> = _error
|
val error: LiveData<String> = _error
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package dev.jdtech.jellyfin.viewmodels
|
package dev.jdtech.jellyfin.viewmodels
|
||||||
|
|
||||||
import android.app.Application
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
|
@ -19,7 +18,7 @@ import javax.inject.Inject
|
||||||
class ServerSelectViewModel
|
class ServerSelectViewModel
|
||||||
@Inject
|
@Inject
|
||||||
constructor(
|
constructor(
|
||||||
private val application: Application,
|
private val jellyfinApi: JellyfinApi,
|
||||||
private val database: ServerDatabaseDao,
|
private val database: ServerDatabaseDao,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
|
@ -43,7 +42,8 @@ constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun connectToServer(server: Server) {
|
fun connectToServer(server: Server) {
|
||||||
JellyfinApi.newInstance(application, server.address).apply {
|
jellyfinApi.apply {
|
||||||
|
api.baseUrl = server.address
|
||||||
api.accessToken = server.accessToken
|
api.accessToken = server.accessToken
|
||||||
userId = UUID.fromString(server.userId)
|
userId = UUID.fromString(server.userId)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue