[android] pass ContactId via ViewModel to AliasDialogFragment

This commit is contained in:
Torsten Grote
2018-11-06 13:42:03 -03:00
parent fe94b65b3b
commit 8b709969ab
3 changed files with 13 additions and 30 deletions

View File

@@ -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();
});

View File

@@ -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:

View File

@@ -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);
}