Store last seen application version number at install time.

pull/1/head
Moxie Marlinspike 11 years ago
parent e07c1a8e92
commit 5d910a2997

@ -3,17 +3,16 @@ package org.thoughtcrime.securesms;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.util.VersionTracker;
import java.util.SortedSet; import java.util.SortedSet;
import java.util.TreeSet; import java.util.TreeSet;
@ -23,7 +22,6 @@ public class DatabaseUpgradeActivity extends Activity {
public static final int NO_MORE_KEY_EXCHANGE_PREFIX_VERSION = 46; public static final int NO_MORE_KEY_EXCHANGE_PREFIX_VERSION = 46;
public static final int MMS_BODY_VERSION = 46; public static final int MMS_BODY_VERSION = 46;
private static final String LAST_VERSION_CODE = "last_version_code";
private static final SortedSet<Integer> UPGRADE_VERSIONS = new TreeSet<Integer>() {{ private static final SortedSet<Integer> UPGRADE_VERSIONS = new TreeSet<Integer>() {{
add(NO_MORE_KEY_EXCHANGE_PREFIX_VERSION); add(NO_MORE_KEY_EXCHANGE_PREFIX_VERSION);
@ -43,9 +41,10 @@ public class DatabaseUpgradeActivity extends Activity {
ProgressBar indeterminateProgress = (ProgressBar)findViewById(R.id.indeterminate_progress); ProgressBar indeterminateProgress = (ProgressBar)findViewById(R.id.indeterminate_progress);
ProgressBar determinateProgress = (ProgressBar)findViewById(R.id.determinate_progress); ProgressBar determinateProgress = (ProgressBar)findViewById(R.id.determinate_progress);
new DatabaseUpgradeTask(indeterminateProgress, determinateProgress).execute(getLastSeenVersion()); new DatabaseUpgradeTask(indeterminateProgress, determinateProgress)
.execute(VersionTracker.getLastSeenVersion(this));
} else { } else {
updateLastSeenVersion(); VersionTracker.updateLastSeenVersion(this);
startActivity((Intent)getIntent().getParcelableExtra("next_intent")); startActivity((Intent)getIntent().getParcelableExtra("next_intent"));
finish(); finish();
} }
@ -54,7 +53,7 @@ public class DatabaseUpgradeActivity extends Activity {
private boolean needsDatabaseUpgrade() { private boolean needsDatabaseUpgrade() {
try { try {
int currentVersionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; int currentVersionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
int lastSeenVersion = getLastSeenVersion(); int lastSeenVersion = VersionTracker.getLastSeenVersion(this);
Log.w("DatabaseUpgradeActivity", "LastSeenVersion: " + lastSeenVersion); Log.w("DatabaseUpgradeActivity", "LastSeenVersion: " + lastSeenVersion);
@ -73,26 +72,10 @@ public class DatabaseUpgradeActivity extends Activity {
} }
} }
private int getLastSeenVersion() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
return preferences.getInt(LAST_VERSION_CODE, 0);
}
private void updateLastSeenVersion() {
try {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
int currentVersionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
preferences.edit().putInt(LAST_VERSION_CODE, currentVersionCode).commit();
} catch (PackageManager.NameNotFoundException e) {
throw new AssertionError(e);
}
}
public static boolean isUpdate(Context context) { public static boolean isUpdate(Context context) {
try { try {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); int currentVersionCode = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode;
int currentVersionCode = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode; int previousVersionCode = VersionTracker.getLastSeenVersion(context);
int previousVersionCode = preferences.getInt(LAST_VERSION_CODE, 0);
return previousVersionCode < currentVersionCode; return previousVersionCode < currentVersionCode;
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
@ -135,7 +118,7 @@ public class DatabaseUpgradeActivity extends Activity {
@Override @Override
protected void onPostExecute(Void result) { protected void onPostExecute(Void result) {
updateLastSeenVersion(); VersionTracker.updateLastSeenVersion(DatabaseUpgradeActivity.this);
startActivity((Intent)getIntent().getParcelableExtra("next_intent")); startActivity((Intent)getIntent().getParcelableExtra("next_intent"));
finish(); finish();
} }

@ -16,8 +16,10 @@
*/ */
package org.thoughtcrime.securesms; package org.thoughtcrime.securesms;
import android.content.SharedPreferences;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
@ -29,6 +31,7 @@ import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.crypto.MasterSecretUtil; import org.thoughtcrime.securesms.crypto.MasterSecretUtil;
import org.thoughtcrime.securesms.util.MemoryCleaner; import org.thoughtcrime.securesms.util.MemoryCleaner;
import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.VersionTracker;
/** /**
* Activity for creating a user's local encryption passphrase. * Activity for creating a user's local encryption passphrase.
@ -112,6 +115,7 @@ public class PassphraseCreateActivity extends PassphraseActivity {
MasterSecretUtil.generateAsymmetricMasterSecret(PassphraseCreateActivity.this, masterSecret); MasterSecretUtil.generateAsymmetricMasterSecret(PassphraseCreateActivity.this, masterSecret);
IdentityKeyUtil.generateIdentityKeys(PassphraseCreateActivity.this, masterSecret); IdentityKeyUtil.generateIdentityKeys(PassphraseCreateActivity.this, masterSecret);
VersionTracker.updateLastSeenVersion(PassphraseCreateActivity.this);
return null; return null;
} }

@ -0,0 +1,28 @@
package org.thoughtcrime.securesms.util;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.preference.PreferenceManager;
public class VersionTracker {
private static final String LAST_VERSION_CODE = "last_version_code";
public static int getLastSeenVersion(Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getInt(LAST_VERSION_CODE, 0);
}
public static void updateLastSeenVersion(Context context) {
try {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
int currentVersionCode = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0)
.versionCode;
preferences.edit().putInt(LAST_VERSION_CODE, currentVersionCode).commit();
} catch (PackageManager.NameNotFoundException e) {
throw new AssertionError(e);
}
}
}
Loading…
Cancel
Save