Add error handling to device name updating

This fixes a crash
This commit is contained in:
Jarne Demeulemeester 2022-07-09 13:57:25 +02:00
parent e3d049156c
commit 6bb784b2fe
No known key found for this signature in database
GPG key ID: 65C6006F2032DD14
3 changed files with 20 additions and 8 deletions

View file

@ -76,4 +76,6 @@ interface JellyfinRepository {
suspend fun getIntros(itemId: UUID): List<BaseItemDto> suspend fun getIntros(itemId: UUID): List<BaseItemDto>
fun getBaseUrl(): String fun getBaseUrl(): String
suspend fun updateDeviceName(name: String)
} }

View file

@ -288,4 +288,12 @@ class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRep
} }
override fun getBaseUrl() = jellyfinApi.api.baseUrl.orEmpty() override fun getBaseUrl() = jellyfinApi.api.baseUrl.orEmpty()
override suspend fun updateDeviceName(name: String) {
jellyfinApi.jellyfin.deviceInfo?.id?.let { id ->
withContext(Dispatchers.IO) {
jellyfinApi.devicesApi.updateDeviceOptions(id, DeviceOptionsDto(0, customName = name))
}
}
}
} }

View file

@ -3,21 +3,23 @@ package dev.jdtech.jellyfin.viewmodels
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.api.JellyfinApi import dev.jdtech.jellyfin.repository.JellyfinRepository
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.jellyfin.sdk.model.api.DeviceOptionsDto import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
internal class SettingsDeviceViewModel @Inject internal constructor( internal class SettingsDeviceViewModel
private val api: JellyfinApi @Inject internal constructor(
private val jellyfinRepository: JellyfinRepository,
) : ViewModel() { ) : ViewModel() {
fun updateDeviceName(name: String) { fun updateDeviceName(name: String) {
api.jellyfin.deviceInfo?.id?.let { id -> viewModelScope.launch {
viewModelScope.launch(IO) { try {
api.devicesApi.updateDeviceOptions(id, DeviceOptionsDto(0, customName = name)) jellyfinRepository.updateDeviceName(name)
} catch (e: Exception) {
Timber.e("Could not update device name")
} }
} }
} }