diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogSharingStatusActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogSharingStatusActivity.java index 011ed26b4..35d606f96 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogSharingStatusActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogSharingStatusActivity.java @@ -3,11 +3,14 @@ package org.briarproject.briar.android.sharing; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; +import org.briarproject.briar.api.blog.BlogInvitationResponse; import org.briarproject.briar.api.blog.BlogSharingManager; +import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent; import java.util.Collection; @@ -26,6 +29,19 @@ public class BlogSharingStatusActivity extends SharingStatusActivity { component.inject(this); } + @Override + public void eventOccurred(Event e) { + super.eventOccurred(e); + if (e instanceof BlogInvitationResponseReceivedEvent) { + BlogInvitationResponseReceivedEvent r = + (BlogInvitationResponseReceivedEvent) e; + BlogInvitationResponse h = r.getMessageHeader(); + if (h.getShareableId().equals(getGroupId()) && h.wasAccepted()) { + loadSharedWith(); + } + } + } + @Override int getInfoText() { return R.string.sharing_status_blog; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java index 692191d4e..3c8203128 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java @@ -3,11 +3,14 @@ package org.briarproject.briar.android.sharing; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; +import org.briarproject.briar.api.forum.ForumInvitationResponse; import org.briarproject.briar.api.forum.ForumSharingManager; +import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent; import java.util.Collection; @@ -26,6 +29,19 @@ public class ForumSharingStatusActivity extends SharingStatusActivity { component.inject(this); } + @Override + public void eventOccurred(Event e) { + super.eventOccurred(e); + if (e instanceof ForumInvitationResponseReceivedEvent) { + ForumInvitationResponseReceivedEvent r = + (ForumInvitationResponseReceivedEvent) e; + ForumInvitationResponse h = r.getMessageHeader(); + if (h.getShareableId().equals(getGroupId()) && h.wasAccepted()) { + loadSharedWith(); + } + } + } + @Override int getInfoText() { return R.string.sharing_status_forum; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingStatusActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingStatusActivity.java index c303d4371..0660bc6f9 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingStatusActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingStatusActivity.java @@ -10,6 +10,9 @@ import android.widget.TextView; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.event.Event; +import org.briarproject.bramble.api.event.EventBus; +import org.briarproject.bramble.api.event.EventListener; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.plugin.ConnectionRegistry; @@ -18,6 +21,7 @@ import org.briarproject.briar.R; import org.briarproject.briar.android.activity.BriarActivity; import org.briarproject.briar.android.contact.ContactItem; import org.briarproject.briar.android.view.BriarRecyclerView; +import org.briarproject.briar.api.sharing.event.ContactLeftShareableEvent; import java.util.ArrayList; import java.util.Collection; @@ -32,10 +36,13 @@ import static org.briarproject.bramble.util.LogUtils.logException; @MethodsNotNullByDefault @ParametersNotNullByDefault -abstract class SharingStatusActivity extends BriarActivity { +abstract class SharingStatusActivity extends BriarActivity + implements EventListener { @Inject ConnectionRegistry connectionRegistry; + @Inject + EventBus eventBus; private static final Logger LOG = Logger.getLogger(SharingStatusActivity.class.getName()); @@ -68,6 +75,7 @@ abstract class SharingStatusActivity extends BriarActivity { @Override public void onStart() { super.onStart(); + eventBus.addListener(this); loadSharedWith(); } @@ -75,9 +83,21 @@ abstract class SharingStatusActivity extends BriarActivity { public void onStop() { super.onStop(); adapter.clear(); + eventBus.removeListener(this); list.showProgressBar(); } + @Override + public void eventOccurred(Event e) { + if (e instanceof ContactLeftShareableEvent) { + ContactLeftShareableEvent c = (ContactLeftShareableEvent) e; + if (c.getGroupId().equals(getGroupId())) { + loadSharedWith(); + } + } + // TODO ContactConnectedEvent and ContactDisconnectedEvent + } + @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items @@ -100,7 +120,7 @@ abstract class SharingStatusActivity extends BriarActivity { return groupId; } - private void loadSharedWith() { + protected void loadSharedWith() { runOnDbThread(() -> { try { List contactItems = new ArrayList<>(); @@ -118,6 +138,7 @@ abstract class SharingStatusActivity extends BriarActivity { private void displaySharedWith(List contacts) { runOnUiThreadUnlessDestroyed(() -> { + adapter.clear(); if (contacts.isEmpty()) list.showData(); else adapter.addAll(contacts); });