Add notification for failed story messages.

This commit is contained in:
Clark
2023-03-17 12:23:02 -04:00
committed by Greyson Parrelli
parent 069b707d9d
commit 150c42c590
14 changed files with 135 additions and 3 deletions

View File

@@ -1314,6 +1314,17 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
return markedMessageInfos
}
fun markAllFailedStoriesNotified() {
val where = "$IS_STORY_CLAUSE AND (${getOutgoingTypeClause()}) AND $NOTIFIED = 0 AND ($TYPE & ${MessageTypes.BASE_TYPE_MASK}) = ${MessageTypes.BASE_SENT_FAILED_TYPE}"
writableDatabase
.update("$TABLE_NAME INDEXED BY $INDEX_THREAD_DATE")
.values(NOTIFIED to 1)
.where(where)
.run()
notifyConversationListListeners()
}
fun markOnboardingStoryRead() {
val recipientId = SignalStore.releaseChannelValues().releaseChannelRecipientId ?: return
val where = "$IS_STORY_CLAUSE AND NOT (${getOutgoingTypeClause()}) AND $READ = 0 AND $RECIPIENT_ID = ?"
@@ -1459,6 +1470,11 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
.readToList { RecipientId.from(it.getLong(0)) }
}
fun hasFailedOutgoingStory(): Boolean {
val where = "$IS_STORY_CLAUSE AND (${getOutgoingTypeClause()}) AND $NOTIFIED = 0 AND ($TYPE & ${MessageTypes.BASE_TYPE_MASK}) = ${MessageTypes.BASE_SENT_FAILED_TYPE}"
return readableDatabase.exists(TABLE_NAME).where(where).run()
}
fun getOrderedStoryRecipientsAndIds(isOutgoingOnly: Boolean): List<StoryResult> {
val query = """
SELECT
@@ -2002,6 +2018,14 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
.run()
}
fun markAsNotNotified(id: Long) {
writableDatabase
.update(TABLE_NAME)
.values(NOTIFIED to 0)
.where("$ID = ?", id)
.run()
}
fun setMessagesReadSince(threadId: Long, sinceTimestamp: Long): List<MarkedMessageInfo> {
var query = """
$THREAD_ID = ? AND