Skip to content
Snippets Groups Projects
AndroidModule.java 2.33 KiB
Newer Older
package org.briarproject.android;
akwizgran's avatar
akwizgran committed
import android.app.Application;
akwizgran's avatar
akwizgran committed
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import org.briarproject.api.android.AndroidExecutor;
import org.briarproject.api.android.AndroidNotificationManager;
import org.briarproject.api.android.ReferenceManager;
import org.briarproject.api.crypto.SecretKey;
import org.briarproject.api.db.DatabaseConfig;
akwizgran's avatar
akwizgran committed
import org.briarproject.api.event.EventBus;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.ui.UiCallback;
akwizgran's avatar
akwizgran committed
import java.io.File;
akwizgran's avatar
akwizgran committed
import javax.inject.Singleton;

import static android.content.Context.MODE_PRIVATE;

public class AndroidModule extends AbstractModule {

	private final UiCallback uiCallback;
		// Use a dummy UI callback
		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();
		bind(AndroidExecutor.class).to(AndroidExecutorImpl.class).in(
				Singleton.class);
		bind(ReferenceManager.class).to(ReferenceManagerImpl.class).in(
				Singleton.class);
		bind(UiCallback.class).toInstance(uiCallback);
	@Provides @Singleton
	DatabaseConfig getDatabaseConfig(final Application app) {
		final File dir = app.getApplicationContext().getDir("db", MODE_PRIVATE);
		return new DatabaseConfig() {

			private volatile SecretKey key = null;

			public boolean databaseExists() {
				return dir.isDirectory() && dir.listFiles().length > 0;
			}

			public File getDatabaseDirectory() {
				return dir;
			}

			public void setEncryptionKey(SecretKey key) {
			public SecretKey getEncryptionKey() {
				return key;
			}

			public long getMaxSize() {
				return Long.MAX_VALUE;
			}
		};
	}

	@Provides @Singleton
	AndroidNotificationManager getAndroidNotificationManager(
akwizgran's avatar
akwizgran committed
			LifecycleManager lifecycleManager, EventBus eventBus,
			AndroidNotificationManagerImpl notificationManager) {
		lifecycleManager.register(notificationManager);
akwizgran's avatar
akwizgran committed
		eventBus.addListener(notificationManager);
		return notificationManager;
	}