From 8b58691246ddea3cb775e2091ce85dc3252206fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Garc=C3=ADa=20Amor?= Date: Sat, 7 Apr 2018 17:23:23 +0200 Subject: [PATCH 1/6] Default server settings removed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now when you configure a new server connection the input boxes will appear clean instead of with default garbage. Signed-off-by: Óscar García Amor --- .../ultrasonic/fragment/ServerSettingsFragment.java | 10 +++++----- ultrasonic/src/main/res/xml/server_settings.xml | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/ServerSettingsFragment.java b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/ServerSettingsFragment.java index 536e6fc4..ccc01852 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/ServerSettingsFragment.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/ServerSettingsFragment.java @@ -193,20 +193,20 @@ public class ServerSettingsFragment extends PreferenceFragment private void updatePassword() { serverPasswordPref.setText(sharedPreferences - .getString(Constants.PREFERENCES_KEY_PASSWORD + serverId, "***")); - serverPasswordPref.setSummary("***"); + .getString(Constants.PREFERENCES_KEY_PASSWORD + serverId, + "")); } private void updateUsername() { serverUsernamePref.setText(sharedPreferences .getString(Constants.PREFERENCES_KEY_USERNAME + serverId, - getString(R.string.settings_server_username))); + "")); } private void updateUrl() { final String serverUrl = sharedPreferences .getString(Constants.PREFERENCES_KEY_SERVER_URL + serverId, - getString(R.string.settings_server_address_unset)); + "http://"); serverUrlPref.setText(serverUrl); serverUrlPref.setSummary(serverUrl); } @@ -214,7 +214,7 @@ public class ServerSettingsFragment extends PreferenceFragment private void updateName() { final String serverName = sharedPreferences .getString(Constants.PREFERENCES_KEY_SERVER_NAME + serverId, - getString(R.string.settings_server_unused)); + ""); serverNamePref.setText(serverName); serverNamePref.setSummary(serverName); } diff --git a/ultrasonic/src/main/res/xml/server_settings.xml b/ultrasonic/src/main/res/xml/server_settings.xml index 46ea55dd..6990d52a 100644 --- a/ultrasonic/src/main/res/xml/server_settings.xml +++ b/ultrasonic/src/main/res/xml/server_settings.xml @@ -29,7 +29,6 @@ android:key="@string/settings.server_password" android:persistent="false" android:inputType="textPassword" - android:summary="***" android:title="@string/settings.server_password" /> Date: Tue, 15 May 2018 21:58:33 +0200 Subject: [PATCH 2/6] Update Jackson to 2.9.5 version. Signed-off-by: Yahor Berdnikau --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 69b58c79..59c36f61 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -19,7 +19,7 @@ ext.versions = [ kotlin : "1.2.31", retrofit : "2.4.0", - jackson : "2.9.0", + jackson : "2.9.5", okhttp : "3.10.0", semver : "1.0.0", twitterSerial : "0.1.6", From 1c7e5bb0f236dba0e8d476130b846a35208a3404 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 15 May 2018 22:04:09 +0200 Subject: [PATCH 3/6] Support json with UTF-8 bom in VersionInterceptor. Previously it was peeking at response body and put it into intermediate string that later used in json parsing. This preserves bom character and leads to parse fail. Now it passes peek body input stream to json parser that handles bom internally. Signed-off-by: Yahor Berdnikau --- .../subsonic/interceptors/VersionInterceptorTest.kt | 10 ++++++++++ .../integrationTest/resources/ping_ok_utf8_bom.json | 4 ++++ .../api/subsonic/interceptors/VersionInterceptor.kt | 3 +-- 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 subsonic-api/src/integrationTest/resources/ping_ok_utf8_bom.json diff --git a/subsonic-api/src/integrationTest/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/VersionInterceptorTest.kt b/subsonic-api/src/integrationTest/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/VersionInterceptorTest.kt index 9b543fe9..3c1eccb4 100644 --- a/subsonic-api/src/integrationTest/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/VersionInterceptorTest.kt +++ b/subsonic-api/src/integrationTest/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/VersionInterceptorTest.kt @@ -44,6 +44,16 @@ class VersionInterceptorTest : BaseInterceptorTest() { .protocolVersion `should equal` SubsonicAPIVersions.V1_13_0 } + @Test + fun `Should update version from response with utf-8 bom`() { + mockWebServerRule.enqueueResponse("ping_ok_utf8_bom.json") + + client.newCall(createRequest {}).execute() + + (interceptor as VersionInterceptor) + .protocolVersion `should equal` SubsonicAPIVersions.V1_16_0 + } + @Test fun `Should not update version if response json doesn't contain version`() { mockWebServerRule.enqueueResponse("non_subsonic_response.json") diff --git a/subsonic-api/src/integrationTest/resources/ping_ok_utf8_bom.json b/subsonic-api/src/integrationTest/resources/ping_ok_utf8_bom.json new file mode 100644 index 00000000..e73dbbe6 --- /dev/null +++ b/subsonic-api/src/integrationTest/resources/ping_ok_utf8_bom.json @@ -0,0 +1,4 @@ +{"subsonic-response":{ + "status": "ok", + "version": "1.16.0" +}} \ No newline at end of file diff --git a/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/VersionInterceptor.kt b/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/VersionInterceptor.kt index ae700f5a..e217c46b 100644 --- a/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/VersionInterceptor.kt +++ b/subsonic-api/src/main/kotlin/org/moire/ultrasonic/api/subsonic/interceptors/VersionInterceptor.kt @@ -48,8 +48,7 @@ internal class VersionInterceptor( } private fun tryUpdateProtocolVersion(response: Response) { - val content = response.peekBody(DEFAULT_PEEK_BYTE_COUNT) - .byteStream().bufferedReader().readText() + val content = response.peekBody(DEFAULT_PEEK_BYTE_COUNT).byteStream() try { val jsonReader = jsonFactory.createParser(content) From c55ca02865b9675a8bbbafe83d7575d206eb18d1 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 12 Jun 2018 21:53:06 +0200 Subject: [PATCH 4/6] Fix f-droid can't build new app version. F-Droid has a strict limitation (:disappointed:) that version code and version name should be in the app build.gradle. Signed-off-by: Yahor Berdnikau --- dependencies.gradle | 3 --- ultrasonic/build.gradle | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 59c36f61..ce6e4309 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,7 +1,4 @@ ext.versions = [ - versionCode : 67, - versionName : "2.4.0", - minSdk : 14, targetSdk : 22, compileSdk : 27, diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index c2912a95..d3c61d01 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -8,8 +8,8 @@ android { defaultConfig { applicationId "org.moire.ultrasonic" - versionCode versions.versionCode - versionName versions.versionName + versionCode 67 + versionName "2.4.0" minSdkVersion versions.minSdk targetSdkVersion versions.targetSdk From 91b5941c7cc7f6f2298e6ae65cf3be2fe9eccd5b Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 12 Jun 2018 22:29:19 +0200 Subject: [PATCH 5/6] Fix bookmark doesn't restore saved song position. Signed-off-by: Yahor Berdnikau --- .../java/org/moire/ultrasonic/util/Util.java | 43 ++++++------------- 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java index b1d12eac..90620e00 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Util.java @@ -21,11 +21,7 @@ package org.moire.ultrasonic.util; import android.app.Activity; import android.app.AlertDialog; import android.app.PendingIntent; -import android.content.ComponentName; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; +import android.content.*; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.TypedArray; @@ -49,33 +45,19 @@ import android.view.Gravity; import android.view.KeyEvent; import android.widget.RemoteViews; import android.widget.Toast; - import org.moire.ultrasonic.R; import org.moire.ultrasonic.activity.DownloadActivity; import org.moire.ultrasonic.activity.MainActivity; import org.moire.ultrasonic.activity.SettingsActivity; -import org.moire.ultrasonic.domain.Bookmark; -import org.moire.ultrasonic.domain.MusicDirectory; +import org.moire.ultrasonic.domain.*; import org.moire.ultrasonic.domain.MusicDirectory.Entry; -import org.moire.ultrasonic.domain.PlayerState; -import org.moire.ultrasonic.domain.RepeatMode; -import org.moire.ultrasonic.domain.SearchResult; -import org.moire.ultrasonic.domain.Version; import org.moire.ultrasonic.receiver.MediaButtonIntentReceiver; import org.moire.ultrasonic.service.DownloadFile; import org.moire.ultrasonic.service.DownloadService; import org.moire.ultrasonic.service.DownloadServiceImpl; import org.moire.ultrasonic.service.MusicServiceFactory; -import java.io.ByteArrayOutputStream; -import java.io.Closeable; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.security.MessageDigest; import java.text.DecimalFormat; import java.text.NumberFormat; @@ -928,17 +910,18 @@ public class Util extends DownloadActivity return musicDirectory; } - public static MusicDirectory getSongsFromBookmarks(Iterable bookmarks) - { - MusicDirectory musicDirectory = new MusicDirectory(); + public static MusicDirectory getSongsFromBookmarks(Iterable bookmarks) { + MusicDirectory musicDirectory = new MusicDirectory(); - for (Bookmark bookmark : bookmarks) - { - musicDirectory.addChild(bookmark.getEntry()); - } + MusicDirectory.Entry song; + for (Bookmark bookmark : bookmarks) { + song = bookmark.getEntry(); + song.setBookmarkPosition(bookmark.getPosition()); + musicDirectory.addChild(song); + } - return musicDirectory; - } + return musicDirectory; + } /** *

Broadcasts the given song info as the new song being played.

From 24a36e641c25e4a6673d69674fb122f134cb913e Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 12 Jun 2018 22:36:39 +0200 Subject: [PATCH 6/6] Bump version to 2.5.0 for next release. Signed-off-by: Yahor Berdnikau --- ultrasonic/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index d3c61d01..7cd7c804 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -8,8 +8,8 @@ android { defaultConfig { applicationId "org.moire.ultrasonic" - versionCode 67 - versionName "2.4.0" + versionCode 68 + versionName "2.5.0" minSdkVersion versions.minSdk targetSdkVersion versions.targetSdk