From 41023282e8a323d148f07d68d66d0ebde602e30e Mon Sep 17 00:00:00 2001 From: Nite Date: Mon, 31 May 2021 13:38:53 +0200 Subject: [PATCH] Fixed detekt Fixed code duplication Added more info to the Connection Test dialog for the user --- .../ultrasonic/fragment/EditServerFragment.kt | 60 ++++++++++++------- ultrasonic/src/main/res/values/strings.xml | 1 + 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/EditServerFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/EditServerFragment.kt index f4b6d757..7f56979b 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/EditServerFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/EditServerFragment.kt @@ -21,14 +21,17 @@ import org.moire.ultrasonic.R import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient import org.moire.ultrasonic.api.subsonic.SubsonicAPIVersions import org.moire.ultrasonic.api.subsonic.SubsonicClientConfiguration +import org.moire.ultrasonic.api.subsonic.response.SubsonicResponse import org.moire.ultrasonic.data.ActiveServerProvider import org.moire.ultrasonic.data.ServerSetting import org.moire.ultrasonic.service.ApiCallResponseChecker import org.moire.ultrasonic.service.MusicServiceFactory +import org.moire.ultrasonic.service.SubsonicRESTException import org.moire.ultrasonic.util.Constants import org.moire.ultrasonic.util.ErrorDialog import org.moire.ultrasonic.util.ModalBackgroundTask import org.moire.ultrasonic.util.Util +import retrofit2.Response import timber.log.Timber /** @@ -309,10 +312,10 @@ class EditServerFragment : Fragment(), OnBackPressedHandler { fun getProgress(): String { return String.format( """ - |%s - ${activity.resources.getString(R.string.button_bar_chat)} - |%s - ${activity.resources.getString(R.string.button_bar_bookmarks)} - |%s - ${activity.resources.getString(R.string.button_bar_shares)} - |%s - ${activity.resources.getString(R.string.button_bar_podcasts)} + |%s - ${resources.getString(R.string.button_bar_chat)} + |%s - ${resources.getString(R.string.button_bar_bookmarks)} + |%s - ${resources.getString(R.string.button_bar_shares)} + |%s - ${resources.getString(R.string.button_bar_podcasts)} """.trimMargin(), boolToMark(currentServerSetting!!.chatSupport), boolToMark(currentServerSetting!!.bookmarkSupport), @@ -358,38 +361,26 @@ class EditServerFragment : Fragment(), OnBackPressedHandler { pingResponse = subsonicApiClient.api.ping().execute() ApiCallResponseChecker.checkResponseSuccessful(pingResponse) - currentServerSetting!!.chatSupport = try { + currentServerSetting!!.chatSupport = isServerFunctionAvailable { subsonicApiClient.api.getChatMessages().execute() - true - } catch (e: IOException) { - false } updateProgress(getProgress()) - currentServerSetting!!.bookmarkSupport = try { + currentServerSetting!!.bookmarkSupport = isServerFunctionAvailable { subsonicApiClient.api.getBookmarks().execute() - true - } catch (e: IOException) { - false } updateProgress(getProgress()) - currentServerSetting!!.shareSupport = try { + currentServerSetting!!.shareSupport = isServerFunctionAvailable { subsonicApiClient.api.getShares().execute() - true - } catch (e: IOException) { - false } updateProgress(getProgress()) - currentServerSetting!!.podcastSupport = try { + currentServerSetting!!.podcastSupport = isServerFunctionAvailable { subsonicApiClient.api.getPodcasts().execute() - true - } catch (e: IOException) { - false } updateProgress(getProgress()) @@ -398,17 +389,30 @@ class EditServerFragment : Fragment(), OnBackPressedHandler { ApiCallResponseChecker.checkResponseSuccessful(licenseResponse) if (!licenseResponse.body()!!.license.valid) { return getProgress() + "\n" + - activity.resources.getString(R.string.settings_testing_unlicensed) + resources.getString(R.string.settings_testing_unlicensed) } return getProgress() } override fun done(responseString: String) { + var dialogText = responseString + if ( arrayOf(currentServerSetting!!.chatSupport, + currentServerSetting!!.bookmarkSupport, + currentServerSetting!!.shareSupport, + currentServerSetting!!.podcastSupport).any { x -> x == false } + ) { + dialogText = String.format( + "%s\n\n%s", + responseString, + resources.getString(R.string.server_editor_disabled_feature) + ) + } + Util.showDialog( activity, android.R.drawable.ic_dialog_info, R.string.settings_testing_ok, - responseString + dialogText ) } @@ -428,6 +432,18 @@ class EditServerFragment : Fragment(), OnBackPressedHandler { task.execute() } + private fun isServerFunctionAvailable(function: () -> Response): Boolean { + return try { + val response = function() + ApiCallResponseChecker.checkResponseSuccessful(response) + true + } catch (_: IOException) { + false + } catch (_: SubsonicRESTException) { + false + } + } + /** * Finishes the Activity, after confirmation from the user if needed */ diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml index 7ab179e0..280d0352 100644 --- a/ultrasonic/src/main/res/values/strings.xml +++ b/ultrasonic/src/main/res/values/strings.xml @@ -462,6 +462,7 @@ Move down Authentication Advanced settings + One or more features were disabled because the server doesn\'t support them.\nYou can run this test again anytime. 1 song