kopia lustrzana https://github.com/ryukoposting/Signal-Android
rodzic
35f9437413
commit
c5028720e3
|
@ -86,8 +86,6 @@ def selectableVariants = [
|
|||
'playStagingFlipper',
|
||||
'playStagingPerf',
|
||||
'playStagingRelease',
|
||||
'studyProdMock',
|
||||
'studyProdPerf',
|
||||
'websiteProdFlipper',
|
||||
'websiteProdRelease',
|
||||
]
|
||||
|
@ -271,13 +269,6 @@ android {
|
|||
matchingFallbacks = ['debug']
|
||||
buildConfigField "String", "BUILD_VARIANT_TYPE", "\"Perf\""
|
||||
}
|
||||
mock {
|
||||
initWith debug
|
||||
isDefault false
|
||||
minifyEnabled false
|
||||
matchingFallbacks = ['debug']
|
||||
buildConfigField "String", "BUILD_VARIANT_TYPE", "\"Mock\""
|
||||
}
|
||||
}
|
||||
|
||||
productFlavors {
|
||||
|
@ -307,16 +298,6 @@ android {
|
|||
buildConfigField "String", "BUILD_DISTRIBUTION_TYPE", "\"nightly\""
|
||||
}
|
||||
|
||||
study {
|
||||
dimension 'distribution'
|
||||
|
||||
applicationIdSuffix ".study"
|
||||
ext.websiteUpdateUrl = "null"
|
||||
buildConfigField "boolean", "PLAY_STORE_DISABLED", "false"
|
||||
buildConfigField "String", "NOPLAY_UPDATE_URL", "$ext.websiteUpdateUrl"
|
||||
buildConfigField "String", "BUILD_DISTRIBUTION_TYPE", "\"study\""
|
||||
}
|
||||
|
||||
prod {
|
||||
dimension 'environment'
|
||||
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="org.thoughtcrime.securesms">
|
||||
|
||||
<application
|
||||
android:name=".MockApplicationContext"
|
||||
tools:replace="android:name" />
|
||||
|
||||
</manifest>
|
|
@ -1,106 +0,0 @@
|
|||
package org.thoughtcrime.securesms;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import net.zetetic.database.sqlcipher.SQLiteDatabase;
|
||||
|
||||
import org.signal.core.util.StreamUtil;
|
||||
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecretUtil;
|
||||
import org.thoughtcrime.securesms.database.KeyValueDatabase;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.util.SetUtil;
|
||||
import org.thoughtcrime.securesms.util.SqlUtil;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Helper to initialize app state with the right database contents, shared prefs, etc.
|
||||
*/
|
||||
final class MockAppDataInitializer {
|
||||
|
||||
private static final Set<String> IGNORED_TABLES = SetUtil.newHashSet(
|
||||
"sqlite_sequence",
|
||||
"sms_fts",
|
||||
"sms_fts_data",
|
||||
"sms_fts_idx",
|
||||
"sms_fts_docsize",
|
||||
"sms_fts_config",
|
||||
"mms_fts",
|
||||
"mms_fts_data",
|
||||
"mms_fts_idx",
|
||||
"mms_fts_docsize",
|
||||
"mms_fts_config",
|
||||
"emoji_search",
|
||||
"emoji_search_data",
|
||||
"emoji_search_idx",
|
||||
"emoji_search_docsize",
|
||||
"emoji_search_config"
|
||||
);
|
||||
|
||||
public static void initialize(@NonNull Application application, @NonNull File sqlDirectory) throws IOException {
|
||||
String localE164 = StreamUtil.readFullyAsString(new FileInputStream(new File(sqlDirectory, "e164.txt"))).trim();
|
||||
String mainSql = StreamUtil.readFullyAsString(new FileInputStream(new File(sqlDirectory, "signal.sql")));
|
||||
String keyValueSql = StreamUtil.readFullyAsString(new FileInputStream(new File(sqlDirectory, "signal-key-value.sql")));
|
||||
|
||||
initializeDatabase(SignalDatabase.getRawDatabase(), mainSql);
|
||||
initializeDatabase(KeyValueDatabase.getInstance(application).getSqlCipherDatabase(), keyValueSql);
|
||||
|
||||
initializePreferences(application, localE164);
|
||||
|
||||
SignalStore.resetCache();
|
||||
}
|
||||
|
||||
private static void initializeDatabase(@NonNull SQLiteDatabase db, @NonNull String sql) {
|
||||
db.beginTransaction();
|
||||
try {
|
||||
clearAllTables(db);
|
||||
execStatements(db, sql);
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
private static void clearAllTables(@NonNull SQLiteDatabase db) {
|
||||
List<String> tables = SqlUtil.getAllTables(db);
|
||||
|
||||
for (String table : tables) {
|
||||
if (!IGNORED_TABLES.contains(table)) {
|
||||
db.execSQL("DELETE FROM " + table);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void execStatements(@NonNull SQLiteDatabase db, @NonNull String sql) {
|
||||
List<String> statements = SqlUtil.splitStatements(sql);
|
||||
|
||||
for (String statement : statements) {
|
||||
db.execSQL(statement);
|
||||
}
|
||||
}
|
||||
|
||||
private static void initializePreferences(@NonNull Context context, @NonNull String localE164) {
|
||||
MasterSecret masterSecret = MasterSecretUtil.generateMasterSecret(context, MasterSecretUtil.UNENCRYPTED_PASSPHRASE);
|
||||
|
||||
MasterSecretUtil.generateAsymmetricMasterSecret(context, masterSecret);
|
||||
IdentityKeyUtil.generateIdentityKeys(context);
|
||||
|
||||
TextSecurePreferences.setPromptedPushRegistration(context, true);
|
||||
SignalStore.account().setE164(localE164);
|
||||
SignalStore.account().setAci(Recipient.external(context, localE164).requireAci());
|
||||
SignalStore.account().setRegistered(true);
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package org.thoughtcrime.securesms;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
public class MockApplicationContext extends ApplicationContext {
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
try {
|
||||
MockAppDataInitializer.initialize(this, new File(getExternalFilesDir(null), "mock-data"));
|
||||
} catch (IOException e) {
|
||||
throw new IllegalStateException("Failed to initialize mock data!", e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/core_green"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
Ładowanie…
Reference in New Issue