mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 08:39:22 +01:00
Migrate local account data into SignalStore.
This commit is contained in:
committed by
Cody Henthorne
parent
87f175a96b
commit
8aea20f147
@@ -7,7 +7,6 @@ import android.database.Cursor;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import net.zetetic.database.sqlcipher.SQLiteDatabase;
|
||||
import net.zetetic.database.sqlcipher.SQLiteDatabaseHook;
|
||||
import net.zetetic.database.sqlcipher.SQLiteOpenHelper;
|
||||
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
@@ -15,8 +14,8 @@ import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.crypto.DatabaseSecret;
|
||||
import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider;
|
||||
import org.thoughtcrime.securesms.keyvalue.KeyValueDataSet;
|
||||
import org.thoughtcrime.securesms.keyvalue.KeyValuePersistentStorage;
|
||||
import org.thoughtcrime.securesms.util.CursorUtil;
|
||||
import org.thoughtcrime.securesms.util.SqlUtil;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
@@ -27,7 +26,7 @@ import java.util.Map;
|
||||
* This is it's own separate physical database, so it cannot do joins or queries with any other
|
||||
* tables.
|
||||
*/
|
||||
public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase {
|
||||
public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase, KeyValuePersistentStorage {
|
||||
|
||||
private static final String TAG = Log.tag(KeyValueDatabase.class);
|
||||
|
||||
@@ -99,6 +98,7 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull KeyValueDataSet getDataSet() {
|
||||
KeyValueDataSet dataSet = new KeyValueDataSet();
|
||||
|
||||
@@ -133,6 +133,7 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase
|
||||
return dataSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeDataSet(@NonNull KeyValueDataSet dataSet, @NonNull Collection<String> removes) {
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.thoughtcrime.securesms.crypto.ProfileKeyUtil;
|
||||
import org.thoughtcrime.securesms.crypto.storage.TextSecureIdentityKeyStore;
|
||||
import org.thoughtcrime.securesms.database.IdentityDatabase.VerifiedStatus;
|
||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.whispersystems.signalservice.api.push.ACI;
|
||||
import org.thoughtcrime.securesms.database.model.IdentityRecord;
|
||||
import org.thoughtcrime.securesms.database.model.ThreadRecord;
|
||||
@@ -500,7 +501,7 @@ public class RecipientDatabase extends Database {
|
||||
} else if (!byE164.isPresent() && byAci.isPresent()) {
|
||||
if (e164 != null) {
|
||||
if (highTrust) {
|
||||
if (Objects.equals(aci, TextSecurePreferences.getLocalAci(context)) && !changeSelf) {
|
||||
if (Objects.equals(aci, SignalStore.account().getAci()) && !changeSelf) {
|
||||
Log.w(TAG, String.format(Locale.US, "Found out about an E164 (%s) for our own ACI user (%s). High-trust but not change self, doing nothing.", e164, byAci.get()), true);
|
||||
finalId = byAci.get();
|
||||
} else {
|
||||
|
||||
@@ -791,7 +791,7 @@ public class ClassicOpenHelper extends SQLiteOpenHelper {
|
||||
db.execSQL("UPDATE part SET pending_push = '2' WHERE pending_push = '1'");
|
||||
}
|
||||
|
||||
if (oldVersion < NO_MORE_CANONICAL_ADDRESS_DATABASE && isValidNumber(TextSecurePreferences.getLocalNumber(context))) {
|
||||
if (oldVersion < NO_MORE_CANONICAL_ADDRESS_DATABASE && isValidNumber(TextSecurePreferences.getStringPreference(context, "pref_local_number", null))) {
|
||||
SQLiteOpenHelper canonicalAddressDatabaseHelper = new SQLiteOpenHelper(context, "canonical_address.db", null, 1) {
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase db) {
|
||||
@@ -803,7 +803,7 @@ public class ClassicOpenHelper extends SQLiteOpenHelper {
|
||||
};
|
||||
|
||||
SQLiteDatabase canonicalAddressDatabase = canonicalAddressDatabaseHelper.getReadableDatabase();
|
||||
NumberMigrator numberMigrator = new NumberMigrator(TextSecurePreferences.getLocalNumber(context));
|
||||
NumberMigrator numberMigrator = new NumberMigrator(TextSecurePreferences.getStringPreference(context, "pref_local_number", null));
|
||||
|
||||
// Migrate Thread Database
|
||||
Cursor cursor = db.query("thread", new String[] {"_id", "recipient_ids"}, null, null, null, null, null);
|
||||
@@ -1131,7 +1131,7 @@ public class ClassicOpenHelper extends SQLiteOpenHelper {
|
||||
members.add(DelimiterUtil.escape(DelimiterUtil.unescape(address, ' '), ','));
|
||||
}
|
||||
|
||||
members.add(DelimiterUtil.escape(TextSecurePreferences.getLocalNumber(context), ','));
|
||||
members.add(DelimiterUtil.escape(TextSecurePreferences.getStringPreference(context, "pref_local_number", null), ','));
|
||||
|
||||
Collections.sort(members);
|
||||
|
||||
@@ -1188,14 +1188,14 @@ public class ClassicOpenHelper extends SQLiteOpenHelper {
|
||||
if (oldVersion < INTERNAL_DIRECTORY) {
|
||||
db.execSQL("ALTER TABLE recipient_preferences ADD COLUMN registered INTEGER DEFAULT 0");
|
||||
|
||||
if (isValidNumber(TextSecurePreferences.getLocalNumber(context))) {
|
||||
if (isValidNumber(TextSecurePreferences.getStringPreference(context, "pref_local_number", null))) {
|
||||
OldDirectoryDatabaseHelper directoryDatabaseHelper = new OldDirectoryDatabaseHelper(context);
|
||||
SQLiteDatabase directoryDatabase = directoryDatabaseHelper.getWritableDatabase();
|
||||
|
||||
Cursor cursor = directoryDatabase.query("directory", new String[] {"number", "registered"}, null, null, null, null, null);
|
||||
|
||||
while (cursor != null && cursor.moveToNext()) {
|
||||
String address = new NumberMigrator(TextSecurePreferences.getLocalNumber(context)).migrate(cursor.getString(0));
|
||||
String address = new NumberMigrator(TextSecurePreferences.getStringPreference(context, "pref_local_number", null)).migrate(cursor.getString(0));
|
||||
ContentValues contentValues = new ContentValues(1);
|
||||
|
||||
contentValues.put("registered", cursor.getInt(1) == 1 ? 1 : 2);
|
||||
|
||||
@@ -559,7 +559,7 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab
|
||||
}
|
||||
|
||||
if (oldVersion < SELF_ATTACHMENT_CLEANUP) {
|
||||
String localNumber = TextSecurePreferences.getLocalNumber(context);
|
||||
String localNumber = SignalStore.account().getE164();
|
||||
|
||||
if (!TextUtils.isEmpty(localNumber)) {
|
||||
try (Cursor threadCursor = db.rawQuery("SELECT _id FROM thread WHERE recipient_ids = ?", new String[]{ localNumber })) {
|
||||
@@ -651,7 +651,7 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab
|
||||
if (oldVersion < RECIPIENT_SEARCH) {
|
||||
db.execSQL("ALTER TABLE recipient ADD COLUMN system_phone_type INTEGER DEFAULT -1");
|
||||
|
||||
String localNumber = TextSecurePreferences.getLocalNumber(context);
|
||||
String localNumber = SignalStore.account().getE164();
|
||||
if (!TextUtils.isEmpty(localNumber)) {
|
||||
try (Cursor cursor = db.query("recipient", null, "phone = ?", new String[] { localNumber }, null, null, null)) {
|
||||
if (cursor == null || !cursor.moveToFirst()) {
|
||||
@@ -834,7 +834,7 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab
|
||||
}
|
||||
|
||||
if (oldVersion < PROFILE_KEY_TO_DB) {
|
||||
String localNumber = TextSecurePreferences.getLocalNumber(context);
|
||||
String localNumber = SignalStore.account().getE164();
|
||||
if (!TextUtils.isEmpty(localNumber)) {
|
||||
String encodedProfileKey = PreferenceManager.getDefaultSharedPreferences(context).getString("pref_profile_key", null);
|
||||
byte[] profileKey = encodedProfileKey != null ? Base64.decodeOrThrow(encodedProfileKey) : Util.getSecretBytes(32);
|
||||
@@ -903,7 +903,7 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper implements SignalDatab
|
||||
}
|
||||
|
||||
if (oldVersion < PROFILE_DATA_MIGRATION) {
|
||||
String localNumber = TextSecurePreferences.getLocalNumber(context);
|
||||
String localNumber = SignalStore.account().getE164();
|
||||
if (localNumber != null) {
|
||||
String encodedProfileName = PreferenceManager.getDefaultSharedPreferences(context).getString("pref_profile_name", null);
|
||||
ProfileName profileName = ProfileName.fromSerialized(encodedProfileName);
|
||||
|
||||
@@ -36,7 +36,7 @@ public class GroupCallUpdateMessageFactory implements UpdateDescription.StringFa
|
||||
this.joinedMembers = new ArrayList<>(joinedMembers);
|
||||
this.withTime = withTime;
|
||||
this.groupCallUpdateDetails = groupCallUpdateDetails;
|
||||
this.selfAci = TextSecurePreferences.getLocalAci(context);
|
||||
this.selfAci = Recipient.self().requireAci();
|
||||
|
||||
boolean removed = this.joinedMembers.remove(selfAci);
|
||||
if (removed) {
|
||||
|
||||
Reference in New Issue
Block a user