mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 03:09:04 +01:00
140 lines
3.3 KiB
Java
140 lines
3.3 KiB
Java
package org.briarproject.android;
|
|
|
|
import android.app.Application;
|
|
|
|
import org.briarproject.android.api.AndroidNotificationManager;
|
|
import org.briarproject.android.api.ReferenceManager;
|
|
import org.briarproject.api.crypto.CryptoComponent;
|
|
import org.briarproject.api.crypto.PublicKey;
|
|
import org.briarproject.api.crypto.SecretKey;
|
|
import org.briarproject.api.db.DatabaseConfig;
|
|
import org.briarproject.api.event.EventBus;
|
|
import org.briarproject.api.lifecycle.LifecycleManager;
|
|
import org.briarproject.api.reporting.DevConfig;
|
|
import org.briarproject.api.ui.UiCallback;
|
|
import org.briarproject.util.StringUtils;
|
|
|
|
import java.io.File;
|
|
import java.security.GeneralSecurityException;
|
|
|
|
import javax.inject.Inject;
|
|
import javax.inject.Singleton;
|
|
|
|
import dagger.Module;
|
|
import dagger.Provides;
|
|
|
|
import static android.content.Context.MODE_PRIVATE;
|
|
import static org.briarproject.api.reporting.ReportingConstants.DEV_ONION_ADDRESS;
|
|
import static org.briarproject.api.reporting.ReportingConstants.DEV_PUBLIC_KEY_HEX;
|
|
|
|
@Module
|
|
public class AppModule {
|
|
|
|
static class EagerSingletons {
|
|
@Inject
|
|
AndroidNotificationManager androidNotificationManager;
|
|
}
|
|
|
|
private final Application application;
|
|
private final UiCallback uiCallback;
|
|
|
|
public AppModule(Application application) {
|
|
this.application = application;
|
|
uiCallback = new UiCallback() {
|
|
|
|
public int showChoice(String[] options, String... message) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
public boolean showConfirmationMessage(String... message) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
public void showMessage(String... message) {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
};
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
Application providesApplication() {
|
|
return application;
|
|
}
|
|
|
|
@Provides
|
|
UiCallback provideUICallback() {
|
|
return uiCallback;
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
DatabaseConfig provideDatabaseConfig(Application app) {
|
|
final File dir = app.getApplicationContext().getDir("db", MODE_PRIVATE);
|
|
return new DatabaseConfig() {
|
|
|
|
private volatile SecretKey key = null;
|
|
|
|
public boolean databaseExists() {
|
|
if (!dir.isDirectory()) return false;
|
|
File[] files = dir.listFiles();
|
|
return files != null && files.length > 0;
|
|
}
|
|
|
|
public File getDatabaseDirectory() {
|
|
return dir;
|
|
}
|
|
|
|
public void setEncryptionKey(SecretKey key) {
|
|
this.key = key;
|
|
}
|
|
|
|
public SecretKey getEncryptionKey() {
|
|
return key;
|
|
}
|
|
|
|
public long getMaxSize() {
|
|
return Long.MAX_VALUE;
|
|
}
|
|
};
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
DevConfig provideDevConfig(final CryptoComponent crypto) {
|
|
return new DevConfig() {
|
|
|
|
@Override
|
|
public PublicKey getDevPublicKey() {
|
|
try {
|
|
return crypto.getMessageKeyParser().parsePublicKey(
|
|
StringUtils.fromHexString(DEV_PUBLIC_KEY_HEX));
|
|
} catch (GeneralSecurityException e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String getDevOnionAddress() {
|
|
return DEV_ONION_ADDRESS;
|
|
}
|
|
};
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
ReferenceManager provideReferenceManager() {
|
|
return new ReferenceManagerImpl();
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
AndroidNotificationManager provideAndroidNotificationManager(
|
|
LifecycleManager lifecycleManager, EventBus eventBus,
|
|
AndroidNotificationManagerImpl notificationManager) {
|
|
lifecycleManager.registerService(notificationManager);
|
|
eventBus.addListener(notificationManager);
|
|
return notificationManager;
|
|
}
|
|
}
|