diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt index 12dd430d..b94a2b97 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/AddServerFragment.kt @@ -30,10 +30,11 @@ class AddServerFragment : Fragment() { binding.buttonConnect.setOnClickListener { val serverAddress = binding.editTextServerAddress.text.toString() if (serverAddress.isNotBlank()) { - viewModel.checkServer(serverAddress) + viewModel.checkServer(serverAddress, resources) binding.progressCircular.visibility = View.VISIBLE + binding.editTextServerAddressLayout.error = "" } else { - binding.editTextServerAddressLayout.error = resources.getString(R.string.add_server_empty_error) + binding.editTextServerAddressLayout.error = resources.getString(R.string.add_server_error_empty_address) } } diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt index d7afea36..4fa9377e 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/AddServerViewModel.kt @@ -1,5 +1,6 @@ package dev.jdtech.jellyfin.viewmodels +import android.content.res.Resources import android.widget.Toast import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData @@ -7,6 +8,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import dev.jdtech.jellyfin.BaseApplication +import dev.jdtech.jellyfin.R import dev.jdtech.jellyfin.api.JellyfinApi import dev.jdtech.jellyfin.database.Server import dev.jdtech.jellyfin.database.ServerDatabaseDao @@ -43,7 +45,7 @@ constructor( * - Connect to server and check if it is a Jellyfin server * - Check if server is not already in Database */ - fun checkServer(inputValue: String) { + fun checkServer(inputValue: String, resources: Resources) { _error.value = null viewModelScope.launch { @@ -56,7 +58,7 @@ constructor( // Check if any servers have been found if (recommended.toList().isNullOrEmpty()) { - throw Exception("Server not found") + throw Exception(resources.getString(R.string.add_server_error_not_found)) } // Create separate flow of great, good and ok servers. @@ -69,7 +71,7 @@ constructor( val recommendedServer = if (greatServers.toList().isNotEmpty()) { greatServers.first() } else if (goodServers.toList().isNotEmpty()) { - val issuesString = createIssuesString(goodServers.first()) + val issuesString = createIssuesString(goodServers.first(), resources) Toast.makeText( application, issuesString, @@ -78,7 +80,7 @@ constructor( goodServers.first() } else { val okServer = okServers.first() - val issuesString = createIssuesString(okServer) + val issuesString = createIssuesString(okServer, resources) throw Exception(issuesString) } @@ -90,7 +92,7 @@ constructor( Timber.d("Remote server: ${recommendedServer.systemInfo.getOrNull()?.id}") if (serverAlreadyInDatabase(recommendedServer.systemInfo.getOrNull()?.id)) { - _error.value = "Server already added" + _error.value = resources.getString(R.string.add_server_error_already_added) _navigateToLogin.value = false } else { _error.value = null @@ -110,28 +112,26 @@ constructor( * @param server The server with issues * @return A presentable string of issues separated with \n */ - private fun createIssuesString(server: RecommendedServerInfo): String { - val issues = mutableListOf() - server.issues.forEach { + private fun createIssuesString(server: RecommendedServerInfo, resources: Resources): String { + return server.issues.joinToString("\n") { when (it) { is RecommendedServerIssue.OutdatedServerVersion -> { - issues.add("Server version outdated: ${it.version} \nPlease update your server") + String.format(resources.getString(R.string.add_server_error_outdated), it.version) } is RecommendedServerIssue.InvalidProductName -> { - issues.add("Not a Jellyfin server: ${it.productName}") + String.format(resources.getString(R.string.add_server_error_not_jellyfin), it.productName) } is RecommendedServerIssue.UnsupportedServerVersion -> { - issues.add("Unsupported server version: ${it.version} \nPlease update your server") + String.format(resources.getString(R.string.add_server_error_version), it.version) } is RecommendedServerIssue.SlowResponse -> { - issues.add("Server is too slow to respond: ${it.responseTime}") + String.format(resources.getString(R.string.add_server_error_slow), it.responseTime) } else -> { - issues.add("Unknown error") + resources.getString(R.string.unknown_error) } } } - return issues.joinToString("\n") } /** diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 26434c19..40f3f773 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -3,6 +3,13 @@ Neoficiální nativní Jellyfin aplikace Jellyfin baner Přidat server + Zastaralá verze serveru: %1$s. Prosím aktualizujte Váš server + Nejedná se o Jellyfin server: %1$s + Nepodporovaná verze serveru: %1$s. Prosím aktualizujte Váš server + Serveru trvalo příliš dlouho odpovědět: %1$s + Tento server už je přidán + Prázdná adresa serveru + Server not found Přihlásit Vybrat server Adresa serveru diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 09ea82de..62e1a922 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,13 @@ Third-party native Jellyfin app Jellyfin banner Add server + Server version outdated: %1$s. Please update your server + Not a Jellyfin server: %1$s + Unsupported server version: %1$s. Please update your server + Server is too slow to respond: %1$s + Server already added + Empty server address + Server not found Login Select server Server address