From 6bb784b2fe633fd886b753627f5d05562a543935 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Sat, 9 Jul 2022 13:57:25 +0200 Subject: [PATCH] Add error handling to device name updating This fixes a crash --- .../jellyfin/repository/JellyfinRepository.kt | 2 ++ .../repository/JellyfinRepositoryImpl.kt | 8 ++++++++ .../viewmodels/SettingsDeviceViewModel.kt | 18 ++++++++++-------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt b/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt index e84dd855..27493b01 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt @@ -76,4 +76,6 @@ interface JellyfinRepository { suspend fun getIntros(itemId: UUID): List fun getBaseUrl(): String + + suspend fun updateDeviceName(name: String) } \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt b/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt index c702ff8e..a3f16ac8 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt @@ -288,4 +288,12 @@ class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRep } 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)) + } + } + } } diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/SettingsDeviceViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/SettingsDeviceViewModel.kt index f9ccf4c3..b7104036 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/SettingsDeviceViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/SettingsDeviceViewModel.kt @@ -3,21 +3,23 @@ package dev.jdtech.jellyfin.viewmodels import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import dev.jdtech.jellyfin.api.JellyfinApi -import kotlinx.coroutines.Dispatchers.IO +import dev.jdtech.jellyfin.repository.JellyfinRepository import kotlinx.coroutines.launch -import org.jellyfin.sdk.model.api.DeviceOptionsDto +import timber.log.Timber import javax.inject.Inject @HiltViewModel -internal class SettingsDeviceViewModel @Inject internal constructor( - private val api: JellyfinApi +internal class SettingsDeviceViewModel +@Inject internal constructor( + private val jellyfinRepository: JellyfinRepository, ) : ViewModel() { fun updateDeviceName(name: String) { - api.jellyfin.deviceInfo?.id?.let { id -> - viewModelScope.launch(IO) { - api.devicesApi.updateDeviceOptions(id, DeviceOptionsDto(0, customName = name)) + viewModelScope.launch { + try { + jellyfinRepository.updateDeviceName(name) + } catch (e: Exception) { + Timber.e("Could not update device name") } } }