Improve message requests, add megaphone.

This commit is contained in:
Alex Hart
2020-02-19 18:08:34 -04:00
committed by Greyson Parrelli
parent dc689d325b
commit 9e5f64c431
83 changed files with 2406 additions and 735 deletions

View File

@@ -208,6 +208,10 @@ public class Data {
}
}
public Builder buildUpon() {
return new Builder(this);
}
public static class Builder {
@@ -224,6 +228,23 @@ public class Data {
private final Map<String, Boolean> booleans = new HashMap<>();
private final Map<String, boolean[]> booleanArrays = new HashMap<>();
public Builder() { }
private Builder(@NonNull Data oldData) {
strings.putAll(oldData.strings);
stringArrays.putAll(oldData.stringArrays);
integers.putAll(oldData.integers);
integerArrays.putAll(oldData.integerArrays);
longs.putAll(oldData.longs);
longArrays.putAll(oldData.longArrays);
floats.putAll(oldData.floats);
floatArrays.putAll(oldData.floatArrays);
doubles.putAll(oldData.doubles);
doubleArrays.putAll(oldData.doubleArrays);
booleans.putAll(oldData.booleans);
booleanArrays.putAll(oldData.booleanArrays);
}
public Builder putString(@NonNull String key, @Nullable String value) {
strings.put(key, value);
return this;

View File

@@ -34,7 +34,7 @@ public class JobManager implements ConstraintObserver.Notifier {
private static final String TAG = JobManager.class.getSimpleName();
public static final int CURRENT_VERSION = 4;
public static final int CURRENT_VERSION = 5;
private final Application application;
private final Configuration configuration;

View File

@@ -0,0 +1,55 @@
package org.thoughtcrime.securesms.jobmanager.migrations;
import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MmsSmsDatabase;
import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.JobMigration;
import java.util.SortedSet;
import java.util.TreeSet;
public class SendReadReceiptsJobMigration extends JobMigration {
private final MmsSmsDatabase mmsSmsDatabase;
public SendReadReceiptsJobMigration(@NonNull MmsSmsDatabase mmsSmsDatabase) {
super(5);
this.mmsSmsDatabase = mmsSmsDatabase;
}
@Override
protected @NonNull JobData migrate(@NonNull JobData jobData) {
if ("SendReadReceiptJob".equals(jobData.getFactoryKey())) {
return migrateSendReadReceiptJob(mmsSmsDatabase, jobData);
}
return jobData;
}
private static @NonNull JobData migrateSendReadReceiptJob(@NonNull MmsSmsDatabase mmsSmsDatabase, @NonNull JobData jobData) {
Data data = jobData.getData();
if (!data.hasLong("thread")) {
long[] messageIds = jobData.getData().getLongArray("message_ids");
SortedSet<Long> threadIds = new TreeSet<>();
for (long id : messageIds) {
long threadForMessageId = mmsSmsDatabase.getThreadForMessageId(id);
if (id != -1) {
threadIds.add(threadForMessageId);
}
}
if (threadIds.size() != 1) {
return new JobData("FailingJob", null, new Data.Builder().build());
} else {
return jobData.withData(data.buildUpon().putLong("thread", threadIds.first()).build());
}
} else {
return jobData;
}
}
}