diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsActivity.java b/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsActivity.java index fea1fed..94619fe 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsActivity.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsActivity.java @@ -8,10 +8,10 @@ import androidx.appcompat.widget.Toolbar; import org.mercury_im.messenger.R; import org.mercury_im.messenger.android.crypto.ikey.IkeyBackupCreationFragment; -import org.mercury_im.messenger.android.ui.base.MercuryActivity; import org.mercury_im.messenger.android.ui.account.login.IkeyBackupRestoreOrSkipFragment; import org.mercury_im.messenger.android.ui.account.login.IkeyKeyInfoFragment; import org.mercury_im.messenger.android.ui.account.login.IkeySetupNavigator; +import org.mercury_im.messenger.android.ui.base.MercuryActivity; import org.mercury_im.messenger.android.util.ArgumentUtils; import java.util.UUID; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsFragment.java b/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsFragment.java index 5007ee8..a814891 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsFragment.java @@ -150,7 +150,7 @@ public class AccountDetailsFragment extends Fragment { } private void observeViewModel() { - viewModel.getIkeyFingerprint().observe(getViewLifecycleOwner(), this::displayIkeyFingerprint); + viewModel.getIkeyFingerprint().observe(getViewLifecycleOwner(), this::displayIkeyFingerprintAndDecisionButton); viewModel.getLocalFingerprint().observe(getViewLifecycleOwner(), this::displayLocalOxFingerprint); viewModel.getRemoteFingerprints().observe(getViewLifecycleOwner(), this::displayOtherOxFingerprints); @@ -223,4 +223,17 @@ public class AccountDetailsFragment extends Fragment { } } + private void displayIkeyFingerprintAndDecisionButton(Optional fingerprint) { + displayIkeyFingerprint(fingerprint); + displayIkeyDecisionPublishButton(fingerprint); + } + + private void displayIkeyDecisionPublishButton(Optional fingerprint) { + if (fingerprint.isPresent()) { + ikeySendDecisions.setVisibility(View.VISIBLE); + } else { + ikeySendDecisions.setVisibility(View.GONE); + } + } + } diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/account/login/IkeyBackupRestoreOrSkipFragment.java b/app/src/main/java/org/mercury_im/messenger/android/ui/account/login/IkeyBackupRestoreOrSkipFragment.java index 96b856e..ed02721 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/account/login/IkeyBackupRestoreOrSkipFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/account/login/IkeyBackupRestoreOrSkipFragment.java @@ -1,5 +1,7 @@ package org.mercury_im.messenger.android.ui.account.login; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -21,6 +23,9 @@ import java.util.UUID; import butterknife.BindView; import butterknife.ButterKnife; +import static android.app.Activity.RESULT_CANCELED; +import static android.app.Activity.RESULT_OK; + public class IkeyBackupRestoreOrSkipFragment extends Fragment { @BindView(R.id.btn_restore) @@ -69,6 +74,7 @@ public class IkeyBackupRestoreOrSkipFragment extends Fragment { Toast.makeText(getContext(), opt.getItem(), Toast.LENGTH_SHORT).show(); } }); + scanButton.setOnClickListener(v -> startQrCodeScanIntent()); } public void onRestore() { @@ -79,4 +85,36 @@ public class IkeyBackupRestoreOrSkipFragment extends Fragment { } } + + public void startQrCodeScanIntent() { + try { + + Intent intent = new Intent("com.google.zxing.client.android.SCAN"); + intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); // "PRODUCT_MODE for bar codes + + startActivityForResult(intent, 0); + + } catch (Exception e) { + + Uri marketUri = Uri.parse("market://details?id=com.google.zxing.client.android"); + Intent marketIntent = new Intent(Intent.ACTION_VIEW,marketUri); + startActivity(marketIntent); + + } + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 0) { + + if (resultCode == RESULT_OK) { + String contents = data.getStringExtra("SCAN_RESULT"); + backupCodeEditText.setText(contents); + } + if(resultCode == RESULT_CANCELED){ + //handle cancel + } + } + } }