summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/StartActivity.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/StartActivity.java112
1 files changed, 66 insertions, 46 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/StartActivity.java b/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
index 0ccc5b41..1bf81aea 100644
--- a/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
@@ -31,40 +31,76 @@ public class StartActivity extends Activity {
private static final int UPGRADE = 2;
private static final int DOWNGRADE = 3;
+ private int versionCode;
+ private int previousVersionCode;
+
+ private SharedPreferences preferences;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ preferences = getSharedPreferences(Constants.SHARED_PREFERENCES, MODE_PRIVATE);
+
+ Log.d(TAG, "Started");
+
+ switch (checkAppStart()) {
+ case NORMAL:
+ break;
+
+ case FIRST:
+ // TODO start ProfileCreation & replace below code
+ break;
+
+ case UPGRADE:
+ executeUpgrade();
+ // TODO show donation dialog
+ break;
+
+ case DOWNGRADE:
+ // TODO think how and why this should happen and what todo
+ break;
+ }
+
+ // initialize app necessities
+ ProviderAPICommand.initialize(this);
+ VpnStatus.initLogCache(getApplicationContext().getCacheDir());
+ User.init(getString(R.string.default_username));
+
+ // go to Dashboard
+ Intent intent = new Intent(this, MainActivity.class);
+ startActivity(intent);
+ }
+
/**
* check if normal start, first run, up or downgrade
* @return @StartupMode
*/
@StartupMode
private int checkAppStart() {
- SharedPreferences preferences = getSharedPreferences(Constants.SHARED_PREFERENCES, MODE_PRIVATE);
try {
- int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
- int lastDetectedVersion = preferences.getInt(Constants.PREFERENCES_APP_VERSION, -1);
+ versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
+ previousVersionCode = preferences.getInt(Constants.PREFERENCES_APP_VERSION, -1);
// versions do match -> normal start
- if (versionCode == lastDetectedVersion) {
+ if (versionCode == previousVersionCode) {
Log.d(TAG, "App start was: NORMAL START");
return NORMAL;
}
- // something changed -> save current version
- preferences.edit().putInt(Constants.PREFERENCES_APP_VERSION, versionCode).apply();
-
// no previous app version -> first start
- if (lastDetectedVersion == -1 ) {
- Log.d(TAG, "App start was: FIRST START");
+ if (previousVersionCode == -1 ) {
+ Log.d(TAG, "FIRST START");
return FIRST;
}
// version has increased -> upgrade
- if (versionCode > lastDetectedVersion) {
- Log.d(TAG, "App start was: UPGRADE");
+ if (versionCode > previousVersionCode) {
+ Log.d(TAG, "UPGRADE");
return UPGRADE;
}
// version has decreased -> downgrade
- if (versionCode < lastDetectedVersion) {
- Log.d(TAG, "App start was: DOWNGRADE");
+ if (versionCode < previousVersionCode) {
+ Log.d(TAG, "DOWNGRADE");
return DOWNGRADE;
}
@@ -75,41 +111,25 @@ public class StartActivity extends Activity {
return NORMAL;
}
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Intent intent;
-
- Log.d(TAG, "Started");
-
- switch (checkAppStart()) {
- case NORMAL:
- break;
-
- case FIRST:
- // TODO start ProfileCreation & replace below code
- intent = new Intent(this, Dashboard.class);
- startActivity(intent);
- break;
-
- case UPGRADE:
- // TODO appropriate data copying
- // TODO show donation dialog
- break;
-
- case DOWNGRADE:
- // TODO think how and why this should happen and what todo
- break;
+ /**
+ * execute necessary upgrades for version change
+ */
+ private void executeUpgrade() {
+ if (hasNewFeature(FeatureVersionCode.MULTIPLE_PROFILES)) {
+ // TODO prepare usage of multiple profiles
}
- // initialize app necessities
- ProviderAPICommand.initialize(this);
- VpnStatus.initLogCache(getApplicationContext().getCacheDir());
- User.init(getString(R.string.default_username));
+ // ensure all upgrades have passed before storing new information
+ preferences.edit().putInt(Constants.PREFERENCES_APP_VERSION, versionCode).apply();
+ }
- // go to Dashboard
- intent = new Intent(this, MainActivity.class);
- startActivity(intent);
+ /**
+ * check if an upgrade passed or moved to given milestone
+ * @param featureVersionCode Version code of the Milestone FeatureVersionCode.MILE_STONE
+ * @return true if milestone is reached - false otherwise
+ */
+ private boolean hasNewFeature(int featureVersionCode) {
+ return previousVersionCode < featureVersionCode && versionCode >= featureVersionCode;
}
+
}