Fix for double notification when locked.

Fixes #3702
// FREEBIE
This commit is contained in:
Moxie Marlinspike
2015-07-20 18:00:48 -07:00
parent 1daea51cfb
commit 90d5e9dccd
2 changed files with 21 additions and 19 deletions

View File

@@ -124,12 +124,20 @@ public class MessageNotifier {
return;
}
updateNotification(context, masterSecret, false, 0);
updateNotification(context, masterSecret, false, false, 0);
}
public static void updateNotification(@NonNull Context context,
@Nullable MasterSecret masterSecret,
long threadId)
{
updateNotification(context, masterSecret, false, threadId);
}
public static void updateNotification(@NonNull Context context,
@Nullable MasterSecret masterSecret,
boolean includePushDatabase,
long threadId)
{
Recipients recipients = DatabaseFactory.getThreadDatabase(context)
.getRecipientsForThreadId(threadId);
@@ -140,19 +148,20 @@ public class MessageNotifier {
return;
}
if (visibleThread == threadId) {
ThreadDatabase threads = DatabaseFactory.getThreadDatabase(context);
threads.setRead(threadId);
sendInThreadNotification(context, threads.getRecipientsForThreadId(threadId));
} else {
updateNotification(context, masterSecret, true, 0);
updateNotification(context, masterSecret, true, includePushDatabase, 0);
}
}
private static void updateNotification(@NonNull Context context,
@Nullable MasterSecret masterSecret,
boolean signal, int reminderCount)
boolean signal,
boolean includePushDatabase,
int reminderCount)
{
Cursor telcoCursor = null;
Cursor pushCursor = null;
@@ -173,7 +182,9 @@ public class MessageNotifier {
NotificationState notificationState = constructNotificationState(context, masterSecret, telcoCursor);
appendPushNotificationState(context, masterSecret, notificationState, pushCursor);
if (includePushDatabase) {
appendPushNotificationState(context, notificationState, pushCursor);
}
if (notificationState.hasMultipleThreads()) {
sendMultipleThreadNotification(context, masterSecret, notificationState, signal);
@@ -382,13 +393,10 @@ public class MessageNotifier {
}
}
private static void appendPushNotificationState(@NonNull Context context,
@Nullable MasterSecret masterSecret,
@NonNull NotificationState notificationState,
@NonNull Cursor cursor)
private static void appendPushNotificationState(@NonNull Context context,
@NonNull NotificationState notificationState,
@NonNull Cursor cursor)
{
if (masterSecret != null) return;
PushDatabase.Reader reader = null;
TextSecureEnvelope envelope;