diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java index 137f7066d..50f5b5b3d 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java @@ -9,7 +9,6 @@ import org.briarproject.briar.android.controller.handler.ResultExceptionHandler; import java.util.Collection; -import androidx.annotation.Nullable; import androidx.annotation.UiThread; @NotNullByDefault @@ -18,7 +17,10 @@ public interface BlogController extends BaseController { void setGroupId(GroupId g); @UiThread - void setBlogSharingListener(@Nullable BlogSharingListener listener); + void setBlogSharingListener(BlogSharingListener listener); + + @UiThread + void unsetBlogSharingListener(BlogSharingListener listener); void loadBlogPosts( ResultExceptionHandler, DbException> handler); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogControllerImpl.java index c78173c7f..08f43d8bc 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogControllerImpl.java @@ -96,10 +96,15 @@ class BlogControllerImpl extends BaseControllerImpl } @Override - public void setBlogSharingListener(@Nullable BlogSharingListener listener) { + public void setBlogSharingListener(BlogSharingListener listener) { this.listener = listener; } + @Override + public void unsetBlogSharingListener(BlogSharingListener listener) { + if (this.listener == listener) this.listener = null; + } + @Override public void eventOccurred(Event e) { if (groupId == null || listener == null) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java index 0a68d8a95..eb2540677 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java @@ -141,7 +141,8 @@ public class BlogFragment extends BaseFragment @Override public void onDestroy() { super.onDestroy(); - blogController.setBlogSharingListener(null); + blogController.unsetBlogSharingListener(this); + sharingController.unsetSharingListener(this); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedController.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedController.java index 039eb78fd..e50b3ba17 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedController.java @@ -7,7 +7,6 @@ import org.briarproject.briar.api.blog.Blog; import java.util.Collection; -import androidx.annotation.Nullable; import androidx.annotation.UiThread; @NotNullByDefault @@ -19,7 +18,10 @@ public interface FeedController extends BaseController { void loadPersonalBlog(ResultExceptionHandler handler); @UiThread - void setFeedListener(@Nullable FeedListener listener); + void setFeedListener(FeedListener listener); + + @UiThread + void unsetFeedListener(FeedListener listener); @NotNullByDefault interface FeedListener extends BlogListener { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedControllerImpl.java index 714fc0525..5a228891a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedControllerImpl.java @@ -69,10 +69,15 @@ class FeedControllerImpl extends BaseControllerImpl implements FeedController { } @Override - public void setFeedListener(@Nullable FeedListener listener) { + public void setFeedListener(FeedListener listener) { this.listener = listener; } + @Override + public void unsetFeedListener(FeedListener listener) { + if (this.listener == listener) this.listener = null; + } + @Override public void eventOccurred(Event e) { if (listener == null) throw new IllegalStateException(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java index 575448b1b..2d01394a3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java @@ -134,7 +134,7 @@ public class FeedFragment extends BaseFragment implements @Override public void onDestroy() { super.onDestroy(); - feedController.setFeedListener(null); + feedController.unsetFeedListener(this); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java index c098e82b5..01f885578 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java @@ -16,6 +16,12 @@ public interface SharingController { @UiThread void setSharingListener(SharingListener listener); + /** + * Unsets the listener. + */ + @UiThread + void unsetSharingListener(SharingListener listener); + /** * Call this when your lifecycle starts, * so the listener will be called when information changes. diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java index 9cdc47cdb..2d22db901 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java @@ -43,6 +43,11 @@ public class SharingControllerImpl implements SharingController, EventListener { this.listener = listener; } + @Override + public void unsetSharingListener(SharingListener listener) { + if (this.listener == listener) this.listener = null; + } + @Override public void onStart() { eventBus.addListener(this); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListController.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListController.java index d4e5c9f99..47763f9d8 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListController.java @@ -10,8 +10,6 @@ import org.briarproject.briar.api.privategroup.GroupMessageHeader; import java.util.Collection; -import javax.annotation.Nullable; - import androidx.annotation.UiThread; @NotNullByDefault @@ -21,7 +19,10 @@ interface GroupListController extends DbController { * The listener must be set right after the controller was injected */ @UiThread - void setGroupListListener(@Nullable GroupListListener listener); + void setGroupListListener(GroupListListener listener); + + @UiThread + void unsetGroupListListener(GroupListListener listener); @UiThread void onStart(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java index 3be2dd123..51d97095e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java @@ -80,10 +80,15 @@ class GroupListControllerImpl extends DbControllerImpl } @Override - public void setGroupListListener(@Nullable GroupListListener listener) { + public void setGroupListListener(GroupListListener listener) { this.listener = listener; } + @Override + public void unsetGroupListListener(GroupListListener listener) { + if (this.listener == listener) this.listener = null; + } + @Override @CallSuper public void onStart() { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java index f074be983..fcc3027d6 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java @@ -112,7 +112,7 @@ public class GroupListFragment extends BaseFragment implements @Override public void onDestroy() { super.onDestroy(); - controller.setGroupListListener(null); + controller.unsetGroupListListener(this); } @Override