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 137f7066d5a3aff9c1e03718b8a9b370abd4044e..50f5b5b3d0acfa544a62e52cb498e541e7adb496 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<Collection<BlogPostItem>, 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 c78173c7f16e6c682f22fba000a88e6349315e00..08f43d8bce9f938efd65528d145c7c429ba01ab0 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 0a68d8a95df3982acd033bf7825c451c963e8747..eb254067735abb8e871d5ff8338d4610380fe27a 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 039eb78fd28ae42cbe90140fb518f0cc5967d212..e50b3ba17988c43bf9387fcf6d05d034bbfcf39a 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<Blog, DbException> 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 714fc052555b7ce06b262658607bab7c1aad170a..5a228891a7bbc7646af684c0273bd4baa263c65b 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 575448b1b543e5a4f1497d57445d21d714c22e83..2d01394a3d922e42972b6b462fa37f6288c3a078 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 c098e82b5f404f581f5883a11d4ed3b226f2fdfc..01f8855787f6d192d6b9a6d7f387db32648240ff 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 9cdc47cdbc0094e4613552840ad9c33dea6060e0..2d22db901b6cb1462d3af95b972c85a622d94330 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 d4e5c9f9959cf5898ae1f67feff4897b6a96f6e3..47763f9d8d7cf1029ed9a91d1173a95214ae2f23 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 3be2dd123ac72458aa800d97d9cf86597ef309fd..51d97095e81d3cf8f34086651aa979bd1ccd4564 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 f074be98339e8077165b17c49332e08a01de5e13..fcc3027d628433b780e51f2954482545323bfa6d 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