mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-24 19:00:26 +01:00
Improve message requests, add megaphone.
This commit is contained in:
committed by
Greyson Parrelli
parent
dc689d325b
commit
9e5f64c431
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user