From 8b709969ab8d9502912945e5374b0f9329870194 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 6 Nov 2018 13:42:03 -0300 Subject: [PATCH] [android] pass ContactId via ViewModel to AliasDialogFragment --- .../android/contact/AliasDialogFragment.java | 20 +++--------------- .../android/contact/ConversationActivity.java | 2 +- .../contact/ConversationViewModel.java | 21 ++++++++----------- 3 files changed, 13 insertions(+), 30 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/AliasDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/AliasDialogFragment.java index 3b5ee0b0c..e4e0f644d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/AliasDialogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/AliasDialogFragment.java @@ -12,7 +12,6 @@ import android.widget.Button; import android.widget.EditText; import org.briarproject.bramble.api.contact.Contact; -import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.BriarActivity; @@ -28,28 +27,16 @@ public class AliasDialogFragment extends AppCompatDialogFragment { ViewModelProvider.Factory viewModelFactory; private ConversationViewModel viewModel; - private ContactId contactId; private EditText aliasEditText; - public static AliasDialogFragment newInstance(ContactId id) { - AliasDialogFragment f = new AliasDialogFragment(); - - Bundle args = new Bundle(); - args.putInt("contactId", id.getInt()); - f.setArguments(args); - - return f; + public static AliasDialogFragment newInstance() { + return new AliasDialogFragment(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (getArguments() == null) throw new IllegalArgumentException(); - int contactIdInt = getArguments().getInt("contactId", -1); - if (contactIdInt == -1) throw new IllegalArgumentException(); - contactId = new ContactId(contactIdInt); - setStyle(STYLE_NO_TITLE, R.style.BriarDialogTheme); if (getActivity() == null) return; @@ -73,8 +60,7 @@ public class AliasDialogFragment extends AppCompatDialogFragment { Button setButton = v.findViewById(R.id.setButton); setButton.setOnClickListener(v1 -> { - viewModel.setContactAlias(contactId, - aliasEditText.getText().toString()); + viewModel.setContactAlias(aliasEditText.getText().toString()); getDialog().dismiss(); }); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java index 43942789c..4a0cf5eb8 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java @@ -293,7 +293,7 @@ public class ConversationActivity extends BriarActivity startActivityForResult(intent, REQUEST_INTRODUCTION); return true; case R.id.action_set_alias: - AliasDialogFragment.newInstance(contactId).show( + AliasDialogFragment.newInstance().show( getSupportFragmentManager(), AliasDialogFragment.TAG); return true; case R.id.action_social_remove_person: diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationViewModel.java index c80842876..0c73cc220 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationViewModel.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import javax.inject.Inject; +import static java.util.Objects.requireNonNull; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; import static org.briarproject.bramble.util.LogUtils.logDuration; @@ -60,20 +61,19 @@ public class ConversationViewModel extends AndroidViewModel { void setContactId(ContactId contactId) { if (this.contactId == null) { this.contactId = contactId; - loadContact(contactId); + loadContact(); } else if (!contactId.equals(this.contactId)) { throw new IllegalStateException(); } } - private void loadContact(ContactId contactId) { - if (!contactId.equals(this.contactId)) { - throw new IllegalStateException(); - } + private void loadContact() { dbExecutor.execute(() -> { try { long start = now(); - contact.postValue(contactManager.getContact(contactId)); + Contact c = + contactManager.getContact(requireNonNull(contactId)); + contact.postValue(c); logDuration(LOG, "Loading contact", start); } catch (NoSuchContactException e) { contactDeleted.postValue(true); @@ -83,15 +83,12 @@ public class ConversationViewModel extends AndroidViewModel { }); } - void setContactAlias(ContactId contactId, String alias) { - if (!contactId.equals(this.contactId)) { - throw new IllegalStateException(); - } + void setContactAlias(String alias) { dbExecutor.execute(() -> { try { - contactManager.setContactAlias(contactId, + contactManager.setContactAlias(requireNonNull(contactId), alias.isEmpty() ? null : alias); - loadContact(contactId); + loadContact(); } catch (DbException e) { logException(LOG, WARNING, e); }