diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 2c856ae1a..70c76c01b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -313,8 +313,6 @@
-
-
() {
@Override
protected Void doInBackground(Void... params) {
- DatabaseFactory.getRecipientDatabase(context).setColor(recipient, selectedColor);
+// DatabaseFactory.getRecipientDatabase(context).setColor(recipient, selectedColor);
// if (recipient.resolve().getRegistered() == RecipientDatabase.RegisteredState.REGISTERED) {
// ApplicationContext.getInstance(context)
diff --git a/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java b/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java
index 7e37005ab..b7e1ac38c 100644
--- a/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java
+++ b/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java
@@ -1,23 +1,15 @@
+// called when the user click the "clear" or "mark read" button in the system notification
+
package org.thoughtcrime.securesms.notifications;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
-import android.support.annotation.NonNull;
import android.support.v4.app.NotificationManagerCompat;
-import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.connect.ApplicationDcContext;
import org.thoughtcrime.securesms.connect.DcHelper;
-import org.thoughtcrime.securesms.database.DatabaseFactory;
-import org.thoughtcrime.securesms.database.MessagingDatabase.ExpirationInfo;
-import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo;
-import org.thoughtcrime.securesms.database.MessagingDatabase.SyncMessageId;
-import org.thoughtcrime.securesms.service.ExpiringMessageManager;
-
-import java.util.LinkedList;
-import java.util.List;
public class MarkReadReceiver extends BroadcastReceiver {
@@ -40,46 +32,4 @@ public class MarkReadReceiver extends BroadcastReceiver {
new MarkAsNoticedAsyncTask(threadIds, dcContext, true).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
-
- public static void process(@NonNull Context context, @NonNull int[] markedReadMessages) {
-
- }
-
- public static void process(@NonNull Context context, @NonNull List markedReadMessages) {
- if (markedReadMessages.isEmpty()) return;
-
- List syncMessageIds = new LinkedList<>();
-
- for (MarkedMessageInfo messageInfo : markedReadMessages) {
- scheduleDeletion(context, messageInfo.getExpirationInfo());
- syncMessageIds.add(messageInfo.getSyncMessageId());
- }
-
-// ApplicationContext.getInstance(context)
-// .getJobManager()
-// .add(new MultiDeviceReadUpdateJob(context, syncMessageIds));
-
-// Map> addressMap = Stream.of(markedReadMessages)
-// .map(MarkedMessageInfo::getSyncMessageId)
-// .collect(Collectors.groupingBy(SyncMessageId::getAddress));
-//
-// for (Address address : addressMap.keySet()) {
-// List timestamps = Stream.of(addressMap.get(address)).map(SyncMessageId::getTimetamp).toList();
-//
-// ApplicationContext.getInstance(context)
-// .getJobManager()
-// .add(new SendReadReceiptJob(context, address, timestamps));
-// }
- }
-
- private static void scheduleDeletion(Context context, ExpirationInfo expirationInfo) {
- if (expirationInfo.getExpiresIn() > 0 && expirationInfo.getExpireStarted() <= 0) {
- ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager();
-
- if (expirationInfo.isMms()) DatabaseFactory.getMmsDatabase(context).markExpireStarted(expirationInfo.getId());
- else DatabaseFactory.getSmsDatabase(context).markExpireStarted(expirationInfo.getId());
-
- expirationManager.scheduleDeletion(expirationInfo.getId(), expirationInfo.isMms(), expirationInfo.getExpiresIn());
- }
- }
}
diff --git a/src/org/thoughtcrime/securesms/service/ExpirationListener.java b/src/org/thoughtcrime/securesms/service/ExpirationListener.java
deleted file mode 100644
index 4a83707dd..000000000
--- a/src/org/thoughtcrime/securesms/service/ExpirationListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.thoughtcrime.securesms.service;
-
-import android.app.AlarmManager;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-import org.thoughtcrime.securesms.ApplicationContext;
-
-public class ExpirationListener extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- ApplicationContext.getInstance(context).getExpiringMessageManager().checkSchedule();
- }
-
- public static void setAlarm(Context context, long waitTimeMillis) {
- Intent intent = new Intent(context, ExpirationListener.class);
- PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
- AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
-
- alarmManager.cancel(pendingIntent);
- alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + waitTimeMillis, pendingIntent);
- }
-}
diff --git a/src/org/thoughtcrime/securesms/service/ExpiringMessageManager.java b/src/org/thoughtcrime/securesms/service/ExpiringMessageManager.java
deleted file mode 100644
index b43cf0e7d..000000000
--- a/src/org/thoughtcrime/securesms/service/ExpiringMessageManager.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package org.thoughtcrime.securesms.service;
-
-import android.content.Context;
-import android.util.Log;
-
-import org.thoughtcrime.securesms.database.DatabaseFactory;
-import org.thoughtcrime.securesms.database.MmsDatabase;
-import org.thoughtcrime.securesms.database.SmsDatabase;
-import org.thoughtcrime.securesms.database.model.MessageRecord;
-
-import java.util.Comparator;
-import java.util.TreeSet;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class ExpiringMessageManager {
-
- private static final String TAG = ExpiringMessageManager.class.getSimpleName();
-
- private final TreeSet expiringMessageReferences = new TreeSet<>(new ExpiringMessageComparator());
- private final Executor executor = Executors.newSingleThreadExecutor();
-
- private final SmsDatabase smsDatabase;
- private final MmsDatabase mmsDatabase;
- private final Context context;
-
- public ExpiringMessageManager(Context context) {
- this.context = context.getApplicationContext();
- this.smsDatabase = DatabaseFactory.getSmsDatabase(context);
- this.mmsDatabase = DatabaseFactory.getMmsDatabase(context);
-
- executor.execute(new LoadTask());
- executor.execute(new ProcessTask());
- }
-
- public void scheduleDeletion(long id, boolean mms, long expiresInMillis) {
- scheduleDeletion(id, mms, System.currentTimeMillis(), expiresInMillis);
- }
-
- public void scheduleDeletion(long id, boolean mms, long startedAtTimestamp, long expiresInMillis) {
- long expiresAtMillis = startedAtTimestamp + expiresInMillis;
-
- synchronized (expiringMessageReferences) {
- expiringMessageReferences.add(new ExpiringMessageReference(id, mms, expiresAtMillis));
- expiringMessageReferences.notifyAll();
- }
- }
-
- public void checkSchedule() {
- synchronized (expiringMessageReferences) {
- expiringMessageReferences.notifyAll();
- }
- }
-
- private class LoadTask implements Runnable {
- public void run() {
- SmsDatabase.Reader smsReader = smsDatabase.readerFor(smsDatabase.getExpirationStartedMessages());
- MmsDatabase.Reader mmsReader = mmsDatabase.getExpireStartedMessages();
-
- MessageRecord messageRecord;
-
- while ((messageRecord = smsReader.getNext()) != null) {
- expiringMessageReferences.add(new ExpiringMessageReference(messageRecord.getId(),
- messageRecord.isMms(),
- messageRecord.getExpireStarted() + messageRecord.getExpiresIn()));
- }
-
- while ((messageRecord = mmsReader.getNext()) != null) {
- expiringMessageReferences.add(new ExpiringMessageReference(messageRecord.getId(),
- messageRecord.isMms(),
- messageRecord.getExpireStarted() + messageRecord.getExpiresIn()));
- }
-
- smsReader.close();
- mmsReader.close();
- }
- }
-
- @SuppressWarnings("InfiniteLoopStatement")
- private class ProcessTask implements Runnable {
- public void run() {
- while (true) {
- ExpiringMessageReference expiredMessage = null;
-
- synchronized (expiringMessageReferences) {
- try {
- while (expiringMessageReferences.isEmpty()) expiringMessageReferences.wait();
-
- ExpiringMessageReference nextReference = expiringMessageReferences.first();
- long waitTime = nextReference.expiresAtMillis - System.currentTimeMillis();
-
- if (waitTime > 0) {
- ExpirationListener.setAlarm(context, waitTime);
- expiringMessageReferences.wait(waitTime);
- } else {
- expiredMessage = nextReference;
- expiringMessageReferences.remove(nextReference);
- }
-
- } catch (InterruptedException e) {
- Log.w(TAG, e);
- }
- }
-
- if (expiredMessage != null) {
- if (expiredMessage.mms) mmsDatabase.delete(expiredMessage.id);
- else smsDatabase.deleteMessage(expiredMessage.id);
- }
- }
- }
- }
-
- private static class ExpiringMessageReference {
- private final long id;
- private final boolean mms;
- private final long expiresAtMillis;
-
- private ExpiringMessageReference(long id, boolean mms, long expiresAtMillis) {
- this.id = id;
- this.mms = mms;
- this.expiresAtMillis = expiresAtMillis;
- }
-
- @Override
- public boolean equals(Object other) {
- if (other == null) return false;
- if (!(other instanceof ExpiringMessageReference)) return false;
-
- ExpiringMessageReference that = (ExpiringMessageReference)other;
- return this.id == that.id && this.mms == that.mms && this.expiresAtMillis == that.expiresAtMillis;
- }
-
- @Override
- public int hashCode() {
- return (int)this.id ^ (mms ? 1 : 0) ^ (int)expiresAtMillis;
- }
- }
-
- private static class ExpiringMessageComparator implements Comparator {
- @Override
- public int compare(ExpiringMessageReference lhs, ExpiringMessageReference rhs) {
- if (lhs.expiresAtMillis < rhs.expiresAtMillis) return -1;
- else if (lhs.expiresAtMillis > rhs.expiresAtMillis) return 1;
- else if (lhs.id < rhs.id) return -1;
- else if (lhs.id > rhs.id) return 1;
- else if (!lhs.mms && rhs.mms) return -1;
- else if (lhs.mms && !rhs.mms) return 1;
- else return 0;
- }
- }
-
-}