Browse Source

Fixed hanging in case of unknown fields are received in Network list request

dev
Denys Podymskyy 4 years ago
parent
commit
1ddd4b9904
3 changed files with 40 additions and 32 deletions
  1. +28
    -27
      ui/src/main/java/com/getbubblenow/android/activity/MainActivity.java
  2. +5
    -5
      ui/src/main/java/com/getbubblenow/android/model/Network.java
  3. +7
    -0
      ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java

+ 28
- 27
ui/src/main/java/com/getbubblenow/android/activity/MainActivity.java View File

@@ -1,6 +1,7 @@
package com.getbubblenow.android.activity;

import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatButton;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.MutableLiveData;
@@ -15,7 +16,6 @@ import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -67,8 +67,8 @@ public class MainActivity extends BaseActivityBubble {
private MainViewModel mainViewModel;
private TextView bubbleStatus;
private TextView titleMyBubble;
private Button connectButton;
private Button launchNewBubbleButton;
private AppCompatButton connectButton;
private AppCompatButton launchNewBubbleButton;
private ImageView imageMyBubble;
private ImageView mark;
private ImageButton accountButton;
@@ -184,6 +184,7 @@ public class MainActivity extends BaseActivityBubble {
showNetworkNotAvailableMessage();
requestBubbleStatusContinuously();
} else {
disableButtons();
showErrorDialog(statusResource.message);
}
break;
@@ -191,6 +192,13 @@ public class MainActivity extends BaseActivityBubble {
});
}

private void disableButtons() {
launchNewBubbleButton.setBackgroundDrawable(getDrawable(R.drawable.sign_in_disable));
launchNewBubbleButton.setEnabled(false);
connectButton.setBackgroundDrawable(getDrawable(R.drawable.sign_in_disable));
connectButton.setEnabled(false);
}

private boolean networkByUuidExist(final Iterable<Network> networkList, final String uuid) {
for (final Network network : networkList) {
if (uuid.equals(network.getUuid())) {
@@ -250,14 +258,7 @@ public class MainActivity extends BaseActivityBubble {
checkBubbleCurrentStatus();
break;
case ERROR:
closeLoadingDialog();
if (NO_INTERNET_CONNECTION.equals(statusResource.message)) {
showNetworkNotAvailableMessage();
} else if (LOGIN_FAILED.equals(statusResource.message)) {
Toast.makeText(this, getString(R.string.login_failed), Toast.LENGTH_LONG).show();
} else {
showErrorDialog(statusResource.message);
}
onError(statusResource);
break;
}
});
@@ -298,14 +299,7 @@ public class MainActivity extends BaseActivityBubble {
case AUTH:
break;
case ERROR:
closeLoadingDialog();
if (NO_INTERNET_CONNECTION.equals(stringStatusResource.message)) {
showNetworkNotAvailableMessage();
} else if (LOGIN_FAILED.equals(stringStatusResource.message)) {
Toast.makeText(this, getString(R.string.login_failed), Toast.LENGTH_LONG).show();
} else {
showErrorDialog(stringStatusResource.message);
}
onError(stringStatusResource);
break;
}
}
@@ -415,19 +409,26 @@ public class MainActivity extends BaseActivityBubble {
case AUTH:
break;
case ERROR:
closeLoadingDialog();
if (NO_INTERNET_CONNECTION.equals(objectStatusResource.message)) {
showNetworkNotAvailableMessage();
} else if (LOGIN_FAILED.equals(objectStatusResource.message)) {
Toast.makeText(this, getString(R.string.login_failed), Toast.LENGTH_LONG).show();
} else {
showErrorDialog(objectStatusResource.message);
}
onError(objectStatusResource);
break;
}
});
}

private <T> void onError(final StatusResource<T> statusResource) {
closeLoadingDialog();
if (NO_INTERNET_CONNECTION.equals(statusResource.message)) {
showNetworkNotAvailableMessage();
} else {
disableButtons();
if (LOGIN_FAILED.equals(statusResource.message)) {
Toast.makeText(this, getString(R.string.login_failed), Toast.LENGTH_LONG).show();
} else {
showErrorDialog(statusResource.message);
}
}
}

@Override protected void onActivityResult(final int requestCode, final int resultCode, @Nullable final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_VPN_PERMISSION) {


+ 5
- 5
ui/src/main/java/com/getbubblenow/android/model/Network.java View File

@@ -14,7 +14,7 @@ public class Network {
private String uuid;
@SerializedName("related")
@Expose
private String related;
private transient String related;
@SerializedName("name")
@Expose
private String name;
@@ -38,7 +38,7 @@ public class Network {
private String installType;
@SerializedName("sshKey")
@Expose
private String sshKey;
private transient String sshKey;
@SerializedName("computeSizeType")
@Expose
private String computeSizeType;
@@ -50,7 +50,7 @@ public class Network {
private String storage;
@SerializedName("description")
@Expose
private String description;
private transient String description;
@SerializedName("locale")
@Expose
private String locale;
@@ -62,10 +62,10 @@ public class Network {
private boolean sendMetrics;
@SerializedName("tags")
@Expose
private String tags;
private transient String tags;
@SerializedName("forkHost")
@Expose
private String forkHost;
private transient String forkHost;
@SerializedName("state")
@Expose
private String state;


+ 7
- 0
ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java View File

@@ -1016,7 +1016,14 @@ public final class DataRepository {
liveData.postValue(StatusResource.error(LOGIN_FAILED));
}
}
return;
}

final String stackTrace = Arrays.toString(throwable.getStackTrace());
String message = "Unknown error is occurred";
Log.e("ERR", message, throwable);
message += "\nSTACK_TRACE:\n" + stackTrace;
liveData.postValue(StatusResource.error(message));
}

private String bodyToString(final Request request) {


Loading…
Cancel
Save