Merge pull request #548 from RyanRory/fix-open-group-spam

Fix Open Group Notification Spam
This commit is contained in:
Niels Andriesse 2021-05-20 15:50:49 +10:00 committed by GitHub
commit 31b5cfb4e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 32 deletions

View File

@ -206,10 +206,8 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
poller.setCaughtUp(false); poller.setCaughtUp(false);
} }
startPollingIfNeeded(); startPollingIfNeeded();
// FIXME: Open group handling
/* OpenGroupManager.INSTANCE.setAllCaughtUp(false);
publicChatManager.markAllAsNotCaughtUp();
*/
OpenGroupManager.INSTANCE.startPolling(); OpenGroupManager.INSTANCE.startPolling();
} }

View File

@ -19,6 +19,8 @@ object OpenGroupManager {
private var pollers = mutableMapOf<String, OpenGroupPollerV2>() // One for each server private var pollers = mutableMapOf<String, OpenGroupPollerV2>() // One for each server
private var isPolling = false private var isPolling = false
var isAllCaughtUp = false
fun startPolling() { fun startPolling() {
if (isPolling) { return } if (isPolling) { return }
isPolling = true isPolling = true

View File

@ -56,6 +56,7 @@ import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord; import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord; import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.loki.api.OpenGroupManager;
import org.thoughtcrime.securesms.loki.protocol.SessionMetaProtocol; import org.thoughtcrime.securesms.loki.protocol.SessionMetaProtocol;
import org.thoughtcrime.securesms.loki.utilities.MentionUtilities; import org.thoughtcrime.securesms.loki.utilities.MentionUtilities;
import org.thoughtcrime.securesms.mms.SlideDeck; import org.thoughtcrime.securesms.mms.SlideDeck;
@ -286,6 +287,9 @@ public class DefaultMessageNotifier implements MessageNotifier {
} finally { } finally {
if (telcoCursor != null) telcoCursor.close(); if (telcoCursor != null) telcoCursor.close();
if (pushCursor != null) pushCursor.close(); if (pushCursor != null) pushCursor.close();
if (!OpenGroupManager.INSTANCE.isAllCaughtUp()) {
OpenGroupManager.INSTANCE.setAllCaughtUp(true);
}
} }
} }

View File

@ -12,6 +12,7 @@ import org.session.libsession.utilities.recipients.Recipient;
import org.session.libsession.utilities.Debouncer; import org.session.libsession.utilities.Debouncer;
import org.session.libsignal.utilities.ThreadUtils; import org.session.libsignal.utilities.ThreadUtils;
import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.loki.api.OpenGroupManager;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -42,18 +43,12 @@ public class OptimizedMessageNotifier implements MessageNotifier {
@Override @Override
public void updateNotification(@NonNull Context context) { public void updateNotification(@NonNull Context context) {
Poller poller = ApplicationContext.getInstance(context).poller; Poller poller = ApplicationContext.getInstance(context).poller;
// FIXME: Open group handling
boolean isCaughtUp = true; boolean isCaughtUp = true;
if (poller != null) { if (poller != null) {
isCaughtUp = isCaughtUp && poller.isCaughtUp(); isCaughtUp = isCaughtUp && poller.isCaughtUp();
} }
// FIXME: Open group handling isCaughtUp = isCaughtUp && OpenGroupManager.INSTANCE.isAllCaughtUp();
/*
if (publicChatManager != null) {
isCaughtUp = isCaughtUp && publicChatManager.areAllCaughtUp();
}
*/
if (isCaughtUp) { if (isCaughtUp) {
performOnBackgroundThreadIfNeeded(() -> wrapped.updateNotification(context)); performOnBackgroundThreadIfNeeded(() -> wrapped.updateNotification(context));
@ -65,18 +60,12 @@ public class OptimizedMessageNotifier implements MessageNotifier {
@Override @Override
public void updateNotification(@NonNull Context context, long threadId) { public void updateNotification(@NonNull Context context, long threadId) {
Poller lokiPoller = ApplicationContext.getInstance(context).poller; Poller lokiPoller = ApplicationContext.getInstance(context).poller;
// FIXME: Open group handling
boolean isCaughtUp = true; boolean isCaughtUp = true;
if (lokiPoller != null) { if (lokiPoller != null) {
isCaughtUp = isCaughtUp && lokiPoller.isCaughtUp(); isCaughtUp = isCaughtUp && lokiPoller.isCaughtUp();
} }
// FIXME: Open group handling isCaughtUp = isCaughtUp && OpenGroupManager.INSTANCE.isAllCaughtUp();
/*
if (publicChatManager != null) {
isCaughtUp = isCaughtUp && publicChatManager.areAllCaughtUp();
}
*/
if (isCaughtUp) { if (isCaughtUp) {
performOnBackgroundThreadIfNeeded(() -> wrapped.updateNotification(context, threadId)); performOnBackgroundThreadIfNeeded(() -> wrapped.updateNotification(context, threadId));
@ -88,18 +77,12 @@ public class OptimizedMessageNotifier implements MessageNotifier {
@Override @Override
public void updateNotification(@NonNull Context context, long threadId, boolean signal) { public void updateNotification(@NonNull Context context, long threadId, boolean signal) {
Poller lokiPoller = ApplicationContext.getInstance(context).poller; Poller lokiPoller = ApplicationContext.getInstance(context).poller;
// FIXME: Open group handling
boolean isCaughtUp = true; boolean isCaughtUp = true;
if (lokiPoller != null) { if (lokiPoller != null) {
isCaughtUp = isCaughtUp && lokiPoller.isCaughtUp(); isCaughtUp = isCaughtUp && lokiPoller.isCaughtUp();
} }
// FIXME: Open group handling isCaughtUp = isCaughtUp && OpenGroupManager.INSTANCE.isAllCaughtUp();
/*
if (publicChatManager != null) {
isCaughtUp = isCaughtUp && publicChatManager.areAllCaughtUp();
}
*/
if (isCaughtUp) { if (isCaughtUp) {
performOnBackgroundThreadIfNeeded(() -> wrapped.updateNotification(context, threadId, signal)); performOnBackgroundThreadIfNeeded(() -> wrapped.updateNotification(context, threadId, signal));
@ -111,18 +94,12 @@ public class OptimizedMessageNotifier implements MessageNotifier {
@Override @Override
public void updateNotification(@androidx.annotation.NonNull Context context, boolean signal, int reminderCount) { public void updateNotification(@androidx.annotation.NonNull Context context, boolean signal, int reminderCount) {
Poller lokiPoller = ApplicationContext.getInstance(context).poller; Poller lokiPoller = ApplicationContext.getInstance(context).poller;
// FIXME: Open group handling
boolean isCaughtUp = true; boolean isCaughtUp = true;
if (lokiPoller != null) { if (lokiPoller != null) {
isCaughtUp = isCaughtUp && lokiPoller.isCaughtUp(); isCaughtUp = isCaughtUp && lokiPoller.isCaughtUp();
} }
// FIXME: Open group handling isCaughtUp = isCaughtUp && OpenGroupManager.INSTANCE.isAllCaughtUp();
/*
if (publicChatManager != null) {
isCaughtUp = isCaughtUp && publicChatManager.areAllCaughtUp();
}
*/
if (isCaughtUp) { if (isCaughtUp) {
performOnBackgroundThreadIfNeeded(() -> wrapped.updateNotification(context, signal, reminderCount)); performOnBackgroundThreadIfNeeded(() -> wrapped.updateNotification(context, signal, reminderCount));