Skip to content
Snippets Groups Projects
Commit 74159f6e authored by akwizgran's avatar akwizgran
Browse files

Check whether data has been deleted when resuming from recents. Bug #44.

parent 581ba713
No related branches found
No related tags found
No related merge requests found
......@@ -11,6 +11,7 @@ import static android.widget.LinearLayout.VERTICAL;
import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
import java.io.File;
import java.util.concurrent.Executor;
import javax.inject.Inject;
......@@ -24,6 +25,7 @@ import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.util.StringUtils;
import roboguice.activity.RoboActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
......@@ -55,7 +57,15 @@ public class PasswordActivity extends RoboActivity {
SharedPreferences prefs = getSharedPreferences("db", MODE_PRIVATE);
String hex = prefs.getString("key", null);
if(hex == null) throw new IllegalStateException();
if(hex == null || !databaseConfig.databaseExists()) {
// Storage has been deleted - clean up and return to setup
prefs.edit().clear().commit();
delete(databaseConfig.getDatabaseDirectory());
setResult(RESULT_CANCELED);
startActivity(new Intent(this, SetupActivity.class));
finish();
return;
}
final byte[] encrypted = StringUtils.fromHexString(hex);
LinearLayout layout = new LinearLayout(this);
......@@ -107,6 +117,11 @@ public class PasswordActivity extends RoboActivity {
setContentView(layout);
}
private void delete(File f) {
if(f.isFile()) f.delete();
else if(f.isDirectory()) for(File child : f.listFiles()) delete(child);
}
private void validatePassword(final byte[] encrypted, Editable e) {
if(enterPassword == null || continueButton == null || progress == null)
return;
......
......@@ -4,6 +4,7 @@ import static android.view.Gravity.CENTER;
import static java.util.logging.Level.INFO;
import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
......@@ -13,8 +14,8 @@ import org.briarproject.api.db.DatabaseConfig;
import roboguice.RoboGuice;
import roboguice.activity.RoboSplashActivity;
import android.app.Application;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ImageView;
......@@ -66,11 +67,22 @@ public class SplashScreenActivity extends RoboSplashActivity {
if(LOG.isLoggable(INFO)) LOG.info("Expired");
startActivity(new Intent(this, ExpiredActivity.class));
} else {
Application app = getApplication();
Injector guice = RoboGuice.getBaseApplicationInjector(app);
if(guice.getInstance(DatabaseConfig.class).databaseExists())
SharedPreferences prefs = getSharedPreferences("db", MODE_PRIVATE);
String hex = prefs.getString("key", null);
Injector i = RoboGuice.getBaseApplicationInjector(getApplication());
DatabaseConfig databaseConfig = i.getInstance(DatabaseConfig.class);
if(hex != null && databaseConfig.databaseExists()) {
startActivity(new Intent(this, DashboardActivity.class));
else startActivity(new Intent(this, SetupActivity.class));
} else {
prefs.edit().clear().commit();
delete(databaseConfig.getDatabaseDirectory());
startActivity(new Intent(this, SetupActivity.class));
}
}
}
private void delete(File f) {
if(f.isFile()) f.delete();
else if(f.isDirectory()) for(File child : f.listFiles()) delete(child);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment