public void setTimestampRead(SyncMessageId messageId) { SQLiteDatabase database = databaseHelper.getWritableDatabase(); Cursor cursor = null; try { cursor = database.query( TABLE_NAME, new String[] {ID, THREAD_ID, ADDRESS, TYPE}, DATE_SENT + " = ?", new String[] {String.valueOf(messageId.getTimetamp())}, null, null, null, null); while (cursor.moveToNext()) { try { String theirAddress = canonicalizeNumber(context, messageId.getAddress()); String ourAddress = canonicalizeNumber(context, cursor.getString(cursor.getColumnIndexOrThrow(ADDRESS))); if (ourAddress.equals(theirAddress)) { long threadId = cursor.getLong(cursor.getColumnIndexOrThrow(THREAD_ID)); ContentValues contentValues = new ContentValues(); contentValues.put(READ, 1); database.update( TABLE_NAME, contentValues, ID_WHERE, new String[] {cursor.getLong(cursor.getColumnIndexOrThrow(ID)) + ""}); DatabaseFactory.getThreadDatabase(context).updateReadState(threadId); notifyConversationListeners(threadId); } } catch (InvalidNumberException e) { Log.w(TAG, e); } } } finally { if (cursor != null) cursor.close(); } }
public void incrementDeliveryReceiptCount(SyncMessageId messageId) { SQLiteDatabase database = databaseHelper.getWritableDatabase(); Cursor cursor = null; boolean foundMessage = false; try { cursor = database.query( TABLE_NAME, new String[] {ID, THREAD_ID, ADDRESS, TYPE}, DATE_SENT + " = ?", new String[] {String.valueOf(messageId.getTimetamp())}, null, null, null, null); while (cursor.moveToNext()) { if (Types.isOutgoingMessageType(cursor.getLong(cursor.getColumnIndexOrThrow(TYPE)))) { try { String theirAddress = canonicalizeNumber(context, messageId.getAddress()); String ourAddress = canonicalizeNumber( context, cursor.getString(cursor.getColumnIndexOrThrow(ADDRESS))); if (ourAddress.equals(theirAddress)) { long threadId = cursor.getLong(cursor.getColumnIndexOrThrow(THREAD_ID)); database.execSQL( "UPDATE " + TABLE_NAME + " SET " + RECEIPT_COUNT + " = " + RECEIPT_COUNT + " + 1 WHERE " + ID + " = ?", new String[] {String.valueOf(cursor.getLong(cursor.getColumnIndexOrThrow(ID)))}); DatabaseFactory.getThreadDatabase(context).update(threadId, false); notifyConversationListeners(threadId); foundMessage = true; } } catch (InvalidNumberException e) { Log.w(TAG, e); } } } if (!foundMessage) { try { earlyReceiptCache.increment( messageId.getTimetamp(), canonicalizeNumber(context, messageId.getAddress())); } catch (InvalidNumberException e) { Log.w(TAG, e); } } } finally { if (cursor != null) cursor.close(); } }