From ac5b6bd42ab100661830f8f64ba2291606866c6c Mon Sep 17 00:00:00 2001 From: cyBerta Date: Fri, 26 Apr 2024 18:52:43 +0200 Subject: allow during the initial setup to re-launch the app and resume in the configuration UI --- .../providersetup/ProviderSetupObservable.java | 5 +++++ .../providersetup/activities/SetupActivity.java | 11 ++++++++++- .../fragments/ConfigureProviderFragment.java | 23 ++++++++++------------ 3 files changed, 25 insertions(+), 14 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/providersetup') diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java index 1446d5ec..237f5bd2 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/ProviderSetupObservable.java @@ -117,6 +117,10 @@ public class ProviderSetupObservable { return getInstance().progress; } + public static boolean isSetupRunning() { + return getInstance().progress > 0; + } + public static void reset() { getInstance().progress = 0; getInstance().resultCode = 0; @@ -136,6 +140,7 @@ public class ProviderSetupObservable { public static void startSetup() { getInstance().canceled = false; getInstance().resultCode = 0; + getInstance().progress = 1; getInstance().resultData = new Bundle(); } diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/activities/SetupActivity.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/activities/SetupActivity.java index 9235daad..9a0bf7b7 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/activities/SetupActivity.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/activities/SetupActivity.java @@ -3,6 +3,7 @@ package se.leap.bitmaskclient.providersetup.activities; import static android.view.View.GONE; import static android.view.View.VISIBLE; import static androidx.appcompat.app.ActionBar.DISPLAY_SHOW_CUSTOM; +import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_KEY; import static se.leap.bitmaskclient.base.utils.BuildConfigHelper.isDefaultBitmask; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.deleteProviderDetailsFromPreferences; import static se.leap.bitmaskclient.providersetup.fragments.SetupFragmentFactory.CONFIGURE_PROVIDER_FRAGMENT; @@ -139,7 +140,7 @@ public class SetupActivity extends AppCompatActivity implements SetupActivityCal }); binding.viewPager.setAdapter(adapter); binding.viewPager.setUserInputEnabled(false); - binding.viewPager.setCurrentItem(currentPosition, false); + binding.setupNextButton.setOnClickListener(v -> { int currentPos = binding.viewPager.getCurrentItem(); @@ -153,6 +154,14 @@ public class SetupActivity extends AppCompatActivity implements SetupActivityCal cancel(); }); setupActionBar(); + + if (ProviderSetupObservable.isSetupRunning()) { + provider = ProviderSetupObservable.getResultData().getParcelable(PROVIDER_KEY); + if (provider != null) { + currentPosition = adapter.getFragmentPostion(CONFIGURE_PROVIDER_FRAGMENT); + } + } + binding.viewPager.setCurrentItem(currentPosition, false); } @Override diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java index 078b2e41..621cb41a 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/ConfigureProviderFragment.java @@ -110,14 +110,6 @@ public class ConfigureProviderFragment extends BaseSetupFragment implements Prop EipSetupObserver.addListener(this); } - @Override - public void onResume() { - super.onResume(); - if (ProviderSetupObservable.getProgress() > 0) { - handleResult(ProviderSetupObservable.getResultCode(), ProviderSetupObservable.getResultData()); - } - } - @Override public void onDestroyView() { setupActivityCallback.removeCancelCallback(this); @@ -140,8 +132,12 @@ public class ConfigureProviderFragment extends BaseSetupFragment implements Prop binding.progressSpinner.update(ProviderSetupObservable.getProgress()); setupActivityCallback.setNavigationButtonHidden(true); setupActivityCallback.setCancelButtonHidden(false); - ProviderSetupObservable.startSetup(); - ProviderAPICommand.execute(getContext(), SET_UP_PROVIDER, setupActivityCallback.getSelectedProvider()); + if (ProviderSetupObservable.isSetupRunning()) { + handleResult(ProviderSetupObservable.getResultCode(), ProviderSetupObservable.getResultData(), true); + } else { + ProviderSetupObservable.startSetup(); + ProviderAPICommand.execute(getContext(), SET_UP_PROVIDER, setupActivityCallback.getSelectedProvider()); + } } protected void showConnectionDetails() { @@ -211,10 +207,10 @@ public class ConfigureProviderFragment extends BaseSetupFragment implements Prop if (resultData == null) { resultData = Bundle.EMPTY; } - handleResult(resultCode, resultData); + handleResult(resultCode, resultData, false); } - private void handleResult(int resultCode, Bundle resultData) { + private void handleResult(int resultCode, Bundle resultData, boolean resumeSetup) { Provider provider = resultData.getParcelable(PROVIDER_KEY); if (ignoreProviderAPIUpdates || provider == null || @@ -225,6 +221,7 @@ public class ConfigureProviderFragment extends BaseSetupFragment implements Prop switch (resultCode) { case PROVIDER_OK: + setupActivityCallback.onProviderSelected(provider); if (provider.allowsAnonymous()) { ProviderAPICommand.execute(this.getContext(), DOWNLOAD_VPN_CERTIFICATE, provider); } else { @@ -241,7 +238,7 @@ public class ConfigureProviderFragment extends BaseSetupFragment implements Prop // callback disappeared in the meanwhile } } - }, 750); + }, resumeSetup ? 0 : 750); break; case PROVIDER_NOK: case INCORRECTLY_DOWNLOADED_VPN_CERTIFICATE: -- cgit v1.2.3