diff --git a/app/build.gradle b/app/build.gradle index 49bf64cf..0d8dfc1d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,6 +20,7 @@ android { release { minifyEnabled true shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 00000000..ba874020 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,31 @@ +-dontwarn +-ignorewarnings + +# RetroFit +-dontwarn retrofit.** +-keep class retrofit.** { *; } +-keepattributes Signature +-keepattributes Exceptions + +# Glide +-keep public class * implements com.bumptech.glide.module.GlideModule +-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { + **[] $VALUES; + public *; +} + +# ButterKnife +-keep class butterknife.** { *; } +-dontwarn butterknife.internal.** +-keep class **$$ViewBinder { *; } +-keepclasseswithmembernames class * { + @butterknife.* ; +} +-keepclasseswithmembernames class * { + @butterknife.* ; +} + +-keep class !android.support.v7.internal.view.menu.**,** {*;} + +# Jellyfin API models +-keepclasseswithmembers class org.jellyfin.apiclient.model.**.* { *; } \ No newline at end of file diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/LoginActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/LoginActivity.java index c284eaf2..df79c117 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/LoginActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/LoginActivity.java @@ -11,10 +11,10 @@ import android.widget.EditText; import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; -import com.kabouzeid.appthemehelper.ThemeStore; import com.dkanada.gramophone.App; import com.dkanada.gramophone.R; import com.dkanada.gramophone.ui.activities.base.AbsBaseActivity; +import com.kabouzeid.appthemehelper.ThemeStore; import org.jellyfin.apiclient.interaction.AndroidCredentialProvider; import org.jellyfin.apiclient.interaction.ConnectionResult; @@ -24,11 +24,14 @@ import org.jellyfin.apiclient.interaction.connectionmanager.ConnectionManager; import org.jellyfin.apiclient.interaction.http.IAsyncHttpClient; import org.jellyfin.apiclient.logging.AndroidLogger; import org.jellyfin.apiclient.model.apiclient.ServerCredentials; +import org.jellyfin.apiclient.model.apiclient.ServerInfo; import org.jellyfin.apiclient.model.logging.ILogger; import org.jellyfin.apiclient.model.serialization.GsonJsonSerializer; import org.jellyfin.apiclient.model.serialization.IJsonSerializer; import org.jellyfin.apiclient.model.users.AuthenticationResult; +import java.util.List; + import butterknife.BindView; import butterknife.ButterKnife; @@ -99,7 +102,13 @@ public class LoginActivity extends AbsBaseActivity implements View.OnClickListen public void onResponse(ConnectionResult result) { App.setApiClient(result.getApiClient()); ServerCredentials serverCredentials = new ServerCredentials(); - serverCredentials.AddOrUpdateServer(result.getServers().get(0)); + List servers = result.getServers(); + + if (servers.size() < 1) { + return; + } + + serverCredentials.AddOrUpdateServer(servers.get(0)); App.getApiClient().AuthenticateUserAsync(username.getText().toString(), password.getText().toString(), new Response() { @Override public void onResponse(AuthenticationResult result) {