Fix exporting of story lists with empty members.
This commit is contained in:
parent
28c280947f
commit
e6368982c9
2 changed files with 18 additions and 3 deletions
|
@ -86,6 +86,10 @@ object ExportOddities {
|
||||||
return log(sentTimestamp, "Failed to parse link preview. Ignoring it.")
|
return log(sentTimestamp, "Failed to parse link preview. Ignoring it.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun distributionListAllExceptWithNoMembers(): String {
|
||||||
|
return log(0, "Distribution list had a privacy mode of ALL_EXCEPT with no members. Exporting at ALL.")
|
||||||
|
}
|
||||||
|
|
||||||
private fun log(sentTimestamp: Long, message: String): String {
|
private fun log(sentTimestamp: Long, message: String): String {
|
||||||
return "[ODDITY][$sentTimestamp] $message"
|
return "[ODDITY][$sentTimestamp] $message"
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,13 @@ package org.thoughtcrime.securesms.backup.v2.exporters
|
||||||
|
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
||||||
import okio.ByteString.Companion.toByteString
|
import okio.ByteString.Companion.toByteString
|
||||||
|
import org.signal.core.util.logging.Log
|
||||||
import org.signal.core.util.requireBoolean
|
import org.signal.core.util.requireBoolean
|
||||||
import org.signal.core.util.requireLong
|
import org.signal.core.util.requireLong
|
||||||
import org.signal.core.util.requireNonNullString
|
import org.signal.core.util.requireNonNullString
|
||||||
import org.signal.core.util.requireObject
|
import org.signal.core.util.requireObject
|
||||||
import org.thoughtcrime.securesms.backup.v2.ArchiveRecipient
|
import org.thoughtcrime.securesms.backup.v2.ArchiveRecipient
|
||||||
|
import org.thoughtcrime.securesms.backup.v2.ExportOddities
|
||||||
import org.thoughtcrime.securesms.backup.v2.database.getMembersForBackup
|
import org.thoughtcrime.securesms.backup.v2.database.getMembersForBackup
|
||||||
import org.thoughtcrime.securesms.backup.v2.proto.DistributionList
|
import org.thoughtcrime.securesms.backup.v2.proto.DistributionList
|
||||||
import org.thoughtcrime.securesms.backup.v2.proto.DistributionListItem
|
import org.thoughtcrime.securesms.backup.v2.proto.DistributionListItem
|
||||||
|
@ -25,6 +27,8 @@ import org.whispersystems.signalservice.api.push.DistributionId
|
||||||
import org.whispersystems.signalservice.api.util.toByteArray
|
import org.whispersystems.signalservice.api.util.toByteArray
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
|
|
||||||
|
private val TAG = Log.tag(DistributionListArchiveExporter::class)
|
||||||
|
|
||||||
class DistributionListArchiveExporter(
|
class DistributionListArchiveExporter(
|
||||||
private val cursor: Cursor,
|
private val cursor: Cursor,
|
||||||
private val distributionListTables: DistributionListTables
|
private val distributionListTables: DistributionListTables
|
||||||
|
@ -66,7 +70,7 @@ class DistributionListArchiveExporter(
|
||||||
distributionList = DistributionList(
|
distributionList = DistributionList(
|
||||||
name = record.name,
|
name = record.name,
|
||||||
allowReplies = record.allowsReplies,
|
allowReplies = record.allowsReplies,
|
||||||
privacyMode = record.privacyMode.toBackupPrivacyMode(),
|
privacyMode = record.privacyMode.toBackupPrivacyMode(record.members.size),
|
||||||
memberRecipientIds = record.members.map { it.toLong() }
|
memberRecipientIds = record.members.map { it.toLong() }
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -83,10 +87,17 @@ class DistributionListArchiveExporter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun DistributionListPrivacyMode.toBackupPrivacyMode(): DistributionList.PrivacyMode {
|
private fun DistributionListPrivacyMode.toBackupPrivacyMode(memberCount: Int): DistributionList.PrivacyMode {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
DistributionListPrivacyMode.ONLY_WITH -> DistributionList.PrivacyMode.ONLY_WITH
|
DistributionListPrivacyMode.ONLY_WITH -> DistributionList.PrivacyMode.ONLY_WITH
|
||||||
DistributionListPrivacyMode.ALL -> DistributionList.PrivacyMode.ALL
|
DistributionListPrivacyMode.ALL -> DistributionList.PrivacyMode.ALL
|
||||||
DistributionListPrivacyMode.ALL_EXCEPT -> DistributionList.PrivacyMode.ALL_EXCEPT
|
DistributionListPrivacyMode.ALL_EXCEPT -> {
|
||||||
|
if (memberCount > 0) {
|
||||||
|
DistributionList.PrivacyMode.ALL_EXCEPT
|
||||||
|
} else {
|
||||||
|
Log.w(TAG, ExportOddities.distributionListAllExceptWithNoMembers())
|
||||||
|
DistributionList.PrivacyMode.ALL
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue