package org.mercury_im.messenger.core.viewmodel.ikey; import org.jivesoftware.smackx.ikey.IkeyManager; import org.jivesoftware.smackx.ox.OpenPgpSecretKeyBackupPassphrase; import org.mercury_im.messenger.core.connection.MercuryConnection; import org.mercury_im.messenger.core.connection.MercuryConnectionManager; import org.mercury_im.messenger.core.crypto.ikey.IkeyInitializer; import org.mercury_im.messenger.core.crypto.ikey.IkeyRepository; import org.mercury_im.messenger.core.util.Optional; import org.mercury_im.messenger.core.viewmodel.MercuryViewModel; import org.mercury_im.messenger.entity.Account; import java.util.UUID; import javax.inject.Inject; import io.reactivex.Observable; public class IkeySecretKeyBackupCreationViewModel implements MercuryViewModel { private final MercuryConnectionManager connectionManager; private final IkeyInitializer ikeyInitializer; private UUID accountId; private final IkeyRepository ikeyRepository; @Inject public IkeySecretKeyBackupCreationViewModel(MercuryConnectionManager connectionManager, IkeyInitializer ikeyInitializer, IkeyRepository ikeyRepository) { this.connectionManager = connectionManager; this.ikeyInitializer = ikeyInitializer; this.ikeyRepository = ikeyRepository; } public void setAccountId(UUID accountId) { this.accountId = accountId; } public void createIkeySecretKeyBackup(Account account) { MercuryConnection connection = connectionManager.getConnection(account); IkeyManager ikeyManager = ikeyInitializer.initFor(connection); } public Observable> getPassphrase() { return ikeyRepository.loadBackupPassphrase(accountId).toObservable(); } }