Merge pull request #202 from ultrasonic/develop

New 2.5.0 release.
This commit is contained in:
Óscar García Amor 2018-06-14 14:56:33 +02:00 committed by GitHub
commit b3ac85d833
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 36 additions and 44 deletions

View File

@ -1,7 +1,4 @@
ext.versions = [ ext.versions = [
versionCode : 67,
versionName : "2.4.0",
minSdk : 14, minSdk : 14,
targetSdk : 22, targetSdk : 22,
compileSdk : 27, compileSdk : 27,
@ -19,7 +16,7 @@ ext.versions = [
kotlin : "1.2.31", kotlin : "1.2.31",
retrofit : "2.4.0", retrofit : "2.4.0",
jackson : "2.9.0", jackson : "2.9.5",
okhttp : "3.10.0", okhttp : "3.10.0",
semver : "1.0.0", semver : "1.0.0",
twitterSerial : "0.1.6", twitterSerial : "0.1.6",

View File

@ -44,6 +44,16 @@ class VersionInterceptorTest : BaseInterceptorTest() {
.protocolVersion `should equal` SubsonicAPIVersions.V1_13_0 .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 @Test
fun `Should not update version if response json doesn't contain version`() { fun `Should not update version if response json doesn't contain version`() {
mockWebServerRule.enqueueResponse("non_subsonic_response.json") mockWebServerRule.enqueueResponse("non_subsonic_response.json")

View File

@ -0,0 +1,4 @@
{"subsonic-response":{
"status": "ok",
"version": "1.16.0"
}}

View File

@ -48,8 +48,7 @@ internal class VersionInterceptor(
} }
private fun tryUpdateProtocolVersion(response: Response) { private fun tryUpdateProtocolVersion(response: Response) {
val content = response.peekBody(DEFAULT_PEEK_BYTE_COUNT) val content = response.peekBody(DEFAULT_PEEK_BYTE_COUNT).byteStream()
.byteStream().bufferedReader().readText()
try { try {
val jsonReader = jsonFactory.createParser(content) val jsonReader = jsonFactory.createParser(content)

View File

@ -8,8 +8,8 @@ android {
defaultConfig { defaultConfig {
applicationId "org.moire.ultrasonic" applicationId "org.moire.ultrasonic"
versionCode versions.versionCode versionCode 68
versionName versions.versionName versionName "2.5.0"
minSdkVersion versions.minSdk minSdkVersion versions.minSdk
targetSdkVersion versions.targetSdk targetSdkVersion versions.targetSdk

View File

@ -193,20 +193,20 @@ public class ServerSettingsFragment extends PreferenceFragment
private void updatePassword() { private void updatePassword() {
serverPasswordPref.setText(sharedPreferences serverPasswordPref.setText(sharedPreferences
.getString(Constants.PREFERENCES_KEY_PASSWORD + serverId, "***")); .getString(Constants.PREFERENCES_KEY_PASSWORD + serverId,
serverPasswordPref.setSummary("***"); ""));
} }
private void updateUsername() { private void updateUsername() {
serverUsernamePref.setText(sharedPreferences serverUsernamePref.setText(sharedPreferences
.getString(Constants.PREFERENCES_KEY_USERNAME + serverId, .getString(Constants.PREFERENCES_KEY_USERNAME + serverId,
getString(R.string.settings_server_username))); ""));
} }
private void updateUrl() { private void updateUrl() {
final String serverUrl = sharedPreferences final String serverUrl = sharedPreferences
.getString(Constants.PREFERENCES_KEY_SERVER_URL + serverId, .getString(Constants.PREFERENCES_KEY_SERVER_URL + serverId,
getString(R.string.settings_server_address_unset)); "http://");
serverUrlPref.setText(serverUrl); serverUrlPref.setText(serverUrl);
serverUrlPref.setSummary(serverUrl); serverUrlPref.setSummary(serverUrl);
} }
@ -214,7 +214,7 @@ public class ServerSettingsFragment extends PreferenceFragment
private void updateName() { private void updateName() {
final String serverName = sharedPreferences final String serverName = sharedPreferences
.getString(Constants.PREFERENCES_KEY_SERVER_NAME + serverId, .getString(Constants.PREFERENCES_KEY_SERVER_NAME + serverId,
getString(R.string.settings_server_unused)); "");
serverNamePref.setText(serverName); serverNamePref.setText(serverName);
serverNamePref.setSummary(serverName); serverNamePref.setSummary(serverName);
} }

View File

@ -21,11 +21,7 @@ package org.moire.ultrasonic.util;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ComponentName; import android.content.*;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.TypedArray; import android.content.res.TypedArray;
@ -49,33 +45,19 @@ import android.view.Gravity;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import android.widget.Toast; import android.widget.Toast;
import org.moire.ultrasonic.R; import org.moire.ultrasonic.R;
import org.moire.ultrasonic.activity.DownloadActivity; import org.moire.ultrasonic.activity.DownloadActivity;
import org.moire.ultrasonic.activity.MainActivity; import org.moire.ultrasonic.activity.MainActivity;
import org.moire.ultrasonic.activity.SettingsActivity; import org.moire.ultrasonic.activity.SettingsActivity;
import org.moire.ultrasonic.domain.Bookmark; import org.moire.ultrasonic.domain.*;
import org.moire.ultrasonic.domain.MusicDirectory;
import org.moire.ultrasonic.domain.MusicDirectory.Entry; 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.receiver.MediaButtonIntentReceiver;
import org.moire.ultrasonic.service.DownloadFile; import org.moire.ultrasonic.service.DownloadFile;
import org.moire.ultrasonic.service.DownloadService; import org.moire.ultrasonic.service.DownloadService;
import org.moire.ultrasonic.service.DownloadServiceImpl; import org.moire.ultrasonic.service.DownloadServiceImpl;
import org.moire.ultrasonic.service.MusicServiceFactory; import org.moire.ultrasonic.service.MusicServiceFactory;
import java.io.ByteArrayOutputStream; import java.io.*;
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.security.MessageDigest; import java.security.MessageDigest;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.NumberFormat; import java.text.NumberFormat;
@ -928,17 +910,18 @@ public class Util extends DownloadActivity
return musicDirectory; return musicDirectory;
} }
public static MusicDirectory getSongsFromBookmarks(Iterable<Bookmark> bookmarks) public static MusicDirectory getSongsFromBookmarks(Iterable<Bookmark> bookmarks) {
{ MusicDirectory musicDirectory = new MusicDirectory();
MusicDirectory musicDirectory = new MusicDirectory();
for (Bookmark bookmark : bookmarks) MusicDirectory.Entry song;
{ for (Bookmark bookmark : bookmarks) {
musicDirectory.addChild(bookmark.getEntry()); song = bookmark.getEntry();
} song.setBookmarkPosition(bookmark.getPosition());
musicDirectory.addChild(song);
}
return musicDirectory; return musicDirectory;
} }
/** /**
* <p>Broadcasts the given song info as the new song being played.</p> * <p>Broadcasts the given song info as the new song being played.</p>

View File

@ -29,7 +29,6 @@
android:key="@string/settings.server_password" android:key="@string/settings.server_password"
android:persistent="false" android:persistent="false"
android:inputType="textPassword" android:inputType="textPassword"
android:summary="***"
android:title="@string/settings.server_password" android:title="@string/settings.server_password"
/> />
<CheckBoxPreference <CheckBoxPreference