diff --git a/app/src/main/java/org/openobservatory/ooniprobe/activity/OoniRunActivity.java b/app/src/main/java/org/openobservatory/ooniprobe/activity/OoniRunActivity.java index e7fc05eec..306e5cba1 100644 --- a/app/src/main/java/org/openobservatory/ooniprobe/activity/OoniRunActivity.java +++ b/app/src/main/java/org/openobservatory/ooniprobe/activity/OoniRunActivity.java @@ -18,6 +18,7 @@ import org.openobservatory.ooniprobe.BuildConfig; import org.openobservatory.ooniprobe.R; import org.openobservatory.ooniprobe.common.PreferenceManager; +import org.openobservatory.ooniprobe.common.TaskExecutor; import org.openobservatory.ooniprobe.common.ThirdPartyServices; import org.openobservatory.ooniprobe.databinding.ActivityOonirunBinding; import org.openobservatory.ooniprobe.domain.GetTestSuite; @@ -59,7 +60,6 @@ protected void onCreate(Bundle savedInstanceState) { setSupportActionBar(binding.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); - items = new ArrayList<>(); manageIntent(getIntent()); } @@ -70,21 +70,40 @@ protected void onNewIntent(Intent intent) { } private void manageIntent(Intent intent) { + items = new ArrayList<>(); + Uri uri = intent.getData(); if (uri == null) return; String host = uri.getHost(); if ("runv2".equals(host) || "run.test.ooni.org".equals(host)) { - try { + + binding.progressIndicator.setVisibility(View.VISIBLE); long runId = Long.parseLong(uri.getPathSegments().get(0)); - FetchTestDescriptorResponse response = TestDescriptorManager.fetchDataFromRunId(runId, this); - loadV2Screen(response); - } catch (Exception exception) { - exception.printStackTrace(); - ThirdPartyServices.logException(exception); - loadInvalidAttributes(); - } + + TaskExecutor executor = new TaskExecutor(); + executor.executeTask( + () -> { + try { + return TestDescriptorManager.fetchDataFromRunId(runId, this); + } catch (Exception exception) { + exception.printStackTrace(); + ThirdPartyServices.logException(exception); + return null; + } + }, + descriptorResponse -> { + if (descriptorResponse!=null) { + binding.progressIndicator.setVisibility(View.GONE); + loadV2Screen(descriptorResponse); + } else { + binding.progressIndicator.setVisibility(View.GONE); + loadInvalidAttributes(); + } + return null; + }); + } else if (isTestRunning()) { Toast.makeText(this, getString(R.string.OONIRun_TestRunningError), Toast.LENGTH_LONG).show(); finish(); @@ -151,6 +170,7 @@ private void loadV2Screen(FetchTestDescriptorResponse response) { binding.iconBig.setVisibility(View.GONE); // TODO: 18/07/2023 (aanorbel) Add translation binding.run.setText("Install"); + binding.run.setVisibility(View.VISIBLE); binding.run.setOnClickListener( v -> { response.descriptor.setAutoUpdate(binding.autoUpdates.isChecked()); @@ -190,6 +210,7 @@ private void loadOutOfDate() { binding.title.setText(R.string.OONIRun_OONIProbeOutOfDate); binding.desc.setText(R.string.OONIRun_OONIProbeNewerVersion); binding.run.setText(R.string.OONIRun_Update); + binding.run.setVisibility(View.VISIBLE); binding.icon.setImageResource(R.drawable.update); binding.iconBig.setImageResource(R.drawable.update); binding.iconBig.setVisibility(View.VISIBLE); @@ -219,6 +240,8 @@ private void loadSuite(AbstractSuite suite, List urls) { mTransactiont.replace(R.id.items, OoniRunListFragment.newInstance(), OoniRunListFragment.class.getName()); mTransactiont.commit(); + binding.run.setText(R.string.OONIRun_Close); + binding.run.setVisibility(View.VISIBLE); binding.run.setOnClickListener(v -> { RunningActivity.runAsForegroundService(OoniRunActivity.this, suite.asArray(),this::finish, preferenceManager); @@ -230,6 +253,7 @@ private void loadInvalidAttributes() { binding.title.setText(R.string.OONIRun_InvalidParameter); binding.desc.setText(R.string.OONIRun_InvalidParameter_Msg); binding.run.setText(R.string.OONIRun_Close); + binding.run.setVisibility(View.VISIBLE); binding.icon.setImageResource(R.drawable.question_mark); binding.iconBig.setImageResource(R.drawable.question_mark); binding.iconBig.setVisibility(View.VISIBLE); diff --git a/app/src/main/res/layout/activity_oonirun.xml b/app/src/main/res/layout/activity_oonirun.xml index 5e933e642..f10f96e88 100644 --- a/app/src/main/res/layout/activity_oonirun.xml +++ b/app/src/main/res/layout/activity_oonirun.xml @@ -1,6 +1,7 @@ + tools:text="@string/OONIRun_InvalidParameter" /> + tools:text="@string/OONIRun_YouAreAboutToRun" /> + +