mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 15:58:34 +00:00
Add extra protections to recipient insertions.
This commit is contained in:
parent
066df77abf
commit
b2d02d4ace
@ -190,11 +190,12 @@ public class RecipientDatabase extends Database {
|
|||||||
|
|
||||||
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
|
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
return RecipientId.from(cursor.getLong(0));
|
return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID)));
|
||||||
} else {
|
} else {
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(PHONE, e164);
|
values.put(PHONE, e164);
|
||||||
long id = db.insert(TABLE_NAME, null, values);
|
long id = db.insert(TABLE_NAME, null, values);
|
||||||
|
if (id < 0) throw new AssertionError("Failed to insert recipient!");
|
||||||
return RecipientId.from(id);
|
return RecipientId.from(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -211,11 +212,12 @@ public class RecipientDatabase extends Database {
|
|||||||
|
|
||||||
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
|
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
return RecipientId.from(cursor.getLong(0));
|
return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID)));
|
||||||
} else {
|
} else {
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(EMAIL, email);
|
values.put(EMAIL, email);
|
||||||
long id = db.insert(TABLE_NAME, null, values);
|
long id = db.insert(TABLE_NAME, null, values);
|
||||||
|
if (id < 0) throw new AssertionError("Failed to insert recipient!");
|
||||||
return RecipientId.from(id);
|
return RecipientId.from(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -232,11 +234,12 @@ public class RecipientDatabase extends Database {
|
|||||||
|
|
||||||
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
|
try (Cursor cursor = db.query(TABLE_NAME, ID_PROJECTION, query, args, null, null, null)) {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
return RecipientId.from(cursor.getLong(0));
|
return RecipientId.from(cursor.getLong(cursor.getColumnIndexOrThrow(ID)));
|
||||||
} else {
|
} else {
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(GROUP_ID, groupId);
|
values.put(GROUP_ID, groupId);
|
||||||
long id = db.insert(TABLE_NAME, null, values);
|
long id = db.insert(TABLE_NAME, null, values);
|
||||||
|
if (id < 0) throw new AssertionError("Failed to insert recipient!");
|
||||||
return RecipientId.from(id);
|
return RecipientId.from(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -495,18 +498,20 @@ public class RecipientDatabase extends Database {
|
|||||||
ContentValues contentValues = new ContentValues(1);
|
ContentValues contentValues = new ContentValues(1);
|
||||||
contentValues.put(REGISTERED, RegisteredState.REGISTERED.getId());
|
contentValues.put(REGISTERED, RegisteredState.REGISTERED.getId());
|
||||||
|
|
||||||
update(activeId, contentValues);
|
if (update(activeId, contentValues) > 0) {
|
||||||
Recipient.live(activeId).refresh();
|
Recipient.live(activeId).refresh();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (RecipientId inactiveId : inactiveIds) {
|
for (RecipientId inactiveId : inactiveIds) {
|
||||||
ContentValues contentValues = new ContentValues(1);
|
ContentValues contentValues = new ContentValues(1);
|
||||||
contentValues.put(REGISTERED, RegisteredState.NOT_REGISTERED.getId());
|
contentValues.put(REGISTERED, RegisteredState.NOT_REGISTERED.getId());
|
||||||
|
|
||||||
update(inactiveId, contentValues);
|
if (update(inactiveId, contentValues) > 0) {
|
||||||
Recipient.live(inactiveId).refresh();
|
Recipient.live(inactiveId).refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public List<RecipientId> getRegistered() {
|
public List<RecipientId> getRegistered() {
|
||||||
SQLiteDatabase db = databaseHelper.getReadableDatabase();
|
SQLiteDatabase db = databaseHelper.getReadableDatabase();
|
||||||
@ -619,9 +624,9 @@ public class RecipientDatabase extends Database {
|
|||||||
return databaseHelper.getReadableDatabase().query(TABLE_NAME, SEARCH_PROJECTION, selection, args, null, null, orderBy);
|
return databaseHelper.getReadableDatabase().query(TABLE_NAME, SEARCH_PROJECTION, selection, args, null, null, orderBy);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void update(@NonNull RecipientId id, ContentValues contentValues) {
|
private int update(@NonNull RecipientId id, ContentValues contentValues) {
|
||||||
SQLiteDatabase database = databaseHelper.getWritableDatabase();
|
SQLiteDatabase database = databaseHelper.getWritableDatabase();
|
||||||
database.update(TABLE_NAME, contentValues, ID + " = ?", new String[] { id.serialize() });
|
return database.update(TABLE_NAME, contentValues, ID + " = ?", new String[] { id.serialize() });
|
||||||
}
|
}
|
||||||
|
|
||||||
public class BulkOperationsHandle {
|
public class BulkOperationsHandle {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user