Only remove PendingContact from UI when removed from DB

This commit is contained in:
Torsten Grote
2019-05-01 10:15:07 -03:00
parent 7a71d2bad4
commit 2c014b4e46
4 changed files with 16 additions and 6 deletions

View File

@@ -79,8 +79,10 @@ public interface ContactManager {
/**
* Removes a {@link PendingContact} that is in state
* {@link PendingContactState FAILED}.
* @param commitAction an action to run on the main thread after removing.
*/
void removePendingContact(PendingContact pendingContact) throws DbException;
void removePendingContact(PendingContact pendingContact,
Runnable commitAction) throws DbException;
/**
* Returns the contact with the given ID.

View File

@@ -222,9 +222,15 @@ class ContactManagerImpl implements ContactManager {
}
@Override
public void removePendingContact(PendingContact pendingContact) {
public void removePendingContact(PendingContact pendingContact,
Runnable commitAction) throws DbException {
// TODO replace with real implementation
pendingContacts.remove(pendingContact);
try {
Thread.sleep(250);
} catch (InterruptedException ignored) {
}
db.transaction(true, txn -> txn.attach(commitAction));
}
@Override

View File

@@ -86,8 +86,8 @@ public class PendingContactListActivity extends BriarActivity
@Override
public void onFailedPendingContactRemoved(PendingContact pendingContact) {
adapter.remove(pendingContact);
viewModel.removePendingContact(pendingContact);
viewModel.removePendingContact(pendingContact,
() -> adapter.remove(pendingContact));
}
private void onPendingContactsChanged(Collection<PendingContact> contacts) {

View File

@@ -81,10 +81,12 @@ public class PendingContactListViewModel extends AndroidViewModel
return pendingContacts;
}
void removePendingContact(PendingContact pendingContact) {
void removePendingContact(PendingContact pendingContact,
Runnable commitAction) {
dbExecutor.execute(() -> {
try {
contactManager.removePendingContact(pendingContact);
contactManager
.removePendingContact(pendingContact, commitAction);
} catch (DbException e) {
logException(LOG, WARNING, e);
}