Skip to content

Commit

Permalink
Fix incorrect total sms export count.
Browse files Browse the repository at this point in the history
  • Loading branch information
cody-signal committed Jan 24, 2023
1 parent 657c5d2 commit df8f976
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,62 +21,60 @@ import kotlin.time.Duration.Companion.milliseconds
* we "page" through the unexported messages to reduce chances of exceeding that limit.
*/
class SignalSmsExportReader(
private val smsDatabase: MessageTable = SignalDatabase.messages,
private val mmsDatabase: MessageTable = SignalDatabase.messages
private val messageTable: MessageTable = SignalDatabase.messages
) : Iterable<ExportableMessage>, Closeable {

companion object {
private val TAG = Log.tag(SignalSmsExportReader::class.java)
private const val CURSOR_LIMIT = 1000
}

private var mmsReader: MessageTable.MmsReader? = null
private var mmsDone: Boolean = false
private var messageReader: MessageTable.MmsReader? = null
private var done: Boolean = false

override fun iterator(): Iterator<ExportableMessage> {
return ExportableMessageIterator()
}

fun getCount(): Int {
return smsDatabase.unexportedInsecureMessagesCount + mmsDatabase.unexportedInsecureMessagesCount
return messageTable.unexportedInsecureMessagesCount
}

override fun close() {
mmsReader?.close()
messageReader?.close()
}

private fun refreshReaders() {
if (!mmsDone) {
mmsReader?.close()
mmsReader = null
if (!done) {
messageReader?.close()
messageReader = null

val refreshedMmsReader = MessageTable.mmsReaderFor(mmsDatabase.getUnexportedInsecureMessages(CURSOR_LIMIT))
val refreshedMmsReader = MessageTable.mmsReaderFor(messageTable.getUnexportedInsecureMessages(CURSOR_LIMIT))
if (refreshedMmsReader.count > 0) {
mmsReader = refreshedMmsReader
messageReader = refreshedMmsReader
return
} else {
refreshedMmsReader.close()
mmsDone = true
done = true
}
}
}

private inner class ExportableMessageIterator : Iterator<ExportableMessage> {

private var smsIterator: Iterator<MessageRecord>? = null
private var mmsIterator: Iterator<MessageRecord>? = null
private var messageIterator: Iterator<MessageRecord>? = null

private fun refreshIterators() {
refreshReaders()
mmsIterator = mmsReader?.iterator()
messageIterator = messageReader?.iterator()
}

override fun hasNext(): Boolean {
if (mmsIterator?.hasNext() == true) {
if (messageIterator?.hasNext() == true) {
return true
} else if (!mmsDone) {
} else if (!done) {
refreshIterators()
if (mmsIterator?.hasNext() == true) {
if (messageIterator?.hasNext() == true) {
return true
}
}
Expand All @@ -87,9 +85,9 @@ class SignalSmsExportReader(
override fun next(): ExportableMessage {
var record: MessageRecord? = null
try {
return if (mmsIterator?.hasNext() == true) {
record = mmsIterator!!.next()
readExportableMmsMessageFromRecord(record, mmsReader!!.messageExportStateForCurrentRecord)
return if (messageIterator?.hasNext() == true) {
record = messageIterator!!.next()
readExportableMmsMessageFromRecord(record, messageReader!!.messageExportStateForCurrentRecord)
} else {
throw NoSuchElementException()
}
Expand Down Expand Up @@ -149,25 +147,6 @@ class SignalSmsExportReader(
)
}

private fun readExportableSmsMessageFromRecord(record: MessageRecord, exportState: MessageExportState): ExportableMessage {
val threadRecipient = SignalDatabase.threads.getRecipientForThreadId(record.threadId)

return if (threadRecipient?.isMmsGroup == true) {
readExportableMmsMessageFromRecord(record, exportState)
} else {
ExportableMessage.Sms(
id = MessageId(record.id),
exportState = mapExportState(exportState),
address = record.recipient.smsExportAddress(),
dateReceived = record.dateReceived.milliseconds,
dateSent = record.dateSent.milliseconds,
isRead = true,
isOutgoing = record.isOutgoing,
body = record.body
)
}
}

private fun mapExportState(messageExportState: MessageExportState): SmsExportState {
return SmsExportState(
messageId = messageExportState.messageId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,10 @@ class SignalSmsExportService : SmsExportService() {

override fun clearPreviousExportState() {
SignalDatabase.messages.clearExportState()
SignalDatabase.messages.clearExportState()
}

override fun prepareForExport() {
SignalDatabase.messages.clearInsecureMessageExportedErrorStatus()
SignalDatabase.messages.clearInsecureMessageExportedErrorStatus()
}

override fun getUnexportedMessageCount(): Int {
Expand Down

0 comments on commit df8f976

Please sign in to comment.