mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-19 21:48:26 +00:00
fix: open group poller queues trim thread job only if received messages
deleting quotes should now propagate to set quote missing flag in MMS and update the UI accordingly
This commit is contained in:
parent
50b02323a8
commit
d57903aa44
@ -136,8 +136,7 @@ class QuoteView : LinearLayout {
|
||||
accentLineLayoutParams.height = getIntrinsicContentHeight(maxContentWidth) // Match the intrinsic * content * height
|
||||
quoteViewAccentLine.layoutParams = accentLineLayoutParams
|
||||
quoteViewAccentLine.setBackgroundColor(getLineColor(isOutgoingMessage))
|
||||
} else {
|
||||
attachments!!
|
||||
} else if (attachments != null) {
|
||||
quoteViewAttachmentPreviewImageView.imageTintList = ColorStateList.valueOf(ResourcesCompat.getColor(resources, R.color.white, context.theme))
|
||||
val backgroundColorID = if (UiModeUtilities.isDayUiMode(context)) R.color.black else R.color.accent
|
||||
val backgroundColor = ResourcesCompat.getColor(resources, backgroundColorID, context.theme)
|
||||
|
@ -86,7 +86,12 @@ class VisibleMessageContentView : LinearLayout {
|
||||
// quote view content area's start margin. This unfortunately has to be calculated manually
|
||||
// here to get the layout right.
|
||||
val maxContentWidth = (maxWidth - 2 * resources.getDimension(R.dimen.medium_spacing) - toPx(16, resources)).roundToInt()
|
||||
quoteView.bind(quote.author.toString(), quote.text, quote.attachment, thread,
|
||||
val quoteText = if (quote.isOriginalMissing) {
|
||||
context.getString(R.string.QuoteView_original_missing)
|
||||
} else {
|
||||
quote.text
|
||||
}
|
||||
quoteView.bind(quote.author.toString(), quoteText, quote.attachment, thread,
|
||||
message.isOutgoing, maxContentWidth, message.isOpenGroupInvitation, message.threadId, glide)
|
||||
mainContainer.addView(quoteView)
|
||||
val bodyTextView = VisibleMessageContentView.getBodyTextView(context, message, searchQuery)
|
||||
|
@ -63,6 +63,7 @@ import org.thoughtcrime.securesms.attachments.MmsNotificationAttachment;
|
||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;
|
||||
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.NotificationMmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.Quote;
|
||||
import org.thoughtcrime.securesms.mms.MmsException;
|
||||
@ -881,6 +882,20 @@ public class MmsDatabase extends MessagingDatabase {
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteQuotedFromMessages(MessageRecord toDeleteRecord) {
|
||||
String query = THREAD_ID + " = ?";
|
||||
Cursor threadMmsCursor = rawQuery(query, new String[]{String.valueOf(toDeleteRecord.getThreadId())});
|
||||
Reader reader = readerFor(threadMmsCursor);
|
||||
MmsMessageRecord messageRecord;
|
||||
|
||||
while ((messageRecord = (MmsMessageRecord) reader.getNext()) != null) {
|
||||
if (messageRecord.getQuote() != null && toDeleteRecord.getDateSent() == messageRecord.getQuote().getId()) {
|
||||
setQuoteMissing(messageRecord.getId());
|
||||
}
|
||||
}
|
||||
reader.close();
|
||||
}
|
||||
|
||||
public boolean delete(long messageId) {
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
AttachmentDatabase attachmentDatabase = DatabaseFactory.getAttachmentDatabase(context);
|
||||
@ -889,6 +904,12 @@ public class MmsDatabase extends MessagingDatabase {
|
||||
GroupReceiptDatabase groupReceiptDatabase = DatabaseFactory.getGroupReceiptDatabase(context);
|
||||
groupReceiptDatabase.deleteRowsForMessage(messageId);
|
||||
|
||||
MessageRecord toDelete;
|
||||
try (Cursor messageCursor = getMessage(messageId)) {
|
||||
toDelete = readerFor(messageCursor).getNext();
|
||||
}
|
||||
|
||||
deleteQuotedFromMessages(toDelete);
|
||||
SQLiteDatabase database = databaseHelper.getWritableDatabase();
|
||||
database.delete(TABLE_NAME, ID_WHERE, new String[] {messageId+""});
|
||||
boolean threadDeleted = DatabaseFactory.getThreadDatabase(context).update(threadId, false);
|
||||
@ -1066,6 +1087,14 @@ public class MmsDatabase extends MessagingDatabase {
|
||||
return new OutgoingMessageReader(message, threadId);
|
||||
}
|
||||
|
||||
public int setQuoteMissing(long messageId) {
|
||||
ContentValues contentValues = new ContentValues();
|
||||
contentValues.put(QUOTE_MISSING, 1);
|
||||
SQLiteDatabase database = databaseHelper.getReadableDatabase();
|
||||
int rows = database.update(TABLE_NAME, contentValues, ID + " = ?", new String[]{ String.valueOf(messageId) });
|
||||
return rows;
|
||||
}
|
||||
|
||||
public static class Status {
|
||||
public static final int DOWNLOAD_INITIALIZED = 1;
|
||||
public static final int DOWNLOAD_NO_CONNECTIVITY = 2;
|
||||
|
@ -514,6 +514,12 @@ public class SmsDatabase extends MessagingDatabase {
|
||||
Log.i("MessageDatabase", "Deleting: " + messageId);
|
||||
SQLiteDatabase db = databaseHelper.getWritableDatabase();
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
try {
|
||||
SmsMessageRecord toDelete = getMessage(messageId);
|
||||
DatabaseFactory.getMmsDatabase(context).deleteQuotedFromMessages(toDelete);
|
||||
} catch (NoSuchMessageException e) {
|
||||
Log.e(TAG, "Couldn't find message record for messageId "+messageId, e);
|
||||
}
|
||||
db.delete(TABLE_NAME, ID_WHERE, new String[] {messageId+""});
|
||||
boolean threadDeleted = DatabaseFactory.getThreadDatabase(context).update(threadId, false);
|
||||
notifyConversationListeners(threadId);
|
||||
|
@ -94,7 +94,9 @@ class OpenGroupPollerV2(private val server: String, private val executorService:
|
||||
if (actualMax > 0) {
|
||||
storage.setLastMessageServerID(room, server, actualMax)
|
||||
}
|
||||
JobQueue.shared.add(TrimThreadJob(threadId))
|
||||
if (messages.isNotEmpty()) {
|
||||
JobQueue.shared.add(TrimThreadJob(threadId))
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleDeletedMessages(room: String, openGroupID: String, deletions: List<OpenGroupAPIV2.MessageDeletion>) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user