kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix invalid attachment data during sms export.
rodzic
c75a9b577d
commit
2b0e9783a7
|
@ -5300,6 +5300,10 @@ public class MessageTable extends DatabaseTable implements MessageTypes, Recipie
|
|||
}
|
||||
}
|
||||
|
||||
public MessageId getCurrentId() {
|
||||
return new MessageId(CursorUtil.requireLong(cursor, ID));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull MessageExportState getMessageExportStateForCurrentRecord() {
|
||||
byte[] messageExportState = CursorUtil.requireBlob(cursor, MessageTable.EXPORT_STATE);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.thoughtcrime.securesms.exporter
|
||||
|
||||
import org.json.JSONException
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.signal.smsexporter.ExportableMessage
|
||||
import org.signal.smsexporter.SmsExportState
|
||||
|
@ -92,6 +93,11 @@ class SignalSmsExportReader(
|
|||
throw NoSuchElementException()
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
if (e.cause is JSONException) {
|
||||
Log.w(TAG, "Error processing attachment json, skipping message.", e)
|
||||
return ExportableMessage.Skip(messageReader!!.currentId)
|
||||
}
|
||||
|
||||
Log.w(TAG, "Error processing message: isMms: ${record?.isMms} type: ${record?.type}")
|
||||
throw e
|
||||
}
|
||||
|
|
|
@ -180,6 +180,7 @@ class SignalSmsExportService : SmsExportService() {
|
|||
val messageId: Any = when (this) {
|
||||
is ExportableMessage.Mms<*> -> id
|
||||
is ExportableMessage.Sms<*> -> id
|
||||
is ExportableMessage.Skip<*> -> id
|
||||
}
|
||||
|
||||
if (messageId is MessageId) {
|
||||
|
|
|
@ -61,4 +61,9 @@ sealed interface ExportableMessage {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class Skip<out ID : Any>(
|
||||
val id: ID,
|
||||
override val exportState: SmsExportState = SmsExportState()
|
||||
) : ExportableMessage
|
||||
}
|
||||
|
|
|
@ -80,6 +80,10 @@ abstract class SmsExportService : Service() {
|
|||
val successful = when (message) {
|
||||
is ExportableMessage.Sms<*> -> exportSms(exportState, message)
|
||||
is ExportableMessage.Mms<*> -> exportMms(exportState, message)
|
||||
is ExportableMessage.Skip<*> -> {
|
||||
onMessageExportSucceeded(message)
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
if (!successful) {
|
||||
|
|
Ładowanie…
Reference in New Issue