Use a snapshot of the SignalStore during backups.

This commit is contained in:
Greyson Parrelli
2024-06-20 12:23:19 -04:00
parent 863b443317
commit 362cdfc463
5 changed files with 79 additions and 35 deletions

View File

@@ -32,7 +32,7 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase
private static final String TAG = Log.tag(KeyValueDatabase.class);
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "signal-key-value.db";
public static final String DATABASE_NAME = "signal-key-value.db";
private static final String TABLE_NAME = "key_value";
private static final String ID = "_id";
@@ -65,9 +65,16 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase
return context.getDatabasePath(DATABASE_NAME).exists();
}
public static KeyValueDatabase createWithName(@NonNull Application application, @NonNull String name) {
return new KeyValueDatabase(application, DatabaseSecretProvider.getOrCreateDatabaseSecret(application), name);
}
private KeyValueDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret) {
super(application, DATABASE_NAME, databaseSecret.asString(), null, DATABASE_VERSION, 0,new SqlCipherErrorHandler(DATABASE_NAME), new SqlCipherDatabaseHook(), true);
this(application, databaseSecret, DATABASE_NAME);
}
private KeyValueDatabase(@NonNull Application application, @NonNull DatabaseSecret databaseSecret, @NonNull String name) {
super(application, name, databaseSecret.asString(), null, DATABASE_VERSION, 0, new SqlCipherErrorHandler(name), new SqlCipherDatabaseHook(), true);
this.application = application;
}