@@ -13,6 +13,7 @@ import java.util.List;
|
||||
public class ApplicationHolder {
|
||||
private List<Application> state;
|
||||
private Runnable onUpdate;
|
||||
private Runnable onUpdateFailed;
|
||||
private Activity activity;
|
||||
private ApiClient client;
|
||||
|
||||
@@ -35,11 +36,12 @@ public class ApplicationHolder {
|
||||
|
||||
private void onReceiveApps(List<Application> apps) {
|
||||
state = apps;
|
||||
onUpdate.run();
|
||||
if (onUpdate != null) onUpdate.run();
|
||||
}
|
||||
|
||||
private void onFailedApps(ApiException e) {
|
||||
Utils.showSnackBar(activity, "Could not request applications, see logs.");
|
||||
if (onUpdateFailed != null) onUpdateFailed.run();
|
||||
}
|
||||
|
||||
public List<Application> get() {
|
||||
@@ -49,4 +51,8 @@ public class ApplicationHolder {
|
||||
public void onUpdate(Runnable runnable) {
|
||||
this.onUpdate = runnable;
|
||||
}
|
||||
|
||||
public void onUpdateFailed(Runnable runnable) {
|
||||
this.onUpdateFailed = runnable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,9 @@ import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.Toast;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
@@ -46,6 +48,12 @@ public class ShareActivity extends AppCompatActivity {
|
||||
@BindView(R.id.appSpinner)
|
||||
Spinner appSpinner;
|
||||
|
||||
@BindView(R.id.push_button)
|
||||
Button pushMessageButton;
|
||||
|
||||
@BindView(R.id.missingAppsContainer)
|
||||
LinearLayout missingAppsInfo;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -73,7 +81,16 @@ public class ShareActivity extends AppCompatActivity {
|
||||
ApiClient client =
|
||||
ClientFactory.clientToken(settings.url(), settings.sslSettings(), settings.token());
|
||||
appsHolder = new ApplicationHolder(this, client);
|
||||
appsHolder.onUpdate(() -> populateSpinner(appsHolder.get()));
|
||||
appsHolder.onUpdate(
|
||||
() -> {
|
||||
List<Application> apps = appsHolder.get();
|
||||
populateSpinner(apps);
|
||||
|
||||
boolean appsAvailable = !apps.isEmpty();
|
||||
pushMessageButton.setEnabled(appsAvailable);
|
||||
missingAppsInfo.setVisibility(appsAvailable ? View.GONE : View.VISIBLE);
|
||||
});
|
||||
appsHolder.onUpdateFailed(() -> pushMessageButton.setEnabled(false));
|
||||
appsHolder.request();
|
||||
}
|
||||
|
||||
@@ -98,6 +115,11 @@ public class ShareActivity extends AppCompatActivity {
|
||||
} else if (priority.isEmpty()) {
|
||||
Toast.makeText(this, "Priority should be number.", Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
} else if (appIndex == Spinner.INVALID_POSITION) {
|
||||
// For safety, e.g. loading the apps needs too much time (maybe a timeout) and
|
||||
// the user tries to push without an app selected.
|
||||
Toast.makeText(this, "An app must be selected.", Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
|
||||
Message message = new Message();
|
||||
|
||||
Reference in New Issue
Block a user