diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java index a1da1af9d..318153320 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java @@ -109,7 +109,7 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager, @Nullable private GroupId blockedGroup = null; private boolean blockSignInReminder = false; - private boolean blockBlogs = false; + private boolean blockGroups = false, blockBlogs = false; private long lastSound = 0; private volatile Settings settings = new Settings(); @@ -223,8 +223,8 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager, if (s.getNamespace().equals(SETTINGS_NAMESPACE)) settings = s.getSettings(); } else if (e instanceof ConversationMessageReceivedEvent) { - ConversationMessageReceivedEvent p = - (ConversationMessageReceivedEvent) e; + ConversationMessageReceivedEvent p = + (ConversationMessageReceivedEvent) e; showContactNotification(p.getContactId()); } else if (e instanceof GroupMessageAddedEvent) { GroupMessageAddedEvent g = (GroupMessageAddedEvent) e; @@ -385,6 +385,7 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager, @UiThread private void showGroupMessageNotification(GroupId g) { + if (blockGroups) return; if (g.equals(blockedGroup)) return; groupCounts.add(g); updateGroupMessageNotification(true); @@ -681,6 +682,17 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager, }); } + @Override + public void blockAllGroupMessageNotifications() { + androidExecutor.runOnUiThread((Runnable) () -> blockGroups = true); + + } + + @Override + public void unblockAllGroupMessageNotifications() { + androidExecutor.runOnUiThread((Runnable) () -> blockGroups = false); + } + @Override public void blockAllBlogPostNotifications() { androidExecutor.runOnUiThread((Runnable) () -> blockBlogs = true); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java index a2eed0114..8d7735133 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java @@ -121,6 +121,7 @@ public class ForumListFragment extends BaseEventFragment implements @Override public void onStart() { super.onStart(); + // TODO block all forum post notifications as well notificationManager.clearAllForumPostNotifications(); loadForums(); loadAvailableForums(); 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 24adf4a59..fabed8c79 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 @@ -101,7 +101,7 @@ public class GroupListFragment extends BaseFragment implements @Override public void onStart() { super.onStart(); - // TODO should we block all group message notifications as well? + viewModel.blockAllGroupMessageNotifications(); viewModel.clearAllGroupMessageNotifications(); // The attributes and sorting of the groups may have changed while we // were stopped and we have no way finding out about them, so re-load @@ -117,6 +117,7 @@ public class GroupListFragment extends BaseFragment implements public void onStop() { super.onStop(); list.stopPeriodicUpdate(); + viewModel.unblockAllGroupMessageNotifications(); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java index 61842f4fd..bc0d50682 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java @@ -103,6 +103,14 @@ class GroupListViewModel extends DbViewModel implements EventListener { notificationManager.clearAllGroupMessageNotifications(); } + void blockAllGroupMessageNotifications() { + notificationManager.blockAllGroupMessageNotifications(); + } + + void unblockAllGroupMessageNotifications() { + notificationManager.unblockAllGroupMessageNotifications(); + } + @Override public void eventOccurred(Event e) { if (e instanceof GroupMessageAddedEvent) { diff --git a/briar-android/src/main/java/org/briarproject/briar/api/android/AndroidNotificationManager.java b/briar-android/src/main/java/org/briarproject/briar/api/android/AndroidNotificationManager.java index eec2b8e9f..b2eeebd16 100644 --- a/briar-android/src/main/java/org/briarproject/briar/api/android/AndroidNotificationManager.java +++ b/briar-android/src/main/java/org/briarproject/briar/api/android/AndroidNotificationManager.java @@ -82,6 +82,10 @@ public interface AndroidNotificationManager { void unblockNotification(GroupId g); + void blockAllGroupMessageNotifications(); + + void unblockAllGroupMessageNotifications(); + void blockAllBlogPostNotifications(); void unblockAllBlogPostNotifications();