mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-24 10:51:27 +01:00
Add support for syncing forced unread status.
This commit is contained in:
@@ -7,11 +7,13 @@ import androidx.annotation.NonNull;
|
||||
|
||||
import net.sqlcipher.database.SQLiteDatabase;
|
||||
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.whispersystems.libsignal.util.guava.Preconditions;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -63,9 +65,9 @@ public final class SqlUtil {
|
||||
* change. In other words, if {@link SQLiteDatabase#update(String, ContentValues, String, String[])}
|
||||
* returns > 0, then you know something *actually* changed.
|
||||
*/
|
||||
public static @NonNull UpdateQuery buildTrueUpdateQuery(@NonNull String selection,
|
||||
@NonNull String[] args,
|
||||
@NonNull ContentValues contentValues)
|
||||
public static @NonNull Query buildTrueUpdateQuery(@NonNull String selection,
|
||||
@NonNull String[] args,
|
||||
@NonNull ContentValues contentValues)
|
||||
{
|
||||
StringBuilder qualifier = new StringBuilder();
|
||||
Set<Map.Entry<String, Object>> valueSet = contentValues.valueSet();
|
||||
@@ -90,7 +92,29 @@ public final class SqlUtil {
|
||||
i++;
|
||||
}
|
||||
|
||||
return new UpdateQuery("(" + selection + ") AND (" + qualifier + ")", fullArgs.toArray(new String[0]));
|
||||
return new Query("(" + selection + ") AND (" + qualifier + ")", fullArgs.toArray(new String[0]));
|
||||
}
|
||||
|
||||
public static @NonNull Query buildCollectionQuery(@NonNull String column, @NonNull Collection<? extends Object> values) {
|
||||
Preconditions.checkArgument(values.size() > 0);
|
||||
|
||||
StringBuilder query = new StringBuilder();
|
||||
Object[] args = new Object[values.size()];
|
||||
|
||||
int i = 0;
|
||||
|
||||
for (Object value : values) {
|
||||
query.append("?");
|
||||
args[i] = value;
|
||||
|
||||
if (i != values.size() - 1) {
|
||||
query.append(", ");
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return new Query(column + " IN (" + query.toString() + ")", buildArgs(args));
|
||||
}
|
||||
|
||||
public static String[] appendArg(@NonNull String[] args, String addition) {
|
||||
@@ -102,11 +126,11 @@ public final class SqlUtil {
|
||||
return output;
|
||||
}
|
||||
|
||||
public static class UpdateQuery {
|
||||
public static class Query {
|
||||
private final String where;
|
||||
private final String[] whereArgs;
|
||||
|
||||
private UpdateQuery(@NonNull String where, @NonNull String[] whereArgs) {
|
||||
private Query(@NonNull String where, @NonNull String[] whereArgs) {
|
||||
this.where = where;
|
||||
this.whereArgs = whereArgs;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user