diff options
| author | Parménides GV <parmegv@sdf.org> | 2016-04-02 15:04:35 +0200 | 
|---|---|---|
| committer | Parménides GV <parmegv@sdf.org> | 2016-04-02 15:04:35 +0200 | 
| commit | 48948e1231a91c86e5a3e7b535a44eff62bacb6d (patch) | |
| tree | 988780a343d49bf26f89899d7be082f3a147ecc7 | |
| parent | 3a409ed35f0f26644d99b8704801103de8783864 (diff) | |
VpnStatus.initLogCache must be called only once.
onCreate gets called when the activity is back on the screen. If the app
was already launched, we should not set everything up again.
| -rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/Dashboard.java | 57 | 
1 files changed, 38 insertions, 19 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/Dashboard.java b/app/src/main/java/se/leap/bitmaskclient/Dashboard.java index 218b22a7..dbdf0a51 100644 --- a/app/src/main/java/se/leap/bitmaskclient/Dashboard.java +++ b/app/src/main/java/se/leap/bitmaskclient/Dashboard.java @@ -88,36 +88,55 @@ public class Dashboard extends Activity implements ProviderAPIResultReceiver.Rec      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState); - -        app = this; - -        PRNGFixes.apply(); -        VpnStatus.initLogCache(getApplicationContext().getCacheDir()); -          preferences = getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);          fragment_manager = new FragmentManagerEnhanced(getFragmentManager()); -        handleVersion(); -        User.init(getString(R.string.default_username));          ProviderAPICommand.initialize(this);          providerAPI_result_receiver = new ProviderAPIResultReceiver(new Handler(), this); -        restoreProvider(savedInstanceState); -        if (!provider.isConfigured()) +        if (app == null) { +            app = this; + +            PRNGFixes.apply(); +            VpnStatus.initLogCache(getApplicationContext().getCacheDir()); +            handleVersion(); +            User.init(getString(R.string.default_username)); +        } +        boolean provider_exists = previousProviderExists(savedInstanceState); +        if (provider_exists) { +            provider = getProvider(savedInstanceState); +            if(!provider.isConfigured()) +                startActivityForResult(new Intent(this, ConfigurationWizard.class), CONFIGURE_LEAP); +            else { +                buildDashboard(getIntent().getBooleanExtra(ON_BOOT, false)); +                user_status_fragment.restoreSessionStatus(savedInstanceState); +            } +        } else {              startActivityForResult(new Intent(this, ConfigurationWizard.class), CONFIGURE_LEAP); -        else { -            buildDashboard(getIntent().getBooleanExtra(ON_BOOT, false)); -            user_status_fragment.restoreSessionStatus(savedInstanceState);          }      } -    private void restoreProvider(Bundle savedInstanceState) { -        if (savedInstanceState != null) { -            if (savedInstanceState.containsKey(Provider.KEY)) -                provider = savedInstanceState.getParcelable(Provider.KEY); -        } -        if (!provider.isConfigured() && preferences.getBoolean(Constants.PROVIDER_CONFIGURED, false)) +    private boolean previousProviderExists(Bundle savedInstanceState) { +        return providerInSavedInstance(savedInstanceState) || providerInSharedPreferences(); +    } + +    private Provider getProvider(Bundle savedInstanceState) { +        if(providerInSavedInstance(savedInstanceState)) +            provider = savedInstanceState.getParcelable(Provider.KEY); +        else if (providerInSharedPreferences())              provider = getSavedProviderFromSharedPreferences(); +        return provider; +    } + +    private boolean providerInSavedInstance(Bundle savedInstanceState) { +        return savedInstanceState != null && +                savedInstanceState.containsKey(Provider.KEY); +    } + +    private boolean providerInSharedPreferences() { +        return preferences != null && +                preferences.getBoolean(Constants.PROVIDER_CONFIGURED, false); +      }      @Override  | 
