diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/DistributedBackupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/DistributedBackupActivity.java index c3b2d7d28..e4d61121e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/DistributedBackupActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/DistributedBackupActivity.java @@ -40,7 +40,6 @@ public class DistributedBackupActivity extends BriarActivity implements public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_distributed_backup); - // TODO here we should check if we already have a backup try { db.transaction(false, txn -> { diff --git a/briar-android/src/main/java/org/briarproject/briar/socialbackup/AndroidSocialBackupModule.java b/briar-android/src/main/java/org/briarproject/briar/socialbackup/AndroidSocialBackupModule.java new file mode 100644 index 000000000..183ab2720 --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/socialbackup/AndroidSocialBackupModule.java @@ -0,0 +1,97 @@ +package org.briarproject.briar.socialbackup; + +import org.briarproject.bramble.api.client.ClientHelper; +import org.briarproject.bramble.api.contact.ContactManager; +import org.briarproject.bramble.api.data.MetadataEncoder; +import org.briarproject.bramble.api.lifecycle.LifecycleManager; +import org.briarproject.bramble.api.sync.validation.ValidationManager; +import org.briarproject.bramble.api.system.Clock; +import org.briarproject.bramble.api.versioning.ClientVersioningManager; +import org.briarproject.briar.android.socialbackup.DarkCrystalImpl; +import org.briarproject.briar.api.socialbackup.DarkCrystal; +import org.briarproject.briar.api.socialbackup.SocialBackupManager; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +import static org.briarproject.briar.api.socialbackup.SocialBackupManager.CLIENT_ID; +import static org.briarproject.briar.api.socialbackup.SocialBackupManager.MAJOR_VERSION; +import static org.briarproject.briar.api.socialbackup.SocialBackupManager.MINOR_VERSION; + +@Module +public class AndroidSocialBackupModule { + + public static class EagerSingletons { + @Inject + SocialBackupManager socialBackupManager; + @Inject + SocialBackupValidator socialBackupValidator; + } + + @Provides + @Singleton + SocialBackupManager socialBackupManager( + LifecycleManager lifecycleManager, + ContactManager contactManager, + ValidationManager validationManager, + ClientVersioningManager clientVersioningManager, + SocialBackupManagerImpl socialBackupManager) { + lifecycleManager.registerOpenDatabaseHook(socialBackupManager); + contactManager.registerContactHook(socialBackupManager); + validationManager.registerIncomingMessageHook(CLIENT_ID, + MAJOR_VERSION, socialBackupManager); + clientVersioningManager.registerClient(CLIENT_ID, MAJOR_VERSION, + MINOR_VERSION, socialBackupManager); + return socialBackupManager; + } + + @Provides + @Singleton + SocialBackupValidator socialBackupValidator( + ValidationManager validationManager, + ClientHelper clientHelper, + MetadataEncoder metadataEncoder, + Clock clock) { + SocialBackupValidator validator = + new SocialBackupValidator(clientHelper, metadataEncoder, clock); + validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION, + validator); + return validator; + } + + @Provides + BackupMetadataParser backupMetadataParser( + BackupMetadataParserImpl backupMetadataParser) { + return backupMetadataParser; + } + + @Provides + BackupMetadataEncoder backupMetadataEncoder( + BackupMetadataEncoderImpl backupMetadataEncoder) { + return backupMetadataEncoder; + } + + @Provides + BackupPayloadEncoder backupPayloadEncoder( + BackupPayloadEncoderImpl backupPayloadEncoder) { + return backupPayloadEncoder; + } + + @Provides + MessageEncoder messageEncoder(MessageEncoderImpl messageEncoder) { + return messageEncoder; + } + + @Provides + MessageParser messageParser(MessageParserImpl messageParser) { + return messageParser; + } + + @Provides + DarkCrystal darkCrystal(DarkCrystalImpl darkCrystal) { + return darkCrystal; + } +}