package com.tresorit.zerokitsdk.viewmodel; import android.databinding.BaseObservable; import android.databinding.ObservableField; import android.view.View; import com.tresorit.zerokit.Zerokit; import com.tresorit.zerokit.call.Action; import com.tresorit.zerokit.response.ResponseZerokitError; import com.tresorit.zerokitsdk.message.CopyEncryptedTextMessage; import com.tresorit.zerokitsdk.message.CreateTresorFinishedMessage; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import javax.inject.Inject; public class EncryptTextViewModel extends BaseObservable { @SuppressWarnings("WeakerAccess") public final View.OnClickListener clickListenerEncrypt; @SuppressWarnings("WeakerAccess") public final View.OnClickListener clickListenerDecrypt; @SuppressWarnings("WeakerAccess") public final View.OnClickListener clickListenerCopy; @SuppressWarnings("WeakerAccess") public final ObservableField<Boolean> inProgressEncrypt; @SuppressWarnings("WeakerAccess") public final ObservableField<Boolean> inProgressDecrypt; @SuppressWarnings("WeakerAccess") public final ObservableField<Boolean> encryptClicked; @SuppressWarnings("WeakerAccess") public final ObservableField<String> textOriginal; @SuppressWarnings("WeakerAccess") public final ObservableField<String> textEncrypted; @SuppressWarnings("WeakerAccess") public final ObservableField<String> textDecrypted; @SuppressWarnings("WeakerAccess") public final ObservableField<String> textSummary; private final Zerokit zerokit; @SuppressWarnings("WeakerAccess") String tresorId; @Inject public EncryptTextViewModel(Zerokit zerokit, final EventBus eventBus) { this.zerokit = zerokit; this.inProgressEncrypt = new ObservableField<>(false); this.inProgressDecrypt = new ObservableField<>(false); this.encryptClicked = new ObservableField<>(false); this.textOriginal = new ObservableField<>(); this.textEncrypted = new ObservableField<>(); this.textSummary = new ObservableField<>(); this.textDecrypted = new ObservableField<>(); this.clickListenerEncrypt = new View.OnClickListener() { @Override public void onClick(View v) { encryptClicked.set(true); encrypt(tresorId, textOriginal.get()); } }; this.clickListenerDecrypt = new View.OnClickListener() { @Override public void onClick(View v) { decrypt(textEncrypted.get()); } }; this.clickListenerCopy = new View.OnClickListener() { @Override public void onClick(View v) { eventBus.post(new CopyEncryptedTextMessage(textEncrypted.get())); } }; } @SuppressWarnings("WeakerAccess") void encrypt(String tresorId, String text) { inProgressEncrypt.set(true); zerokit.encrypt(tresorId, text).enqueue(new Action<String>() { @Override public void call(String encryptedText) { inProgressEncrypt.set(false); textEncrypted.set(encryptedText); } }, new Action<ResponseZerokitError>() { @Override public void call(ResponseZerokitError responseZerokitError) { inProgressEncrypt.set(false); } }); } @SuppressWarnings("WeakerAccess") void decrypt(String cipherText) { inProgressDecrypt.set(true); zerokit.decrypt(cipherText).enqueue(new Action<String>() { @Override public void call(String decryptedText) { inProgressDecrypt.set(false); textDecrypted.set(decryptedText); } }, new Action<ResponseZerokitError>() { @Override public void call(ResponseZerokitError responseError) { inProgressDecrypt.set(false); textDecrypted.set(""); } }); } @Subscribe @SuppressWarnings("unused") public void onEvent(CreateTresorFinishedMessage message) { tresorId = message.getTresorId(); textSummary.set("Tresor ID: " + message.getTresorId()); } }