From 3cbe527959b209d813152d8beb46041781943827 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sun, 22 Nov 2020 17:34:21 +0100 Subject: [PATCH] Implement publishing ikey elements --- .../detail/AccountDetailsFragment.java | 42 +++++++--- .../AndroidAccountDetailsViewModel.java | 4 + .../res/layout/fragment_account_details.xml | 14 +++- .../view_fingerprints_card_toggleable.xml | 2 +- .../main/res/menu/menu_account_details.xml | 4 + .../detail/AccountDetailsViewModel.java | 76 +++++++++++++++++++ 6 files changed, 127 insertions(+), 15 deletions(-) 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 f94db8a..984bdb2 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 @@ -57,6 +57,9 @@ public class AccountDetailsFragment extends Fragment { @BindView(R.id.btn_backup_ikey) Button ikeyCreateBackupButton; + @BindView(R.id.btn_send_ikey_element) + Button ikeySendDecisions; + @BindView(R.id.ikey_fingerprint) TextView ikeyFingerprint; @@ -81,6 +84,19 @@ public class AccountDetailsFragment extends Fragment { this.accountId = accountId; } + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_account_details, container, false); + ButterKnife.bind(this, view); + setHasOptionsMenu(true); + + externalFingerprintRecyclerView.setAdapter(otherFingerprintsAdapter); + observeViewModel(); + + return view; + } + @Override public void onAttach(@NonNull Context context) { super.onAttach(context); @@ -89,8 +105,7 @@ public class AccountDetailsFragment extends Fragment { viewModel = new ViewModelProvider(this, factory) .get(AndroidAccountDetailsViewModel.class); - this.otherFingerprintsAdapter = new ToggleableFingerprintsAdapter( - (fingerprint, checked) -> viewModel.markFingerprintTrusted(fingerprint, checked)); + this.otherFingerprintsAdapter = new ToggleableFingerprintsAdapter(this::markFingerprintTrusted); this.otherFingerprintsAdapter.setItemLongClickListener(fingerprint -> viewModel.unpublishPublicKey(fingerprint)); } @@ -115,21 +130,22 @@ public class AccountDetailsFragment extends Fragment { case R.id.action_restore_ikey_backup: viewModel.onRestoreIkeyBackup(); return true; + + // case R.id.action_setup_ikey: + // getParentFragmentManager().beginTransaction() + // .replace(R.id.fragment, IkeySetupFragment.newInstance(accountId)) + // .commit(); + // return true; } return super.onOptionsItemSelected(item); } - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_account_details, container, false); - ButterKnife.bind(this, view); - setHasOptionsMenu(true); + private void markFingerprintTrusted(OpenPgpV4Fingerprint fingerprint, boolean trusted) { + viewModel.markFingerprintTrusted(fingerprint, trusted); + } - externalFingerprintRecyclerView.setAdapter(otherFingerprintsAdapter); - observeViewModel(); - - return view; + private void sendIkeyElement() { + viewModel.sendIkeyElement(accountId); } private void observeViewModel() { @@ -165,6 +181,8 @@ public class AccountDetailsFragment extends Fragment { ikeyCreateBackupButton.setEnabled(authenticated); localKeyCreateBackupButton.setEnabled(authenticated); }); + + ikeySendDecisions.setOnClickListener(v -> sendIkeyElement()); } private void startShareFingerprintIntent(OpenPgpV4Fingerprint fingerprint) { diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AndroidAccountDetailsViewModel.java b/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AndroidAccountDetailsViewModel.java index 1310274..2a69d5c 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AndroidAccountDetailsViewModel.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AndroidAccountDetailsViewModel.java @@ -105,6 +105,10 @@ public class AndroidAccountDetailsViewModel extends AndroidViewModel implements getCommonViewModel().markFingerprintTrusted(accountId, fingerprint, trusted); } + public void sendIkeyElement(UUID accountId) { + getCommonViewModel().sendIkeyElement(accountId); + } + public LiveData> getIkeyFingerprint() { return ikeyFingerprint; } diff --git a/app/src/main/res/layout/fragment_account_details.xml b/app/src/main/res/layout/fragment_account_details.xml index 18f32dd..f5e1f70 100644 --- a/app/src/main/res/layout/fragment_account_details.xml +++ b/app/src/main/res/layout/fragment_account_details.xml @@ -16,6 +16,7 @@ android:orientation="vertical"> @@ -134,7 +135,7 @@ android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Local Fingerprint" + android:text="Device Key" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -153,6 +154,7 @@